<?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>180308</bug_id>
          
          <creation_ts>2017-12-02 00:28:49 -0800</creation_ts>
          <short_desc>WTF shouldn&apos;t have both Thread and ThreadIdentifier</short_desc>
          <delta_ts>2017-12-10 05:14:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179934</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1377264</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-12-02 00:28:49 -0800</bug_when>
    <thetext>I find it strange that we often compare threads by doing:

Thread&amp; a = ...
Thread&amp; b = ...
a==b // loads id() from a, loads id() from b, compares id&apos;s

In reality, == comparisons for Thread* reveal thread equality.

I think we should get rid of ThreadIdentifier.  Moreover, to encourage == comparison of Thread, we should encourage using Thread by pointer rather than by reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377270</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-02 01:04:57 -0800</bug_when>
    <thetext>I have several thoughts about ThreadIdentifier.
But I *like* this change: we should use Thread instead of ThreadIdentifier. This is apparently nice.

I remember that some places use RefPtr&lt;Thread&gt; explicitly since it may be nullptr.
Personally I think Ref&lt;Thread&gt; is good to describe Thread is not nullptr.

And I believe Thread::create should return Ref&lt;Thread&gt; instead of RefPtr&lt;&gt;.
When we failed to spawn a thread, we would not have a good way to keep WebKit working.
It would be good to add Thread::tryCreate and use it for some specific places.

1. Some WebCore code just holds ThreadIdentifier.
Such program assumes that ThreadIdentifier is monotonocally increasing...
So when refactoring, we need to keep this thing in our mind.

Note that the above assumption is already broken in Windows. And replacing it with Ref&lt;Thread&gt; would work. And this use is mainly used for debugging.

2. In Windows, some internal blobs (That’s used for AppleWin and WinCairo) uses WTF’s old threading.
I’m not sure about it much. But when removing createThread API, it causes build error. So I kept old createThread API over Thread::create.

I think it returns ThreadIdentifier. So at least in Windows, we need to keep it even if it is not used for the other WebKit code.

But I think it’s not a problem. Since Windows’ ThreadIdentifier is system provided TID, we can just use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377458</commentid>
    <comment_count>2</comment_count>
      <attachid>328290</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 07:22:53 -0800</bug_when>
    <thetext>Created attachment 328290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377459</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 07:26:03 -0800</bug_when>
    <thetext>Attachment 328290 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Supplementable.h:120:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 7 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377460</commentid>
    <comment_count>4</comment_count>
      <attachid>328291</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 07:29:16 -0800</bug_when>
    <thetext>Created attachment 328291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377461</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 07:31:32 -0800</bug_when>
    <thetext>Attachment 328291 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Supplementable.h:120:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 7 in 67 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377462</commentid>
    <comment_count>6</comment_count>
      <attachid>328292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 07:32:59 -0800</bug_when>
    <thetext>Created attachment 328292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377463</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 07:34:52 -0800</bug_when>
    <thetext>Attachment 328292 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Supplementable.h:120:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 7 in 67 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377464</commentid>
    <comment_count>8</comment_count>
      <attachid>328292</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 08:26:34 -0800</bug_when>
    <thetext>Comment on attachment 328292
Patch

Attachment 328292 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/5476426

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377465</commentid>
    <comment_count>9</comment_count>
      <attachid>328293</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 08:26:35 -0800</bug_when>
    <thetext>Created attachment 328293
Archive of layout-test-results from ews114 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews114  Port: mac-elcapitan  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377469</commentid>
    <comment_count>10</comment_count>
      <attachid>328295</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 08:44:55 -0800</bug_when>
    <thetext>Created attachment 328295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377470</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 08:46:35 -0800</bug_when>
    <thetext>Attachment 328295 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Supplementable.h:120:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 7 in 67 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377490</commentid>
    <comment_count>12</comment_count>
      <attachid>328295</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-03 13:02:40 -0800</bug_when>
    <thetext>Comment on attachment 328295
Patch

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

Good idea to clean this up; messy.

&gt; Source/WTF/wtf/RecursiveLockAdapter.h:86
&gt; +    Thread* m_owner { nullptr }; // Use Thread* instead of RefPtr&lt;Thread&gt; since owner thread is always alive while m_onwer is et.

Typo: m_onwer

&gt; Source/WTF/wtf/Threading.h:146
&gt;      bool operator==(const Thread&amp; thread)

Keeping these operator== is a little bit peculiar. It means that we can compare a thread with another without using .get(), .ptr() or &amp;, which I suppose is handy, but we could have done that for almost any other object that represents something unique. Like even, say, DOM::Document.

It was certainly strange before that we guaranteed uniqueness of both the ID an of the reference counted thread object.

I would be tempted to remove these entirely; we would need to change more code then, but I think it would be logical to compare RefPtr&lt;Thread&gt; or Thread* rather than doing == on the Thread objects themselves since they are all unique and no two are equal unless they are the same one. Or if we are keeping these operators, I would be tempted to add even more overloads so we can compare a Thread* with a Thread&amp; without doing anything.

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:303
&gt; +        LOG_ERROR(&quot;Thread %p was unable to be detached\n&quot;, this);

Also need to remove the reference to ThreadIdentifier in the comment in Thread::initializeCurrentTLS.

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:136
&gt; -    , m_graphOwnerThread(UndefinedThreadIdentifier)
&gt; +    , m_graphOwnerThread(nullptr)

Initialize in class definition instead?

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:152
&gt; -    , m_graphOwnerThread(UndefinedThreadIdentifier)
&gt; +    , m_graphOwnerThread(nullptr)

Ditto.

&gt; Source/WebCore/Modules/webaudio/AudioContext.h:387
&gt; -    volatile ThreadIdentifier m_audioThread { 0 };
&gt; -    volatile ThreadIdentifier m_graphOwnerThread; // if the lock is held then this is the thread which owns it, otherwise == UndefinedThreadIdentifier
&gt; +    // FIXME: Using volatile seems incorrect.
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=180332
&gt; +    volatile Thread* m_audioThread { nullptr };
&gt; +    volatile Thread* m_graphOwnerThread; // if the lock is held then this is the thread which owns it, otherwise == nullptr.

If volatile needs to be kept at all, then it needs to be after the &quot;*&quot;:

    Thread* volatile m_audioThread { nullptr };
    Thread* volatile m_graphOwnerThread { nullptr }; // Thread which owns lock currently held.

It’s the storage of the data member that was marked volatile before, previously an integer, now a pointer, not the storage of the contents of a Thread object, which is what volatile Thread* means. I am not sure the volatile is needed, but the volatile before the * is definitely not helpful.

&gt; Source/WebCore/Modules/webdatabase/DatabaseDetails.h:41
&gt;          , m_creationTime(0)

This seems way more like a struct than a class, not to be changed in this patch, I guess.

&gt; Source/WebCore/Modules/webdatabase/DatabaseDetails.h:80
&gt; +    RefPtr&lt;Thread&gt; m_thread;

Why not Ref&lt;Thread&gt; m_thread { Thread::current() } as we have been doing other places?

&gt; Source/WebCore/platform/Supplementable.h:127
&gt; +    Ref&lt;Thread&gt; m_thread;

Why not initialize here as you have in other places?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:94
&gt; +    RefPtr&lt;Thread&gt; m_compositorThread { nullptr };

No need for { nullptr } for a RefPtr. They all do that automatically.

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:67
&gt; +    ASSERT(m_creationThread.get() == Thread::current());

I am really surprised that these .get() are needed. What happens if we don’t do get()? I think maybe the reason they are needed is that we overload the operator== as a class member of the Thread class instead of writing it as a free function that takes two Thread&amp; or maybe const Thread&amp;.

If we are going so far as to actually keep the overload of ==, then I think we should try to do it in a way where we don’t need to do all this get().

Without the overload of ==, I think it would be:

    ASSERT(m_creationThread.ptr() == &amp;Thread::current());

&gt; Source/WebCore/workers/service/ServiceWorkerJob.cpp:50
&gt; +    ASSERT(Thread::current() == m_creationThread.get());

Annoying to have the same idiom here as ServicesWorkerContainer, but with all the assertions in the opposite order! We should fix them to match.

&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:500
&gt; +    static std::once_flag flag;

Why move from a simple boolean to a std::call_once? I don’t think this function needs to be thread-safe; but maybe I am mistaken.

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1069
&gt; +static Thread* Thread1 { nullptr };
&gt; +static Thread* Thread2 { nullptr };

There is no reason these need to be outside the function. They can be static, but inside the function. Also no need for the { nullptr } since all globals get initialized.

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1071
&gt;  static void testThreadIdentifierMap()

The name of this function no longer makes sense. Could be ThreadIdentityMap or ThreadObjectMap or just ThreadMap.

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1089
&gt;      // Now create another thread using WTF. On OSX, it will have the same pthread handle

The comment here confidently states that on macOS this will end up getting the same pthread handle. But I am not sure that will always happen, the code doesn’t assert it, and if it doesn’t happen then the test isn’t really testing what it claims to test.

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1090
&gt; +    // but should get a different RefPtr&lt;Thread&gt; if the previous RefPtr&lt;thread&gt; is held.

Type here, &quot;thread&quot; instead of &quot;Thread&quot;.

But also, this old test is in the wrong place. If we were adding it today it would be in TestWebKitAPI, not inside DumpRenderTree. We should consider moving it there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377591</commentid>
    <comment_count>13</comment_count>
      <attachid>328295</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 20:50:30 -0800</bug_when>
    <thetext>Comment on attachment 328295
Patch

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

Thank you

&gt;&gt; Source/WTF/wtf/RecursiveLockAdapter.h:86
&gt;&gt; +    Thread* m_owner { nullptr }; // Use Thread* instead of RefPtr&lt;Thread&gt; since owner thread is always alive while m_onwer is et.
&gt; 
&gt; Typo: m_onwer

Fixed.

&gt;&gt; Source/WTF/wtf/Threading.h:146
&gt;&gt;      bool operator==(const Thread&amp; thread)
&gt; 
&gt; Keeping these operator== is a little bit peculiar. It means that we can compare a thread with another without using .get(), .ptr() or &amp;, which I suppose is handy, but we could have done that for almost any other object that represents something unique. Like even, say, DOM::Document.
&gt; 
&gt; It was certainly strange before that we guaranteed uniqueness of both the ID an of the reference counted thread object.
&gt; 
&gt; I would be tempted to remove these entirely; we would need to change more code then, but I think it would be logical to compare RefPtr&lt;Thread&gt; or Thread* rather than doing == on the Thread objects themselves since they are all unique and no two are equal unless they are the same one. Or if we are keeping these operators, I would be tempted to add even more overloads so we can compare a Thread* with a Thread&amp; without doing anything.

OK, I removed this from Thread. And use pointer comparison in all the places.

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:303
&gt;&gt; +        LOG_ERROR(&quot;Thread %p was unable to be detached\n&quot;, this);
&gt; 
&gt; Also need to remove the reference to ThreadIdentifier in the comment in Thread::initializeCurrentTLS.

Dropped.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:136
&gt;&gt; +    , m_graphOwnerThread(nullptr)
&gt; 
&gt; Initialize in class definition instead?

Fixed.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:152
&gt;&gt; +    , m_graphOwnerThread(nullptr)
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/Modules/webaudio/AudioContext.h:387
&gt;&gt; +    volatile Thread* m_graphOwnerThread; // if the lock is held then this is the thread which owns it, otherwise == nullptr.
&gt; 
&gt; If volatile needs to be kept at all, then it needs to be after the &quot;*&quot;:
&gt; 
&gt;     Thread* volatile m_audioThread { nullptr };
&gt;     Thread* volatile m_graphOwnerThread { nullptr }; // Thread which owns lock currently held.
&gt; 
&gt; It’s the storage of the data member that was marked volatile before, previously an integer, now a pointer, not the storage of the contents of a Thread object, which is what volatile Thread* means. I am not sure the volatile is needed, but the volatile before the * is definitely not helpful.

Oops, nice catch. Fixed.

&gt;&gt; Source/WebCore/Modules/webdatabase/DatabaseDetails.h:80
&gt;&gt; +    RefPtr&lt;Thread&gt; m_thread;
&gt; 
&gt; Why not Ref&lt;Thread&gt; m_thread { Thread::current() } as we have been doing other places?

This is because Ref&lt;Thread&gt; is not copyable. We need to add bunch of duplicate code for copy constructor and assignment operator.
In the meantime, I added them. But I think we should have some helper class to allow copying for Ref. Like, CopyableRef&lt;&gt;, which inherits Ref&lt;&gt; but copyable.

&gt;&gt; Source/WebCore/platform/Supplementable.h:127
&gt;&gt; +    Ref&lt;Thread&gt; m_thread;
&gt; 
&gt; Why not initialize here as you have in other places?

Fixed. And change the constructor to `Supplementable() = default`.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:94
&gt;&gt; +    RefPtr&lt;Thread&gt; m_compositorThread { nullptr };
&gt; 
&gt; No need for { nullptr } for a RefPtr. They all do that automatically.

Dropped nullptr.

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:67
&gt;&gt; +    ASSERT(m_creationThread.get() == Thread::current());
&gt; 
&gt; I am really surprised that these .get() are needed. What happens if we don’t do get()? I think maybe the reason they are needed is that we overload the operator== as a class member of the Thread class instead of writing it as a free function that takes two Thread&amp; or maybe const Thread&amp;.
&gt; 
&gt; If we are going so far as to actually keep the overload of ==, then I think we should try to do it in a way where we don’t need to do all this get().
&gt; 
&gt; Without the overload of ==, I think it would be:
&gt; 
&gt;     ASSERT(m_creationThread.ptr() == &amp;Thread::current());

OK, changed to use pointer comparisons.

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerJob.cpp:50
&gt;&gt; +    ASSERT(Thread::current() == m_creationThread.get());
&gt; 
&gt; Annoying to have the same idiom here as ServicesWorkerContainer, but with all the assertions in the opposite order! We should fix them to match.

Aligned to the same style, xxx == &amp;Thread::current().

&gt;&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:500
&gt;&gt; +    static std::once_flag flag;
&gt; 
&gt; Why move from a simple boolean to a std::call_once? I don’t think this function needs to be thread-safe; but maybe I am mistaken.

Yes, this function does not need to be thread-safe. But I think std::call_once is more readable if it is only called once.

&gt;&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1069
&gt;&gt; +static Thread* Thread2 { nullptr };
&gt; 
&gt; There is no reason these need to be outside the function. They can be static, but inside the function. Also no need for the { nullptr } since all globals get initialized.

OK, placed them in function.

&gt;&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1071
&gt;&gt;  static void testThreadIdentifierMap()
&gt; 
&gt; The name of this function no longer makes sense. Could be ThreadIdentityMap or ThreadObjectMap or just ThreadMap.

Moved it to TestWebKitAPI.

&gt;&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1089
&gt;&gt;      // Now create another thread using WTF. On OSX, it will have the same pthread handle
&gt; 
&gt; The comment here confidently states that on macOS this will end up getting the same pthread handle. But I am not sure that will always happen, the code doesn’t assert it, and if it doesn’t happen then the test isn’t really testing what it claims to test.

Yeah, it sounds that this is really implementation dependent of the system library.
I changed this to `may`.

&gt;&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:1090
&gt;&gt; +    // but should get a different RefPtr&lt;Thread&gt; if the previous RefPtr&lt;thread&gt; is held.
&gt; 
&gt; Type here, &quot;thread&quot; instead of &quot;Thread&quot;.
&gt; 
&gt; But also, this old test is in the wrong place. If we were adding it today it would be in TestWebKitAPI, not inside DumpRenderTree. We should consider moving it there.

Moved this to TestWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377598</commentid>
    <comment_count>14</comment_count>
      <attachid>328327</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 21:18:18 -0800</bug_when>
    <thetext>Created attachment 328327
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377599</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 21:20:31 -0800</bug_when>
    <thetext>Attachment 328327 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377601</commentid>
    <comment_count>16</comment_count>
      <attachid>328328</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 21:20:35 -0800</bug_when>
    <thetext>Created attachment 328328
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377602</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 21:23:35 -0800</bug_when>
    <thetext>Attachment 328328 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377603</commentid>
    <comment_count>18</comment_count>
      <attachid>328329</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 21:28:59 -0800</bug_when>
    <thetext>Created attachment 328329
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377604</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-03 21:31:14 -0800</bug_when>
    <thetext>Attachment 328329 did not pass style-queue:


ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:194:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:195:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:279:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:298:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 6 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377608</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-03 22:13:19 -0800</bug_when>
    <thetext>Committed r225470: &lt;https://trac.webkit.org/changeset/225470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377609</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-03 22:14:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/35823384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377634</commentid>
    <comment_count>22</comment_count>
      <attachid>328329</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-04 02:43:01 -0800</bug_when>
    <thetext>Comment on attachment 328329
Patch for landing

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

&gt; Source/WebCore/Modules/webdatabase/SQLTransaction.cpp:187
&gt; +    if (&amp;Thread::current() != m_database-&gt;databaseThread().getThread())

I&apos;ll exchange operands in a follow-up patch.

&gt; Source/WebCore/bindings/js/JSCallbackData.h:55
&gt; -        , m_thread(currentThread())
&gt; +        , m_thread(Thread::current())

I&apos;ll move to the class field in a follow-up patch.

&gt; Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:435
&gt; +    ASSERT(&amp;Thread::current() == libxmlLoaderThread);

I&apos;ll fix this in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380055</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-10 05:14:34 -0800</bug_when>
    <thetext>Committed r225731: &lt;https://trac.webkit.org/changeset/225731&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328290</attachid>
            <date>2017-12-03 07:22:53 -0800</date>
            <delta_ts>2017-12-03 07:29:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180308-20171204002252.patch</filename>
            <type>text/plain</type>
            <size>203832</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDI4ZTNiNzZhZGVjZWZkZGQyMjBmNjEzMGY4ZjM5ZGEzOThjMmU0Li4xMjA3ZjUzMGI5ZmIyNzVh
YThlMWE0ODhjMGRmMjcwZDc2ZTQ4ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVh
ZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bGxp
bnRfdHJhY2Vfb3BlcmFuZCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV92YWx1
ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
IChKU0M6OkxMSW50Ojp0cmFjZUZ1bmN0aW9uUHJvbG9ndWUpOgorICAgICAgICAqIHJ1bnRpbWUv
RXhjZXB0aW9uU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpFeGNlcHRpb25TY29wZTo6dW5leHBl
Y3RlZEV4Y2VwdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmg6CisgICAg
ICAgIChKU0M6OkpTTG9jazo6Y3VycmVudFRocmVhZElzSG9sZGluZ0xvY2spOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnRocm93aW5nVGhyZWFkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6Vk06OmNsZWFyRXhjZXB0aW9uKToKKyAgICAgICAgKiB0b29s
cy9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnByaW50VmVy
aWZpY2F0aW9uSGVhZGVyKToKKwogMjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CiAKICAgICAgICAgSmF2YVNjcmlwdENvcmU6IG1pc3NpbmcgZXhjZXB0aW9uIGNo
ZWNrcyBpbiBNYXRoIGZ1bmN0aW9ucyB0aGF0IHRha2UgbW9yZSB0aGFuIG9uZSBhcmd1bWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCAwOWJlNGM0NWNkNDZkMTg2Mjk1NjliN2M3YTUwY2FlZGUyYTg5N2IwLi5jNGIzMGZhNGU3
NTA5NWE5MDlhNGYyODk0OTY4MzQ1NDY5NWZkYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3
LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IFdURiBzaG91bGRuJ3QgaGF2ZSBib3RoIFRocmVhZCBhbmQgVGhyZWFkSWRlbnRpZmllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkIHVz
ZSBhIHBvaW50ZXIgb2YgV1RGOjpUaHJlYWQgaW5zdGVhZCBvZiBUaHJlYWRJZGVudGlmaWVyLgor
CisgICAgICAgIE9uZSBwcm9ibGVtIGlzIHRoYXQgV2luZG93cyBzdXBwb3J0IGxpYnJhcnkgdXNl
cyBXVEY6OmNyZWF0ZVRocmVhZCwKKyAgICAgICAgd2hpY2ggcmV0dXJucyBUaHJlYWRJZGVudGlm
aWVyLiBTbyB3ZSBjYW5ub3QgZHJvcCBUaHJlYWRJZGVudGlmaWVyCisgICAgICAgIGluIFdpbmRv
d3MgZW52aXJvbm1lbnQuIFRoaXMgcGF0Y2gga2VlcHMgVGhyZWFkSWRlbnRpZmllciBpbiBXaW5k
b3dzLgorCisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCk6CisgICAgICAgIChXVEY6OmlzTWFpblRocmVhZCk6CisgICAgICAg
IChXVEY6OmNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZCk6CisgICAgICAgICogd3Rm
L01haW5UaHJlYWQuaDoKKyAgICAgICAgKiB3dGYvUGFya2luZ0xvdC5jcHA6CisgICAgICAgIChX
VEY6OlBhcmtpbmdMb3Q6OnBhcmtDb25kaXRpb25hbGx5SW1wbCk6CisgICAgICAgIChXVEY6OlBh
cmtpbmdMb3Q6OnVucGFya09uZSk6CisgICAgICAgIChXVEY6OlBhcmtpbmdMb3Q6OnVucGFya09u
ZUltcGwpOgorICAgICAgICAoV1RGOjpQYXJraW5nTG90Ojp1bnBhcmtDb3VudCk6CisgICAgICAg
ICogd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg6CisgICAgICAgIChXVEY6OlJlY3Vyc2l2ZUxv
Y2tBZGFwdGVyOjpsb2NrKToKKyAgICAgICAgKFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OnVu
bG9jayk6CisgICAgICAgIChXVEY6OlJlY3Vyc2l2ZUxvY2tBZGFwdGVyOjp0cnlMb2NrKToKKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpkdW1wIGNv
bnN0KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIChXVEY6OlRocmVhZDo6
aWQgY29uc3QpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpjdXJyZW50VGhyZWFkKTog
RGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOgorICAgICAgICAq
IHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6d2FpdEZv
ckNvbXBsZXRpb24pOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmRldGFjaCk6CisgICAgICAgIChX
VEY6OlRocmVhZDo6c3VzcGVuZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6ZXN0YWJsaXNoUGxh
dGZvcm1TcGVjaWZpY0hhbmRsZSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3VycmVudElEKTog
RGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6
VGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbik6CisgICAgICAgIChXVEY6OlRocmVhZDo6c3VzcGVu
ZCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3VycmVudER5aW5nKToKKyAgICAgICAgKiB3dGYv
bWFjL01haW5UaHJlYWRNYWMubW06CisgICAgICAgIChXVEY6OmluaXRpYWxpemVBcHBsaWNhdGlv
blVJVGhyZWFkKToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZFBsYXRmb3JtKToK
KyAgICAgICAgKFdURjo6Y2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKToKKyAgICAg
ICAgKFdURjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZElkZW50aWZpZXIpOiBEZWxldGVk
LgorCiAyMDE3LTEyLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGYWN0b3Igb3V0IHRoZSAiZGF0YWJhc2VUYXNrUXVldWUiIHBhcnRzIG9mIElEQlNlcnZl
ciBpbnRvIHNvbWV0aGluZyByZXVzYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZWI3NGViMGFkYTM1NDQ3
YjcxYjY0M2ZkNWYwOGJlMjE2MDNiNGNjLi5iNWI0ZmNiZDhkMWYzYzc1YjFmNWMwYjMxMzY2NmQw
NDcyNmY5YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUzIEBACisyMDE3LTEyLTAzICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRu
J3QgaGF2ZSBib3RoIFRocmVhZCBhbmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6Om9yaWdpblRocmVhZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6OnBlcmZvcm1DYWxsYmFja09uT3JpZ2lu
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2ZURPTU9iamVjdDo6Y2FsbEZ1bmN0
aW9uT25PcmlnaW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0aXZlRE9NT2JqZWN0
OjpvcmlnaW5UaHJlYWRJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6SURCQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6fklEQkN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3I6OnNvdXJjZXNEZWxldGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvcjo6dHJhbnNhY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjphZHZhbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OnNldEdldFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6On5JREJEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp2ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2U6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2U6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2U6OmRpZENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZTo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OmRpZERlbGV0ZUluZGV4SW5mbyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OklEQkluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojp+SURCSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OnNldE5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4OjprZXlQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4Ojp1bmlxdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om11bHRp
RW50cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OnJvbGxiYWNrSW5mb0Zv
clZlcnNpb25DaGFuZ2VBYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJ
bmRleDo6ZG9HZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRvR2V0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6OmdldEFsbEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om1hcmtBc0Rl
bGV0ZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6fklEQk9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlOjpzZXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlOjprZXlQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpp
bmRleE5hbWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjp0cmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpnZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OnB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0RlbGV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjppbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmdldEFsbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6bWFya0FzRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6cm9sbGJhY2tGb3JWZXJzaW9uQ2hhbmdlQWJvcnQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T3BlbkRCUmVxdWVzdDo6fklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T3BlbkRCUmVxdWVzdDo6b25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1
ZXN0Ojp2ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb25EaWRGaW5pc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT3BlbkRCUmVxdWVzdDo6ZmlyZVN1Y2Nlc3NBZnRlclZlcnNpb25DaGFuZ2VDb21taXQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJz
aW9uQ2hhbmdlQ29tcGxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9u
U3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25EZWxldGVEYXRh
YmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6cmVxdWVz
dENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0
QmxvY2tlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp+SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjogY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0U291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp0cmFuc2FjdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2VPYmplY3RTdG9yZUlkZW50aWZpZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c291cmNlSW5kZXhJZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnJlcXVlc3RlZE9iamVj
dFN0b3JlUmVjb3JkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpy
ZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVx
dWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNw
YXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0
aW9uSW5FdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVz
dWx0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJl
ZENsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFJlc3VsdFRvVW5kZWZp
bmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp3aWxsSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OmNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpJREJUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6fklEQlRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZU5hbWVz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkYik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZXJyb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjphYm9ydER1ZVRvRmFpbGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6dHJhbnNpdGlvbmVkVG9GaW5pc2hpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjppbnRlcm5hbEFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjph
Ym9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c3RvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmlzRmluaXNoZWRPckZpbmlzaGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWRkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6cmVtb3ZlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OnNjaGVkdWxlUGVuZGluZ09wZXJhdGlvblRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlQ29tcGxldGVkT3BlcmF0
aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9w
ZXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNv
bW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tbWl0T25TZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0T3JDb21taXQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpub3RpZnlEaWRBYm9ydCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmRpZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
ZmlyZU9uQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmZpcmVP
bkFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRDcmVhdGVPYmplY3RTdG9yZU9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3Rv
cmVPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1l
T2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUlu
ZGV4T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZENyZWF0
ZUluZGV4T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFt
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleE9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVJbmRl
eE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZG9SZXF1ZXN0T3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29y
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JPblNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNv
ck9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
QWxsT2JqZWN0U3RvcmVSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpnZXRBbGxSZWNvcmRzT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmRpZEdldEFsbFJlY29yZHNPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0R2V0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OmdldFJlY29yZE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpk
aWRHZXRSZWNvcmRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpnZXRDb3Vu
dE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRHZXRDb3Vu
dE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVs
ZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWxldGVSZWNv
cmRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRl
UmVjb3JkT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVl
c3RDbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpj
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmRpZENsZWFyT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpkaWRQdXRPckFkZE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6ZGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OmRlYWN0aXZhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpyZW1v
dmVJdGVtc01hdGNoaW5nQ3VycmVudFRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjp+VHJhbnNhY3Rpb25PcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6cGVyZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjp0cmFu
c2l0aW9uVG9Db21wbGV0ZU9uVGhpc1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjp0cmFuc2l0aW9uVG9Db21wbGV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpkb0NvbXBsZXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9yaWdp
blRocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uOjpvcmlnaW5UaHJlYWRJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojps
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6dHJ5TG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OmlzQXVkaW9UaHJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0Ojppc0dyYXBoT3duZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnNldEF1ZGlv
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlbmRlcik6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpz
ZWN1cml0eU9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURl
dGFpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6RGF0YWJhc2VEZXRh
aWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6dGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6dGhyZWFkSUQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmln
aW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmg6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRocmVhZDo6Z2V0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVGhyZWFkOjpnZXRUaHJlYWRJRCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y2hlY2tBbmRIYW5kbGVDbG9zZWREYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXApOgorICAgICAgICAoV2ViQ29yZTo6U1FM
VHJhbnNhY3Rpb25CYWNrZW5kOjpub3RpZnlEYXRhYmFzZVRocmVhZElzU2h1dHRpbmdEb3duKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYWxsYmFja0RhdGE6OkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q2FsbGJhY2tEYXRhOjp+SlNDYWxsYmFja0RhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4
ZWN1dGUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdlUG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNz
YWdlUG9ydCk6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUaHJlYWQ6OmlzQ3VycmVudFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0v
U3VwcGxlbWVudGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpwcm92
aWRlU3VwcGxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6cmVtb3Zl
U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6cmVxdWlyZVN1
cHBsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OlN1cHBsZW1lbnRh
YmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
aW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6aXNBY3RpdmUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFwcGVuZFRv
VW51c2VkQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5Ojpzd2FwQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFJ1bldlYlRocmVhZCk6CisgICAg
ICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpvcGVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgICogcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
c3FsaXRlM0hhbmRsZSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2Jh
bFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjppc0NvbnRleHRU
aHJlYWQgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2lu
Z1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp+V29ya2Vy
TWVzc2FnaW5nUHJveHkpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlclRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp0aHJlYWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp0aHJlYWRJRCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6flNlcnZp
Y2VXb3JrZXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1Njcmlw
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRM
b2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmpvYkRpZEZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmlyZUNvbnRyb2xsZXJDaGFuZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpjb250ZXh0SWRlbnRpZmll
cik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjp+U2VydmljZVdvcmtlckpvYik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhVbnJlZ2lz
dHJhdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpzdGFy
dFNjcmlwdEZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmZldGNo
U2NyaXB0V2l0aENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6
Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYi5oOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpvcGVu
RnVuYyk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplWE1MUGFyc2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZVN0cmluZ1BhcnNlcik6CisgICAgICAg
IChXZWJDb3JlOjpYTUxQYXJzZXJDb250ZXh0OjpjcmVhdGVNZW1vcnlQYXJzZXIpOgorCiAyMDE3
LTEyLTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IHJlZ2lzdHJhdGlvbiBhY3RpdmF0aW9uIGFuZCBjbGVhcmluZyBmcm9tIFNXU2VydmVySm9iUXVl
dWUgdG8gU1dTZXJ2ZXJSZWdpc3RyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjQzNzUwMmJjZGZkMDdiZWEy
MzQ2ZGE4ZTVmMjQ0MWY3YTI1ZjU4ZC4uNTU2ZTdiODlhMDViYWEyZWI2OTc3ODNhNzc1NDljY2Nh
NjAwM2Q1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhh
dmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oOgorICAgICAg
ICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6On5HZW5lcmljQ2FsbGJhY2spOgorICAgICAgICAo
V2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZSk6
CisKIDIwMTctMTItMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50
cy1nZXRhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IDIxZTkwMmQ0OTU1ZjhiY2JmNzI4MGY0ZjFiOWRhMzk3NzcxM2I1M2IuLjdhMTVl
MjI5ZWUwYTJjODE5NjQzNzg4ZThiMTZjYTMzMDk4YjRiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTkxLDggKzE5MSw4IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBw
YywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAg
ICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2Uo
JWQpOiAlZDogJWRcbiIsCi0gICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxv
Z0YoIjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6
ICVkXG4iLAorICAgICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhl
Yy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkpLApAQCAtMjE1LDggKzIxNSw4IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxs
aW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjCiAgICAgfSB1
OwogICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgZGF0YUxvZ0Yo
Ci0gICAgICAgICI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSgl
ZCk6ICVkOiAlZDogJTA4eDolMDh4OiAlc1xuIiwKLSAgICAgICAgY3VycmVudFRocmVhZCgpLAor
ICAgICAgICAiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQp
OiAlZDogJWQ6ICUwOHg6JTA4eDogJXNcbiIsCisgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwK
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgIGV4ZWMsCiAgICAgICAgIHN0YXRp
Y19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKSwKQEAgLTIzMiw3ICsyMzIsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYwogCiBM
TElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRhTG9nRigiPCVk
PiAlcCAvICVwOiBpbiBwcm9sb2d1ZSBvZiAiLCBjdXJyZW50VGhyZWFkKCksIGV4ZWMtPmNvZGVC
bG9jaygpLCBleGVjKTsKKyAgICBkYXRhTG9nRigiPCVwPiAlcCAvICVwOiBpbiBwcm9sb2d1ZSBv
ZiAiLCAmVGhyZWFkOjpjdXJyZW50KCksIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKICAgICBk
YXRhTG9nKCpleGVjLT5jb2RlQmxvY2soKSwgIlxuIik7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsK
IH0KQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlYwogICAgIEpTRnVu
Y3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CiAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUo
KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0Zvcihr
aW5kKTsKLSAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBpbiAlcyBvZiAiLCBjdXJyZW50VGhy
ZWFkKCksIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlcD4gJXAg
LyAlcDogaW4gJXMgb2YgIiwgJlRocmVhZDo6Y3VycmVudCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNv
bW1lbnQpOwogICAgIGRhdGFMb2coKmNvZGVCbG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlv
biAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51
bUNhbGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhl
Y3V0YWJsZSwgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
LCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAg
LTI3NSw4ICsyNzUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zv
cl9jb25zdHJ1Y3QpCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZSkKIHsKICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSk7Ci0g
ICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBc
biIsCi0gICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0YoIjwlcD4gJXAg
LyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBcbiIsCisgICAgICAgICAgICAmVGhy
ZWFkOjpjdXJyZW50KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAg
ICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5j
b2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCkBAIC0yOTQsOCArMjk0LDggQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNp
YWxfdHJhY2UpCiB7Ci0gICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNp
YWwgY2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCi0gICAgICAgICAgICBj
dXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIHNw
ZWNpYWwgY2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAgICAg
ICAmVGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAg
ICAgICAgICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBl
eGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAKaW5kZXggNjkwYmMxMjI5
ZjIxNDBhMDhkYmE3N2I3ZTU1YmEyYzIxZjhjMjdiZi4uN2QxYzA2YTk1NDFiMTUwMTMwMjQ2OGFj
YmIwMWY4Njc0NDg5YWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvblNjb3BlLmNwcApAQCAtNTUsMTQgKzU1LDE0IEBAIENTdHJpbmcgRXhjZXB0aW9u
U2NvcGU6OnVuZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlKCkKIHsKICAgICBTdHJpbmdQcmludFN0
cmVhbSBvdXQ7CiAKLSAgICBvdXQucHJpbnRsbigiVW5leHBlY3RlZCBleGNlcHRpb24gb2JzZXJ2
ZWQgb24gdGhyZWFkICIsIGN1cnJlbnRUaHJlYWQoKSwgIiBhdDoiKTsKKyAgICBvdXQucHJpbnRs
bigiVW5leHBlY3RlZCBleGNlcHRpb24gb2JzZXJ2ZWQgb24gdGhyZWFkICIsIFRocmVhZDo6Y3Vy
cmVudCgpLCAiIGF0OiIpOwogICAgIGF1dG8gY3VycmVudFN0YWNrID0gU3RhY2tUcmFjZTo6Y2Fw
dHVyZVN0YWNrVHJhY2UoT3B0aW9uczo6dW5leHBlY3RlZEV4Y2VwdGlvblN0YWNrVHJhY2VMaW1p
dCgpLCAxKTsKICAgICBjdXJyZW50U3RhY2stPmR1bXAob3V0LCAiICAgICIpOwogCiAgICAgaWYg
KCFtX3ZtLm5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdygpKQogICAgICAgICByZXR1cm4gQ1N0
cmluZygpOwogICAgIAotICAgIG91dC5wcmludGxuKCJUaGUgZXhjZXB0aW9uIHdhcyB0aHJvd24g
ZnJvbSB0aHJlYWQgIiwgbV92bS50aHJvd2luZ1RocmVhZCgpLCAiIGF0OiIpOworICAgIG91dC5w
cmludGxuKCJUaGUgZXhjZXB0aW9uIHdhcyB0aHJvd24gZnJvbSB0aHJlYWQgIiwgKm1fdm0udGhy
b3dpbmdUaHJlYWQoKSwgIiBhdDoiKTsKICAgICBtX3ZtLm5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RU
aHJvdygpLT5kdW1wKG91dCwgIiAgICAiKTsKIAogICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IGRlYTA1MDI4Y2Q3MzVl
YjYzOTE3NDcwYzE1MjJiMTgyNDVkZTU3NTUuLmJlZGYyYjU3MjgwNjc3NDY0N2RlMjFiN2MzMThm
ZmEzOGVlMzc2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC05
OCw3ICs5OCw3IEBAIGNsYXNzIEpTTG9jayA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxK
U0xvY2s+IHsKICAgICAgICAgICAgIHJldHVybiBtX293bmVyVGhyZWFkOwogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KLSAgICBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdM
b2NrKCkgeyByZXR1cm4gbV9oYXNPd25lclRocmVhZCAmJiBtX293bmVyVGhyZWFkLT5pZCgpID09
IGN1cnJlbnRUaHJlYWQoKTsgfQorICAgIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2so
KSB7IHJldHVybiBtX2hhc093bmVyVGhyZWFkICYmIG1fb3duZXJUaHJlYWQuZ2V0KCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpOyB9CiAKICAgICB2b2lkIHdpbGxEZXN0cm95Vk0oVk0qKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDVhYmRmYmJkODhiYTI4NWYxYTM1OGQ4
NzEzYjY1YTIyZTY1NDkxZTAuLjY4ZmJjZTdiZWZhM2JiMjhiODI1ZjIzY2I1NzNhY2M1YTVhODZi
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY4OSw3ICs2ODksNyBA
QCB2b2lkIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhj
ZXB0aW9uKQogCiAjaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAgICAg
bV9uYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3cgPSBTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tU
cmFjZShPcHRpb25zOjp1bmV4cGVjdGVkRXhjZXB0aW9uU3RhY2tUcmFjZUxpbWl0KCkpOwotICAg
IG1fdGhyb3dpbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgbV90aHJvd2luZ1RocmVh
ZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCAzNjY4NzNiMmI3OWQ5ZDUzZmNmOWJhZjM2ZjZjNWUyNTlkM2Y5YjAwLi5h
NmMyZDUzZmM4MDFkMWNkYWRkZmYxYTFmYWNjNTQ1NDljYWJhY2RmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTcxMSw3ICs3MTEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewog
CiAjaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAgICAgU3RhY2tUcmFj
ZSogbmF0aXZlU3RhY2tUcmFjZU9mTGFzdFRocm93KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVT
dGFja1RyYWNlT2ZMYXN0VGhyb3cuZ2V0KCk7IH0KLSAgICBUaHJlYWRJZGVudGlmaWVyIHRocm93
aW5nVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd2luZ1RocmVhZDsgfQorICAgIFRocmVh
ZCogdGhyb3dpbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgp
OyB9CiAjZW5kaWYKIAogI2lmIFVTRShDRikKQEAgLTc1NCw3ICs3NTQsNyBAQCBjbGFzcyBWTSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxWTT4gewogI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAg
ICAgICBtX25lZWRFeGNlcHRpb25DaGVjayA9IGZhbHNlOwogICAgICAgICBtX25hdGl2ZVN0YWNr
VHJhY2VPZkxhc3RUaHJvdyA9IG51bGxwdHI7Ci0gICAgICAgIG1fdGhyb3dpbmdUaHJlYWQgPSAw
OworICAgICAgICBtX3Rocm93aW5nVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgogICAgICAgICBt
X2V4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgfQpAQCAtODA2LDcgKzgwNiw3IEBAIGNsYXNzIFZN
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExp
c3ROb2RlPFZNPiB7CiAgICAgbXV0YWJsZSBib29sIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIHsgZmFs
c2UgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tUcmFjZT4gbV9uYXRpdmVTdGFja1RyYWNl
T2ZMYXN0VGhyb3c7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IG1fbmF0aXZlU3Rh
Y2tUcmFjZU9mTGFzdFNpbXVsYXRlZFRocm93OwotICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJv
d2luZ1RocmVhZDsKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Rocm93aW5nVGhyZWFkOwogI2VuZGlm
CiAKICAgICBib29sIG1fZmFpbE5leHROZXdDb2RlQmxvY2sgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCA5YTJkMmFjYmEzZjQ3
MDEyYTAyMTNhNWRiMDZmOWM2OGI2ZDFhOTYwLi5jZDkxZWUxYTRlMDMwZThlOGNhYTE1Y2E3Zjll
YWFhYTQxMDJjZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVh
cFZlcmlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlm
aWVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpwcmludFZlcmlm
aWNhdGlvbkhlYWRlcigpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLT5jb2xsZWN0aW9uU2Nv
cGUoKSk7CiAgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlID0gY3VycmVudEN5Y2xlKCkuc2NvcGU7
CiAgICAgTW9ub3RvbmljVGltZSBnY0N5Y2xlVGltZXN0YW1wID0gY3VycmVudEN5Y2xlKCkudGlt
ZXN0YW1wOwotICAgIGRhdGFMb2coIlZlcmlmeWluZyBoZWFwIGluIFtwIiwgZ2V0Q3VycmVudFBy
b2Nlc3NJRCgpLCAiLCB0IiwgY3VycmVudFRocmVhZCgpLCAiXSB2bSAiLAorICAgIGRhdGFMb2co
IlZlcmlmeWluZyBoZWFwIGluIFtwIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiLCAiLCBUaHJl
YWQ6OmN1cnJlbnQoKSwgIl0gdm0gIiwKICAgICAgICAgUmF3UG9pbnRlcihtX2hlYXAtPnZtKCkp
LCAiIG9uICIsIHNjb3BlLCAiIEdDIEAgIiwgZ2NDeWNsZVRpbWVzdGFtcCwgIlxuIik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwIGIvU291cmNlL1dURi93
dGYvTWFpblRocmVhZC5jcHAKaW5kZXggMmM0MTYyN2Q2ZTc5NDBkNDhjOTVkYzczYWNlM2ZiYjI2
MTM4NmJkMy4uNGMyMjNlYTNjMjQ0ZWMyNjE3ZDRiYmJkMzkwNmZiNzAzOGM5Y2E0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
TWFpblRocmVhZC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHN0YXRp
YyBib29sIGNhbGxiYWNrc1BhdXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgb25seSBh
Y2Nlc3NlZCBmcm9tIG1haW4gdGhyZWFkLgogI2lmICFQTEFURk9STShDT0NPQSkKLXN0YXRpYyBU
aHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJZGVudGlmaWVyOworc3RhdGljIFRocmVhZCogbWFp
blRocmVhZCB7IG51bGxwdHIgfTsKICNlbmRpZgogCiBzdGF0aWMgU3RhdGljTG9jayBtYWluVGhy
ZWFkRnVuY3Rpb25RdWV1ZU11dGV4OwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGluaXRpYWxpemVN
YWluVGhyZWFkKCkKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplS2V5LCBbXSB7CiAgICAg
ICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKICNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgICAg
IG1haW5UaHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBtYWluVGhy
ZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOwogI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVNYWlu
VGhyZWFkUGxhdGZvcm0oKTsKICAgICAgICAgaW5pdGlhbGl6ZUdDVGhyZWFkcygpOwpAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCkKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiBib29sIGlzTWFpblRocmVhZCgpCiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9
PSBtYWluVGhyZWFkSWRlbnRpZmllcjsKKyAgICByZXR1cm4gJlRocmVhZDo6Y3VycmVudCgpID09
IG1haW5UaHJlYWQ7CiB9CiAjZW5kaWYKIApAQCAtOTgsOSArOTgsOSBAQCB2b2lkIGluaXRpYWxp
emVXZWJUaHJlYWQoKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgIVVTRShXRUJf
VEhSRUFEKQotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRl
bnRpZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFk
KFRocmVhZCYgdGhyZWFkKQogewotICAgIHJldHVybiB0aHJlYWRJZCA9PSBjdXJyZW50VGhyZWFk
KCk7CisgICAgcmV0dXJuIHRocmVhZCA9PSBUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0
Zi9NYWluVGhyZWFkLmgKaW5kZXggYzk1ZjkyZmJkZjNhNGJkMzU4NzlkYmRlZWEwZDE1MWE0YzAy
OTAyYi4uZWQxZDQ5NWZlYmQ3MmY1ZTgwM2FjNWRiNDY0MTFkNzc4ZTI0MmVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5U
aHJlYWQuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50
U3RyZWFtOworY2xhc3MgVGhyZWFkOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWlu
IHRocmVhZC4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7
CkBAIC01NCwxNCArNTUsMTMgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWFpblRocmVh
ZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGlzTWFpblRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5BY2Nlc3NUaHJl
YWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkJik7CiAKICNp
ZiBVU0UoV0VCX1RIUkVBRCkKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV2ViVGhyZWFkKCk7
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1VJVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbml0aWFsaXplV2ViVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBp
bml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRJZGVudGlmaWVyKCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogdm9pZCBpbml0aWFs
aXplV2ViVGhyZWFkUGxhdGZvcm0oKTsKICNlbHNlCiBpbmxpbmUgYm9vbCBpc1dlYlRocmVhZCgp
IHsgcmV0dXJuIGlzTWFpblRocmVhZCgpOyB9CkBAIC0xMTMsOCArMTEzLDcgQEAgdXNpbmcgV1RG
OjpjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQ7CiAjZW5kaWYKICNp
ZiBVU0UoV0VCX1RIUkVBRCkKIHVzaW5nIFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZDsKLXVzaW5n
IFdURjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyOwotdXNpbmcgV1RG
Ojppbml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcjsKK3VzaW5nIFdURjo6aW5pdGlhbGl6ZUFw
cGxpY2F0aW9uVUlUaHJlYWQ7CiAjZW5kaWYKIAogI2VuZGlmIC8vIE1haW5UaHJlYWRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Q
YXJraW5nTG90LmNwcAppbmRleCBmOGZlZDg4YjFmN2M5OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNj
ZTFjLi5iMTRkN2EyY2RlZDhmNWVkM2QzNDAyZjc4ODBkMzcxNjI2ODllOGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJr
aW5nTG90LmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICB2b2lkIGVu
cXVldWUoVGhyZWFkRGF0YSogZGF0YSkKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVucXVldWVpbmcg
IiwgUmF3UG9pbnRlcihkYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2ludGVyKGRhdGEt
PmFkZHJlc3MpLCAiIG9udG8gIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAgICAgICAg
ICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyAiLCBS
YXdQb2ludGVyKGRhdGEpLCAiIHdpdGggYWRkcmVzcyA9ICIsIFJhd1BvaW50ZXIoZGF0YS0+YWRk
cmVzcyksICIgb250byAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIEFTU0VS
VChkYXRhLT5hZGRyZXNzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLT5uZXh0SW5RdWV1ZSk7CiAg
ICAgICAgIApAQCAtOTksMTEgKzk5LDExIEBAIHN0cnVjdCBCdWNrZXQgewogICAgIHZvaWQgZ2Vu
ZXJpY0RlcXVldWUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGlmICh2
ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6
IGRlcXVldWVpbmcgZnJvbSBidWNrZXQgYXQgIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOwor
ICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZGVxdWV1
ZWluZyBmcm9tIGJ1Y2tldCBhdCAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAg
IAogICAgICAgICBpZiAoIXF1ZXVlSGVhZCkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVtcHR5
LlxuIikpOworICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50
KCksICI6IGVtcHR5LlxuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTE0MywxNCArMTQzLDE0IEBAIHN0cnVjdCBCdWNrZXQgewogICAgICAgICB3aGlsZSAoc2hvdWxk
Q29udGludWUpIHsKICAgICAgICAgICAgIFRocmVhZERhdGEqIGN1cnJlbnQgPSAqY3VycmVudFB0
cjsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9T
dHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVu
dCksICJcbiIpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3Vy
cmVudCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJcbiIpKTsKICAg
ICAgICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIERlcXVldWVSZXN1bHQgcmVzdWx0ID0gZnVuY3RvcihjdXJyZW50LCB0aW1lVG9CZUZhaXIp
OwogICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1
ZVJlc3VsdDo6SWdub3JlOgogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3VycmVudFB0
ciA9ICIsIFJhd1BvaW50ZXIoY3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9p
bnRlcigqY3VycmVudFB0ciksICJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0
b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3VycmVudFB0ciA9ICIsIFJhd1BvaW50ZXIo
Y3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigqY3VycmVudFB0ciks
ICJcbiIpKTsKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgICAgICAgICAg
ICAgICAgY3VycmVudFB0ciA9ICYoKmN1cnJlbnRQdHIpLT5uZXh0SW5RdWV1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICAg
ICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJlc3VsdDo6
UmVtb3ZlQW5kQ29udGludWU6CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBkZXF1ZXVl
aW5nICIsIFJhd1BvaW50ZXIoY3VycmVudCksICIgZnJvbSAiLCBSYXdQb2ludGVyKHRoaXMpLCAi
XG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJy
ZW50KCksICI6IGRlcXVldWVpbmcgIiwgUmF3UG9pbnRlcihjdXJyZW50KSwgIiBmcm9tICIsIFJh
d1BvaW50ZXIodGhpcyksICJcbiIpKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBx
dWV1ZVRhaWwpCiAgICAgICAgICAgICAgICAgICAgIHF1ZXVlVGFpbCA9IHByZXZpb3VzOwogICAg
ICAgICAgICAgICAgIGRpZERlcXVldWUgPSB0cnVlOwpAQCAtMjcxLDcgKzI3MSw3IEBAIEhhc2h0
YWJsZSogZW5zdXJlSGFzaHRhYmxlKCkKICAgICAgICAgICAgIGN1cnJlbnRIYXNodGFibGUgPSBI
YXNodGFibGU6OmNyZWF0ZShtYXhMb2FkRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChoYXNodGFi
bGUuY29tcGFyZUV4Y2hhbmdlV2VhayhudWxscHRyLCBjdXJyZW50SGFzaHRhYmxlKSkgewogICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRv
U3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBpbml0aWFsIGhhc2h0YWJsZSAiLCBS
YXdQb2ludGVyKGN1cnJlbnRIYXNodGFibGUpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IGNyZWF0ZWQgaW5pdGlhbCBo
YXNodGFibGUgIiwgUmF3UG9pbnRlcihjdXJyZW50SGFzaHRhYmxlKSwgIlxuIikpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBjdXJyZW50SGFzaHRhYmxlOwogICAgICAgICAgICAgfQogCkBAIC0z
NDYsNyArMzQ2LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51bVRocmVh
ZHMpCiAgICAgSGFzaHRhYmxlKiBvbGRIYXNodGFibGUgPSBoYXNodGFibGUubG9hZCgpOwogICAg
IGlmIChvbGRIYXNodGFibGUgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihvbGRIYXNodGFibGUtPnNp
emUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihudW1UaHJlYWRzKSA+PSBtYXhMb2FkRmFjdG9yKSB7
CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJy
ZW50VGhyZWFkKCksICI6IG5vIG5lZWQgdG8gcmVoYXNoIGJlY2F1c2UgIiwgb2xkSGFzaHRhYmxl
LT5zaXplLCAiIC8gIiwgbnVtVGhyZWFkcywgIiA+PSAiLCBtYXhMb2FkRmFjdG9yLCAiXG4iKSk7
CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBubyBu
ZWVkIHRvIHJlaGFzaCBiZWNhdXNlICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRo
cmVhZHMsICIgPj0gIiwgbWF4TG9hZEZhY3RvciwgIlxuIikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2ln
bmVkIG51bVRocmVhZHMpCiAgICAgb2xkSGFzaHRhYmxlID0gaGFzaHRhYmxlLmxvYWQoKTsKICAg
ICBpZiAob2xkSGFzaHRhYmxlICYmIHN0YXRpY19jYXN0PGRvdWJsZT4ob2xkSGFzaHRhYmxlLT5z
aXplKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obnVtVGhyZWFkcykgPj0gbWF4TG9hZEZhY3Rvcikg
ewogICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3Vy
cmVudFRocmVhZCgpLCAiOiBhZnRlciBsb2NraW5nLCBubyBuZWVkIHRvIHJlaGFzaCBiZWNhdXNl
ICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMsICIgPj0gIiwgbWF4TG9h
ZEZhY3RvciwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1
cnJlbnQoKSwgIjogYWZ0ZXIgbG9ja2luZywgbm8gbmVlZCB0byByZWhhc2ggYmVjYXVzZSAiLCBv
bGRIYXNodGFibGUtPnNpemUsICIgLyAiLCBudW1UaHJlYWRzLCAiID49ICIsIG1heExvYWRGYWN0
b3IsICJcbiIpKTsKICAgICAgICAgdW5sb2NrSGFzaHRhYmxlKGJ1Y2tldHNUb1VubG9jayk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIGVuc3VyZUhh
c2h0YWJsZVNpemUodW5zaWduZWQgbnVtVGhyZWFkcykKICAgICAKICAgICBIYXNodGFibGUqIG5l
d0hhc2h0YWJsZSA9IEhhc2h0YWJsZTo6Y3JlYXRlKG5ld1NpemUpOwogICAgIGlmICh2ZXJib3Nl
KQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBu
ZXcgaGFzaHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKKyAgICAg
ICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3JlYXRlZCBuZXcgaGFz
aHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKICAgICBmb3IgKFRo
cmVhZERhdGEqIHRocmVhZERhdGEgOiB0aHJlYWREYXRhcykgewogICAgICAgICBpZiAodmVyYm9z
ZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiByZWhh
c2hpbmcgdGhyZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJl
c3MgPSAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAg
ICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiByZWhhc2hpbmcgdGhy
ZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBS
YXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CiAgICAgICAgIHVuc2lnbmVk
IGhhc2ggPSBoYXNoQWRkcmVzcyh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSBoYXNoICUgbmV3SGFzaHRhYmxlLT5zaXplOwogICAgICAgICBpZiAodmVyYm9z
ZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBpbmRl
eCA9ICIsIGluZGV4LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVh
ZDo6Y3VycmVudCgpLCAiOiBpbmRleCA9ICIsIGluZGV4LCAiXG4iKSk7CiAgICAgICAgIEJ1Y2tl
dCogYnVja2V0ID0gbmV3SGFzaHRhYmxlLT5kYXRhW2luZGV4XS5sb2FkKCk7CiAgICAgICAgIGlm
ICghYnVja2V0KSB7CiAgICAgICAgICAgICBpZiAocmV1c2FibGVCdWNrZXRzLmlzRW1wdHkoKSkK
QEAgLTQ4NSw3ICs0ODUsNyBAQCBib29sIGVucXVldWUoY29uc3Qgdm9pZCogYWRkcmVzcywgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhy
ZWFkKCksICI6IGVucXVldWVpbmcgb250byBidWNrZXQgIiwgUmF3UG9pbnRlcihidWNrZXQpLCAi
IHdpdGggaW5kZXggIiwgaW5kZXgsICIgZm9yIGFkZHJlc3MgIiwgUmF3UG9pbnRlcihhZGRyZXNz
KSwgIiB3aXRoIGhhc2ggIiwgaGFzaCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0
cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyBvbnRvIGJ1Y2tldCAiLCBSYXdQ
b2ludGVyKGJ1Y2tldCksICIgd2l0aCBpbmRleCAiLCBpbmRleCwgIiBmb3IgYWRkcmVzcyAiLCBS
YXdQb2ludGVyKGFkZHJlc3MpLCAiIHdpdGggaGFzaCAiLCBoYXNoLCAiXG4iKSk7CiAgICAgICAg
IGJ1Y2tldC0+bG9jay5sb2NrKCk7CiAKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaGFz
aHRhYmxlIGNvdWxkIGhhdmUgcmVoYXNoZWQgdW5kZXIgdXMuCkBAIC00OTgsNyArNDk4LDcgQEAg
Ym9vbCBlbnF1ZXVlKGNvbnN0IHZvaWQqIGFkZHJlc3MsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CiAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICBpZiAodGhyZWFkRGF0YSkgewogICAgICAg
ICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJy
ZW50VGhyZWFkKCksICI6IHByb2NlZWRpbmcgdG8gZW5xdWV1ZSAiLCBSYXdQb2ludGVyKHRocmVh
ZERhdGEpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6
OmN1cnJlbnQoKSwgIjogcHJvY2VlZGluZyB0byBlbnF1ZXVlICIsIFJhd1BvaW50ZXIodGhyZWFk
RGF0YSksICJcbiIpKTsKICAgICAgICAgICAgIGJ1Y2tldC0+ZW5xdWV1ZSh0aHJlYWREYXRhKTsK
ICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNTY3LDcgKzU2
Nyw3IEBAIE5FVkVSX0lOTElORSBQYXJraW5nTG90OjpQYXJrUmVzdWx0IFBhcmtpbmdMb3Q6OnBh
cmtDb25kaXRpb25hbGx5SW1wbCgKICAgICBjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUm
IHRpbWVvdXQpCiB7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmco
Y3VycmVudFRocmVhZCgpLCAiOiBwYXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3Ry
aW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBwYXJraW5nLlxuIikpOwogICAgIAogICAgIFRocmVh
ZERhdGEqIG1lID0gbXlUaHJlYWREYXRhKCk7CiAgICAgbWUtPnRva2VuID0gMDsKQEAgLTY2MSw3
ICs2NjEsNyBAQCBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6UGFya1Jlc3VsdCBQYXJraW5nTG90
OjpwYXJrQ29uZGl0aW9uYWxseUltcGwoCiBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6VW5wYXJr
UmVzdWx0IFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKQogewogICAg
IGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwg
IjogdW5wYXJraW5nIG9uZS5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6
OmN1cnJlbnQoKSwgIjogdW5wYXJraW5nIG9uZS5cbiIpKTsKICAgICAKICAgICBVbnBhcmtSZXN1
bHQgcmVzdWx0OwogCkBAIC03MDYsNyArNzA2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgUGFya2lu
Z0xvdDo6dW5wYXJrT25lSW1wbCgKICAgICBjb25zdCBTY29wZWRMYW1iZGE8aW50cHRyX3QoUGFy
a2luZ0xvdDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJraW5nIG9u
ZSB0aGUgaGFyZCB3YXkuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpj
dXJyZW50KCksICI6IHVucGFya2luZyBvbmUgdGhlIGhhcmQgd2F5LlxuIikpOwogICAgIAogICAg
IFJlZlB0cjxUaHJlYWREYXRhPiB0aHJlYWREYXRhOwogICAgIGJvb2wgdGltZVRvQmVGYWlyID0g
ZmFsc2U7CkBAIC03NTEsNyArNzUxLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdM
b3Q6OnVucGFya0NvdW50KGNvbnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9T
dHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiB1bnBhcmtpbmcgY291bnQgPSAiLCBjb3VudCwgIiBm
cm9tICIsIFJhd1BvaW50ZXIoYWRkcmVzcyksICIuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9T
dHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IHVucGFya2luZyBjb3VudCA9ICIsIGNvdW50LCAi
IGZyb20gIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpKTsKICAgICAKICAgICBWZWN0b3I8
UmVmUHRyPFRocmVhZERhdGE+LCA4PiB0aHJlYWREYXRhczsKICAgICBkZXF1ZXVlKApAQCAtNzYx
LDcgKzc2MSw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQYXJraW5nTG90Ojp1bnBhcmtDb3Vu
dChjb25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3VuCiAgICAgICAgIEJ1Y2tldE1vZGU6
Oklnbm9yZUVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQsIGJvb2wpIHsK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJp
bmcoY3VycmVudFRocmVhZCgpLCAiOiBPYnNlcnZpbmcgZWxlbWVudCB3aXRoIGFkZHJlc3MgPSAi
LCBSYXdQb2ludGVyKGVsZW1lbnQtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogT2JzZXJ2aW5nIGVsZW1lbnQg
d2l0aCBhZGRyZXNzID0gIiwgUmF3UG9pbnRlcihlbGVtZW50LT5hZGRyZXNzKSwgIlxuIikpOwog
ICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmFkZHJlc3MgIT0gYWRkcmVzcykKICAgICAgICAgICAg
ICAgICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICAgICAgdGhyZWFkRGF0
YXMuYXBwZW5kKGVsZW1lbnQpOwpAQCAtNzczLDcgKzc3Myw3IEBAIE5FVkVSX0lOTElORSB1bnNp
Z25lZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25l
ZCBjb3VuCiAKICAgICBmb3IgKFJlZlB0cjxUaHJlYWREYXRhPiYgdGhyZWFkRGF0YSA6IHRocmVh
ZERhdGFzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0
cmluZyhjdXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyAiLCBSYXdQb2ludGVyKHRocmVhZERh
dGEuZ2V0KCkpLCAiIHdpdGggYWRkcmVzcyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJl
c3MpLCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVu
dCgpLCAiOiB1bnBhcmtpbmcgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLmdldCgpKSwgIiB3aXRo
IGFkZHJlc3MgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLT5hZGRyZXNzKSwgIlxuIikpOwogICAg
ICAgICBBU1NFUlQodGhyZWFkRGF0YS0+YWRkcmVzcyk7CiAgICAgICAgIHsKICAgICAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWREYXRhLT5wYXJraW5nTG9jayk7CkBAIC03ODMsNyAr
NzgzLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVucGFya0NvdW50KGNv
bnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICB9CiAKICAgICBpZiAodmVyYm9z
ZSkKLSAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRvbmUgdW5w
YXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgp
LCAiOiBkb25lIHVucGFya2luZy5cbiIpKTsKICAgICAKICAgICByZXR1cm4gdGhyZWFkRGF0YXMu
c2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0FkYXB0
ZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmgKaW5kZXggOTdhMjQz
YjkwYmNhYzAwYjJkN2VlY2RmMjdlMDQyNWZjNTJkNjdhNy4uYmVmOWNiYzJlMzQ3MGVkYjY5OTQz
Mjg0NDViZDllODAxN2I2MjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZl
TG9ja0FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5o
CkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAKICAg
ICB2b2lkIGxvY2soKQogICAgIHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJl
bnRUaHJlYWQoKTsKLSAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFk
JiBtZSA9IFRocmVhZDo6Y3VycmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsK
ICAgICAgICAgICAgIG1fcmVjdXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZWN1cnNpdmVMb2NrQWRhcHRlciB7CiAg
ICAgICAgIG1fbG9jay5sb2NrKCk7CiAgICAgICAgIEFTU0VSVCghbV9vd25lcik7CiAgICAgICAg
IEFTU0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAg
ICAgbV9vd25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1cnNpb25Db3VudCA9IDE7CiAgICAgfQog
ICAgIApAQCAtNTUsMTQgKzU1LDE0IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAg
ICB7CiAgICAgICAgIGlmICgtLW1fcmVjdXJzaW9uQ291bnQpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fb3duZXIgPSAwOworICAgICAgICBtX293bmVyID0gbnVsbHB0cjsKICAgICAg
ICAgbV9sb2NrLnVubG9jaygpOwogICAgIH0KICAgICAKICAgICBib29sIHRyeUxvY2soKQogICAg
IHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAg
ICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9IFRocmVhZDo6Y3Vy
cmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAgICAgICAgIG1fcmVj
dXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC03
Miw3ICs3Miw3IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAgICAgCiAgICAg
ICAgIEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VSVCghbV9yZWN1cnNpb25Db3VudCk7
Ci0gICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9vd25lciA9ICZtZTsKICAgICAgICAg
bV9yZWN1cnNpb25Db3VudCA9IDE7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTgz
LDcgKzgzLDcgQEAgY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgewogICAgIH0KICAgICAKIHBy
aXZhdGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX293bmVyIHsgMCB9OworICAgIFRocmVhZCog
bV9vd25lciB7IG51bGxwdHIgfTsgLy8gVXNlIFRocmVhZCogaW5zdGVhZCBvZiBSZWZQdHI8VGhy
ZWFkPiBzaW5jZSBvd25lciB0aHJlYWQgaXMgYWx3YXlzIGFsaXZlIHdoaWxlIG1fb253ZXIgaXMg
ZXQuCiAgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsKICAgICBMb2NrVHlwZSBt
X2xvY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMGJlNWExMGVkMGY3MjVmOGQzZTE3ZTFj
ZjE5YWIyMDlhOTAwYTgyOS4uYzU2ZjE1NmRkOWNiZWM0OTk5Njk3YzZkNTQ5ZTg3NTZmNzNiMjlm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgcW9zX2NsYXNzX3QgVGhy
ZWFkOjphZGp1c3RlZFFPU0NsYXNzKHFvc19jbGFzc190IG9yaWdpbmFsQ2xhc3MpCiAKIHZvaWQg
VGhyZWFkOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1f
aWQpOworICAgIG91dC5wcmludCgiVGhyZWFkOiIsIFJhd1BvaW50ZXIodGhpcykpOwogfQogCiAj
aWYgIUhBVkUoRkFTVF9UTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcu
aCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGVlMTMwM2ExOTFiMDlkNGVjOWRk
Yzg3Y2NjODgxNTQyOTdmYTIzMDYuLjlkNTk1Mzc5NmVkNTgyNjg0NzY3OTBjMjAxNGFmZTkwNmM4
OTRlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC04MCw3ICs4MCw5IEBAIGNsYXNzIFRocmVhZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBmcmllbmQgY2xhc3MgVGhy
ZWFkR3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogICAgIGZyaWVu
ZCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgT1Mo
V0lORE9XUykKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yVGhyZWFk
Q29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIH5UaHJlYWQoKTsKIApAQCAtOTEsMTIgKzkzLDE2IEBAIGNsYXNzIFRocmVhZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAvLyBSZXR1cm5zIFRocmVh
ZCBvYmplY3QuCiAgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCisjaWYgT1MoV0lORE9X
UykKICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1
bCBpZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFk
cy4gQXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJl
YWRJZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQogICAgIC8vIHRoYXQgdGhlIHRocmVhZCBpbmZv
cm1hdGlvbiBpcyBhbGl2ZS4gV2hpbGUgVGhyZWFkOjpjdXJyZW50KCkgaXMgbm90IHNhZmUgaWYg
aXQgaXMgY2FsbGVkCiAgICAgLy8gZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3RoZXIgVExT
IGRhdGEsIGN1cnJlbnRJRCgpIGFsd2F5cyByZXR1cm5zIG1lYW5pbmdmdWwgdGhyZWFkIElELgog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQo
KTsKIAorICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Cisj
ZW5kaWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNoYW5nZVByaW9yaXR5KGludCk7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaCgpOwpAQCAtMTM3LDE2ICsxNDMsMTQgQEAgY2xh
c3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIAot
ICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0KICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVGhyZWFkJiB0aHJlYWQpCiAgICAgewotICAgICAgICByZXR1
cm4gaWQoKSA9PSB0aHJlYWQuaWQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMgPT0gJnRocmVhZDsK
ICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGhyZWFkJiB0aHJlYWQpCiAgICAg
ewotICAgICAgICByZXR1cm4gaWQoKSAhPSB0aHJlYWQuaWQoKTsKKyAgICAgICAgcmV0dXJuIHRo
aXMgIT0gJnRocmVhZDsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGxhdGZv
cm1UaHJlYWRpbmcoKTsKQEAgLTI4MCw3ICsyODQsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAKICAgICAvLyBXb3JkTG9jayAmIExvY2sg
cmVseSBvbiBUaHJlYWRTcGVjaWZpYy4gQnV0IFRocmVhZCBvYmplY3QgY2FuIGJlIGRlc3Ryb3ll
ZCBldmVuIGFmdGVyIFRocmVhZFNwZWNpZmljIHRoaW5ncyBhcmUgZGVzdHJveWVkLgogICAgIHN0
ZDo6bXV0ZXggbV9tdXRleDsKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAwIH07CiAgICAg
Sm9pbmFibGVTdGF0ZSBtX2pvaW5hYmxlU3RhdGUgeyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9p
c1NodXR0aW5nRG93biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwpA
QCAtMjg4LDcgKzI5MSw5IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxUaHJlYWQ+IHsKICAgICBTdGFja0JvdW5kcyBtX3N0YWNrIHsgU3RhY2tCb3VuZHM6OmVt
cHR5Qm91bmRzKCkgfTsKICAgICBWZWN0b3I8c3RkOjp3ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1f
dGhyZWFkR3JvdXBzOwogICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxlOwotI2lmIE9T
KERBUldJTikKKyNpZiBPUyhXSU5ET1dTKQorICAgIFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAg
fTsKKyNlbGlmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwog
I2VsaWYgVVNFKFBUSFJFQURTKQogICAgIFBsYXRmb3JtUmVnaXN0ZXJzKiBtX3BsYXRmb3JtUmVn
aXN0ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMzA3LDExICszMTIsNiBAQCBjbGFzcyBUaHJlYWQgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgdm9pZCogbV9zYXZlZExh
c3RTdGFja1RvcDsKIH07CiAKLWlubGluZSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQo
KQotewotICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnRJRCgpOwotfQotCiBpbmxpbmUgVGhyZWFk
KiBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQogewogI2lmICFIQVZFKEZBU1RfVExTKQpAQCAt
MzQ1LDExICszNDUsMTAgQEAgaW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdU
Rjo6VGhyZWFkOwotdXNpbmcgV1RGOjpjdXJyZW50VGhyZWFkOwogCiAjaWYgT1MoV0lORE9XUykK
K3VzaW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwog
dXNpbmcgV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IDZlODhhYTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZh
ZGMzMGM2ZDIuLjRhY2UyOGYxZjU5Zjg4Njk3MDkxMDA4YTBhMGIxMjAxMGM5NzYyYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKIAogbmFtZXNw
YWNlIFdURiB7CiAKLXVzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFRo
cmVhZEZ1bmN0aW9uID0gdm9pZCAoKikodm9pZCogYXJndW1lbnQpOwogCiAjaWYgVVNFKFBUSFJF
QURTKQpAQCAtNTMsNiArNTIsNyBAQCB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJl
YWRfdDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0
Zm9ybUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90OwogI2VsaWYgT1MoV0lORE9XUykKK3VzaW5n
IFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxl
ID0gSEFORExFOwogc3RydWN0IFBsYXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04g
bV9pbnRlcm5hbE11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRo
cmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDgz
YjlkNTA5OTUyNWIwNmI2MGU5MTEwM2RkZjUyNjQ5YmE5MDgwM2MuLjJjNTYyZTY2OWQwYTE3MzU1
ODdiNjY0MzIzZWFmMTM2ODhkMTYyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5j
cHAKQEAgLTI4MCw5ICsyODAsOSBAQCBpbnQgVGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbigpCiAg
ICAgaW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pvaW4oaGFuZGxlLCAwKTsKIAogICAgIGlmIChq
b2luUmVzdWx0ID09IEVERUFETEspCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmll
ciAldSB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOwor
ICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0
cnlpbmcgdG8gcXVpdCIsIHRoaXMpOwogICAgIGVsc2UgaWYgKGpvaW5SZXN1bHQpCi0gICAgICAg
IExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5c
biIsIG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJl
IGpvaW5lZC5cbiIsIHRoaXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2tlcihtX211dGV4KTsKICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsK
QEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwogICAgIGludCBkZXRhY2hSZXN1bHQg
PSBwdGhyZWFkX2RldGFjaChtX2hhbmRsZSk7CiAgICAgaWYgKGRldGFjaFJlc3VsdCkKLSAgICAg
ICAgTE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyB1bmFibGUgdG8gYmUgZGV0YWNo
ZWRcbiIsIG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRv
IGJlIGRldGFjaGVkXG4iLCB0aGlzKTsKIAogICAgIGlmICghaGFzRXhpdGVkKCkpCiAgICAgICAg
IGRpZEJlY29tZURldGFjaGVkKCk7CkBAIC0zMTcsMTEgKzMxNyw2IEBAIFRocmVhZCYgVGhyZWFk
Ojppbml0aWFsaXplQ3VycmVudFRMUygpCiAgICAgcmV0dXJuIGluaXRpYWxpemVUTFMoV1RGTW92
ZSh0aHJlYWQpKTsKIH0KIAotVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCi17
Ci0gICAgcmV0dXJuIGN1cnJlbnQoKS5pZCgpOwotfQotCiBib29sIFRocmVhZDo6c2lnbmFsKGlu
dCBzaWduYWxOdW1iZXIpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tl
cihtX211dGV4KTsKQEAgLTMzMyw3ICszMjgsNyBAQCBib29sIFRocmVhZDo6c2lnbmFsKGludCBz
aWduYWxOdW1iZXIpCiAKIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9pZCwg
UGxhdGZvcm1TdXNwZW5kRXJyb3I+CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KGlkKCkgIT0gY3VycmVudFRocmVhZCgpLCAiV2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuZGluZyB0
aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRSh0aGlzICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1c3Bl
bmRpbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICAvLyBEdXJpbmcgc3VzcGVu
ZCwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9tIHRoZSBvdGhl
ciB0aHJlYWRzLgogICAgIC8vIFdlIHVzZSBnbG9iYWwgbG9jayBpbnN0ZWFkIG9mIHBlciB0aHJl
YWQgbG9jay4KICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNhc2UsIHRoZXJlIGFyZSB0
aHJlYWRzIEEgYW5kIEIuCkBAIC00NTEsMTMgKzQ0Niw5IEBAIHZvaWQgVGhyZWFkOjplc3RhYmxp
c2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCBoYW5kbGUpCiB7CiAgICAgc3RkOjps
b2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBtX2hhbmRsZSA9IGhh
bmRsZTsKLSAgICBpZiAoIW1faWQpIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6YXRvbWljPFRocmVh
ZElkZW50aWZpZXI+IHByb3ZpZGVyIHsgMCB9OwotICAgICAgICBtX2lkID0gKytwcm92aWRlcjsK
ICNpZiBPUyhEQVJXSU4pCi0gICAgICAgIG1fcGxhdGZvcm1UaHJlYWQgPSBwdGhyZWFkX21hY2hf
dGhyZWFkX25wKGhhbmRsZSk7CisgICAgbV9wbGF0Zm9ybVRocmVhZCA9IHB0aHJlYWRfbWFjaF90
aHJlYWRfbnAoaGFuZGxlKTsKICNlbmRpZgotICAgIH0KIH0KIAogI2lmICFIQVZFKEZBU1RfVExT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggYmVjMGQzNDNkYWU1ZWVkNDFmOTUxYjNlOTZi
ZGZmZjA1NjU3ZDgxNy4uYTgxNTkwNDA2OTY3ZDZlODU2NjkxNTM3ZTIwY2M1ZTgxZTFiOWMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgaW50IFRocmVhZDo6
d2FpdEZvckNvbXBsZXRpb24oKQogCiAgICAgRFdPUkQgam9pblJlc3VsdCA9IFdhaXRGb3JTaW5n
bGVPYmplY3QoaGFuZGxlLCBJTkZJTklURSk7CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gV0FJVF9G
QUlMRUQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQg
dG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0dfRVJS
T1IoIlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIs
IHRoaXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4
KTsKICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKIAogYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAt
PiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsKLSAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX01FU1NBR0UoaWQoKSAhPSBjdXJyZW50VGhyZWFkKCksICJXZSBkbyBub3Qgc3Vw
cG9ydCBzdXNwZW5kaW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7CisgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMgIT0gJlRocmVhZDo6Y3VycmVudCgpLCAiV2UgZG8g
bm90IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOwogICAg
IExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKICAgICBEV09SRCByZXN1bHQg
PSBTdXNwZW5kVGhyZWFkKG1faGFuZGxlKTsKICAgICBpZiAocmVzdWx0ICE9IChEV09SRCktMSkK
QEAgLTI5Myw3ICsyOTMsNyBAQCBUaHJlYWQqIFRocmVhZDo6Y3VycmVudER5aW5nKCkKICAgICBB
U1NFUlQoc19rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKICAgICAvLyBBZnRlciBG
TFMgaXMgZGVzdHJveWVkLCB0aGlzIG1hcCBvZmZlcnMgdGhlIHZhbHVlIHVudGlsIHRoZSBzZWNv
bmQgdGhyZWFkIGV4aXQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHN0ZDo6bG9ja19ndWFyZDxz
dGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgcmV0dXJuIHRocmVhZE1h
cCgpLmdldChjdXJyZW50VGhyZWFkKCkpOworICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoY3Vy
cmVudElEKCkpOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2RlIG9u
Y2UgPHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL01haW5U
aHJlYWRNYWMubW0KaW5kZXggMzFkODE0YmY3YTdiOTY1Nzk1MmU4NWY4ZGZkNjQ2MDg4ZTNlZDcy
NS4uMTQyMTU5MGJjZTdkMzVlYWEzMDdhZjY4Yjk3MGU5NWM2MmJkOTRkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KKysrIGIvU291cmNlL1dURi93dGYv
bWFjL01haW5UaHJlYWRNYWMubW0KQEAgLTY2LDggKzY2LDggQEAgc3RhdGljIHB0aHJlYWRfdCBt
YWluVGhyZWFkUHRocmVhZDsKIHN0YXRpYyBOU1RocmVhZCogbWFpblRocmVhZE5TVGhyZWFkOwog
CiAjaWYgVVNFKFdFQl9USFJFQUQpCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzQXBwbGljYXRp
b25VSVRocmVhZElkZW50aWZpZXI7Ci1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzV2ViVGhyZWFk
SWRlbnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIHNBcHBsaWNhdGlvblVJVGhyZWFkOworc3RhdGlj
IFRocmVhZCogc1dlYlRocmVhZDsKICNlbmRpZgogCiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFk
UGxhdGZvcm0oKQpAQCAtMTczLDE2ICsxNzMsMTAgQEAgYm9vbCBpc1dlYlRocmVhZCgpCiAgICAg
cmV0dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5UaHJlYWRQdGhyZWFkKTsK
IH0KIAotdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKQordm9p
ZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpCiB7CiAgICAgQVNTRVJUKHB0aHJlYWRf
bWFpbl9ucCgpKTsKLSAgICBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50
VGhyZWFkKCk7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZVdlYlRocmVhZElkZW50aWZpZXIoKQotewot
ICAgIEFTU0VSVCghcHRocmVhZF9tYWluX25wKCkpOwotICAgIHNXZWJUaHJlYWRJZGVudGlmaWVy
ID0gY3VycmVudFRocmVhZCgpOworICAgIHNBcHBsaWNhdGlvblVJVGhyZWFkID0gJlRocmVhZDo6
Y3VycmVudCgpOwogfQogCiB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCkBAIC0x
OTIsMTYgKzE4NiwxOCBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCiAgICAg
bWFpblRocmVhZEVzdGFibGlzaGVkQXNQdGhyZWFkTWFpbiA9IGZhbHNlOwogICAgIG1haW5UaHJl
YWRQdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CiAgICAgbWFpblRocmVhZE5TVGhyZWFkID0gW1tO
U1RocmVhZCBjdXJyZW50VGhyZWFkXSByZXRhaW5dOworCisgICAgc1dlYlRocmVhZCA9ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKIH0KIAotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJl
YWQoVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxE
YXRhRm9yVGhyZWFkKFRocmVhZCYgdGhyZWFkKQogewotICAgIFRocmVhZElkZW50aWZpZXIgY3Vy
cmVudFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIGlmICh0aHJlYWRJZCA9PSBjdXJy
ZW50VGhyZWFkSWQpCisgICAgVGhyZWFkJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJyZW50
KCk7CisgICAgaWYgKHRocmVhZCA9PSBjdXJyZW50VGhyZWFkKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmICh0aHJlYWRJZCA9PSBzV2ViVGhyZWFkSWRlbnRpZmllciB8fCB0aHJlYWRJ
ZCA9PSBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiAoY3Vy
cmVudFRocmVhZElkID09IHNXZWJUaHJlYWRJZGVudGlmaWVyIHx8IGN1cnJlbnRUaHJlYWRJZCA9
PSBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpICYmIHdlYlRocmVhZElzVW5pbml0aWFs
aXplZE9yTG9ja2VkT3JEaXNhYmxlZCgpOworICAgIGlmICgmdGhyZWFkID09IHNXZWJUaHJlYWQg
fHwgJnRocmVhZCA9PSBzQXBwbGljYXRpb25VSVRocmVhZCkKKyAgICAgICAgcmV0dXJuICgmY3Vy
cmVudFRocmVhZCA9PSBzV2ViVGhyZWFkIHx8ICZjdXJyZW50VGhyZWFkID09IHNBcHBsaWNhdGlv
blVJVGhyZWFkKSAmJiB3ZWJUaHJlYWRJc1VuaW5pdGlhbGl6ZWRPckxvY2tlZE9yRGlzYWJsZWQo
KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTNmMzEyMTU2YzY0OGZm
MjUyYTg2Y2I0ZWRlZGE2NGM4MWU5N2YwMi4uNWRlNjlhODJkNDhlMDQ5NTFjYTA4ZjZjYTYzZTM5
ZWZhMWY0NmRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTM1LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIElEQkFjdGl2ZURPTU9iamVjdCA6IHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgewogcHVibGljOgotICAgIFRocmVhZElkZW50aWZpZXIgb3JpZ2luVGhyZWFkSUQoKSBjb25z
dCB7IHJldHVybiBtX29yaWdpblRocmVhZElEOyB9CisgICAgVGhyZWFkJiBvcmlnaW5UaHJlYWQo
KSBjb25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZC5nZXQoKTsgfQogCiAgICAgdm9pZCBjb250
ZXh0RGVzdHJveWVkKCkgZmluYWwgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9vcmlnaW5UaHJlYWQuZ2V0KCkpOwogCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dExvY2spOwogICAgICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRl
eHREZXN0cm95ZWQoKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0
IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUuLi4gUGFyYW1ldGVycywgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZvaWQgcGVy
Zm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoVCYgb2JqZWN0LCB2b2lkIChUOjoqbWV0aG9kKShQ
YXJhbWV0ZXJzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG9yaWdpblRocmVhZElEKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZElEKCkpOworICAg
ICAgICBBU1NFUlQob3JpZ2luVGhyZWFkKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZCgpKTsKIAot
ICAgICAgICBpZiAob2JqZWN0Lm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7
CisgICAgICAgIGlmIChvYmplY3Qub3JpZ2luVGhyZWFkKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkp
IHsKICAgICAgICAgICAgIChvYmplY3QuKm1ldGhvZCkoYXJndW1lbnRzLi4uKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBJREJBY3RpdmVE
T01PYmplY3QgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIAogICAgIHZvaWQgY2FsbEZ1bmN0
aW9uT25PcmlnaW5UaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAg
IHsKLSAgICAgICAgaWYgKG9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7Cisg
ICAgICAgIGlmIChvcmlnaW5UaHJlYWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSkgewogICAgICAg
ICAgICAgZnVuY3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODcs
NyArODcsNyBAQCBjbGFzcyBJREJBY3RpdmVET01PYmplY3QgOiBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX29yaWdpblRo
cmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9vcmlnaW5UaHJl
YWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogICAgIExvY2sgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0TG9jazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCmluZGV4IDYyZmExNTFjYWIwOTdiZjQ5ZGUzMTExYzczOTBjNGExZTdlMDRjZWYu
LmZjMDZiMzEzMDMzM2U3ODQ2M2VkNjNjNGU5NDBjNTU2NDg5MmEwMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtNjEsNyArNjEsNyBA
QCBJREJDdXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQk9i
amVjdFN0b3JlJiBvYmplY3RTdG9yZSwgYwogICAgICwgbV9pbmZvKGluZm8pCiAgICAgLCBtX3Nv
dXJjZSgmb2JqZWN0U3RvcmUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZl
Y3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3Rv
cmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgc3Vz
cGVuZElmTmVlZGVkKCk7CiB9CkBAIC03MSwxOSArNzEsMTkgQEAgSURCQ3Vyc29yOjpJREJDdXJz
b3IoSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElE
QkN1cnMKICAgICAsIG1faW5mbyhpbmZvKQogICAgICwgbV9zb3VyY2UoJmluZGV4KQogewotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBJREJD
dXJzb3I6On5JREJDdXJzb3IoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0
b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIH0KIAogYm9v
bCBJREJDdXJzb3I6OnNvdXJjZXNEZWxldGVkKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBl
ZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSk7CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZSwKICAgICAgICAgW10g
KGNvbnN0IFJlZlB0cjxJREJPYmplY3RTdG9yZT4mIG9iamVjdFN0b3JlKSB7IHJldHVybiBvYmpl
Y3RTdG9yZS0+aXNEZWxldGVkKCk7IH0sCkBAIC0xMDEsMTQgKzEwMSwxNCBAQCBJREJPYmplY3RT
dG9yZSYgSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpIGNvbnN0CiAKIElEQlRyYW5z
YWN0aW9uJiBJREJDdXJzb3I6OnRyYW5zYWN0aW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSk7CiAgICAgcmV0dXJuIGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24o
KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJDdXJzb3I6OnVwZGF0ZSIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0
aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3Jl
KCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChz
b3VyY2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ3VwZGF0ZScgb24gJ0lEQkN1
cnNvcic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMg
YmVlbiBkZWxldGVkLiIpIH07CkBAIC0xNDksNyArMTQ5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQogRXhjZXB0aW9uT3I8dm9pZD4gSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGNvdW50
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmFkdmFuY2UiKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24o
KS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkBAIC0yMzQsNyArMjM0LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlY1N0
YXRlLCBKU1ZhbHVlIGtleVYKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QkN1cnNvcjo6Y29udGludWVGdW5jdGlvbiAodG8ga2V5ICVzKSIsIGtleS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3Rp
dmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUo
KS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFt
X3JlcXVlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OwpAQCAtMjY4LDcgKzI2OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGlu
dWVGdW5jdGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAKIHZvaWQgSURCQ3Vyc29yOjp1bmNo
ZWNrZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgY291bnQp
CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgp
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigp
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgKyttX291dHN0YW5kaW5nUmVxdWVz
dENvdW50OwogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0
ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBjb3VudCkKIAogdm9p
ZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5
LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5KQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVj
dGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgp
KTsKIAogICAgICsrbV9vdXRzdGFuZGluZ1JlcXVlc3RDb3VudDsKIApAQCAtMjg5LDcgKzI4OSw3
IEBAIHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURh
dGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYKIEV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJREJS
ZXF1ZXN0Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKHNvdXJjZXNEZWxldGVkKCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQg
dG8gZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURCQ3Vyc29yJzogVGhlIGN1cnNvcidzIHNvdXJjZSBv
ciBlZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTMyMCw3
ICszMjAsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNv
cjo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZQogdm9pZCBJREJDdXJzb3I6OnNldEdl
dFJlc3VsdChJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3Vs
dCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJy
ZW50IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmlu
ZygwLCAxMDApLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVj
dFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAg
IGF1dG8qIGNvbnRleHQgPSByZXF1ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBp
ZiAoIWNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKaW5kZXggOGY2ZTc3NWRhMmRjNzJmMTYwNTg0YTViYzgyZGFlNjdlNjE5MjQ0
My4uYTAwOGRkZjYzZjhkNDdmNTcwOTU5NzJkNzU4NWQyNWNmYTU0ZDQ4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCBJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgSURCQ2xpZW50OjpJREJDb25uZWN0aQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFi
YXNlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAoIW1fY2xvc2VkSW5TZXJ2ZXIpCiAgICAgICAgIG1fY29ubmVjdGlvblByb3h5LT5kYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQoKnRoaXMpOwpAQCAtNzQsNyArNzQsNyBAQCBJREJEYXRhYmFz
ZTo6fklEQkRhdGFiYXNlKCkKIAogYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElE
KCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
b3JpZ2luVGhyZWFkKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKIAogICAgIGlmIChtX2Nsb3NlZElu
U2VydmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NywxOSArODcsMTkgQEAgYm9vbCBJ
REJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogY29uc3QgU3RyaW5nIElE
QkRhdGFiYXNlOjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9CiAKIHVpbnQ2NF90IElE
QkRhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBv
cmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUo
KTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVOYW1lcygpKQpAQCAt
MTEwLDcgKzExMCw3IEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0
U3RvcmVOYW1lcygpIGNvbnN0CiAKIHZvaWQgSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3Jl
KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgIEFTU0VSVChtX2luZm8uaGFzT2JqZWN0U3Rv
cmUob2JqZWN0U3RvcmUuaW5mbygpLm5hbWUoKSkpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9p
ZCBJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0
b3JlLCBjb25zdCBTdHJpbmcmIG4KIAogdm9pZCBJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoSURC
SW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbik7CiAgICAgQVNTRVJUKG1faW5mby5oYXNPYmplY3RTdG9yZShpbmRleC5vYmplY3RT
dG9yZSgpLmluZm8oKS5uYW1lKCkpKTsKICAgICBBU1NFUlQobV9pbmZvLmluZm9Gb3JFeGlzdGlu
Z09iamVjdFN0b3JlKGluZGV4Lm9iamVjdFN0b3JlKCkuaW5mbygpLm5hbWUoKSktPmhhc0luZGV4
KGluZGV4LmluZm8oKS5uYW1lKCkpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCT2JqZWN0U3RvcmU+PiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUgLSAoJXMgJXMpIiwgbV9pbmZvLm5hbWUoKS51dGY4KCkuZGF0YSgpLCBuYW1lLnV0
ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkp
OwogICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIGlmICghbV92ZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24pCkBAIC0xNjUsNyArMTY1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlRyYW5zYWN0aW9uPj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFN0cmluZ09yVmVjdG9yT2ZT
dHJpbmcKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uIik7
CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAo
bV9jbG9zZVBlbmRpbmcpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAndHJhbnNhY3Rpb24nIG9uICdJ
REJEYXRhYmFzZSc6IFRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3NpbmcuIikgfTsKQEAg
LTIxNSw3ICsyMTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJEYXRhYmFzZTo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdkZWxldGVPYmplY3RTdG9yZScgb24g
J0lEQkRhdGFiYXNlJzogVGhlIGRhdGFiYXNlIGlzIG5vdCBydW5uaW5nIGEgdmVyc2lvbiBjaGFu
Z2UgdHJhbnNhY3Rpb24uIikgfTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIElEQkRhdGFiYXNl
OjpjbG9zZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjbG9zZSAtICUi
IFBSSXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghbV9jbG9zZVBlbmRpbmcp
IHsKICAgICAgICAgbV9jbG9zZVBlbmRpbmcgPSB0cnVlOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZv
aWQgSURCRGF0YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoY29uc3QgSURCRXJyb3ImIGVy
cm9yKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y29ubmVjdGlvblRvU2Vy
dmVyTG9zdCAtICUiIFBSSXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fY2xvc2VQ
ZW5kaW5nID0gdHJ1ZTsKICAgICBtX2Nsb3NlZEluU2VydmVyID0gdHJ1ZTsKQEAgLTI4NCw3ICsy
ODQsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIoKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyIC0gJSIgUFJJdTY0
LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fY2xvc2VkSW5TZXJ2ZXIpCiAgICAg
ICAgIHJldHVybjsKQEAgLTMwMSwxMyArMzAxLDEzIEBAIHZvaWQgSURCRGF0YWJhc2U6Om1heWJl
Q2xvc2VJblNlcnZlcigpCiAKIGNvbnN0IGNoYXIqIElEQkRhdGFiYXNlOjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQo
KSk7CiAgICAgcmV0dXJuICJJREJEYXRhYmFzZSI7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6OmNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHZhbHVlIHdp
bGwgc29tZXRpbWVzIGJlIGZhbHNlIHdoZW4gZGF0YWJhc2Ugb3BlcmF0aW9ucyBhcmUgYWN0dWFs
bHkgaW4gcHJvZ3Jlc3MuCiAgICAgLy8gU3VjaCBkYXRhYmFzZSBvcGVyYXRpb25zIGRvIG5vdCB5
ZXQgZXhpc3QuCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6c3RvcCgpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpzdG9wIC0gJSIgUFJJdTY0LCBtX2Rh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKIApAQCAt
MzQxLDcgKzM0MSw3IEBAIFJlZjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnN0YXJ0VmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0CiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiAlcyIsIGlu
Zm8uaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQoaW5mby5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKTsKICAgICBBU1NFUlQoIW1fY2xvc2VQZW5kaW5nKTsK
QEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9u
KElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
RGF0YWJhc2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1f
dmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNsaWVudCB0byBo
YXZlIGFib3J0ZWQgYSB0cmFuc2FjdGlvbiBiZWZvcmUgdGhlIHNlcnZlciByZXBsaWVzIGJhY2sg
dGhhdCBpdCBoYXMgc3RhcnRlZC4KICAgICBpZiAobV9hYm9ydGluZ1RyYW5zYWN0aW9ucy5jb250
YWlucyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSkKQEAgLTM3Miw3ICszNzIsNyBA
QCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbENv
bW1pdFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBv
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBhdXRvIHJlZlRyYW5zYWN0aW9uID0gbV9hY3RpdmVUcmFu
c2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKICAgICBBU1NF
UlQocmVmVHJhbnNhY3Rpb24pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSURCRGF0YWJhc2U6
OmRpZENvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZENvbW1pdFRyYW5zYWN0aW9uICVzIiwg
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gJnRyYW5zYWN0aW9uKQogICAgICAg
ICBtX2luZm8uc2V0VmVyc2lvbih0cmFuc2FjdGlvbi5pbmZvKCkubmV3VmVyc2lvbigpKTsKQEAg
LTM5NSw3ICszOTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbihJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRh
dGFiYXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byByZWZUcmFuc2FjdGlvbiA9
IG1fYWN0aXZlVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIo
KSk7CiAgICAgaWYgKCFyZWZUcmFuc2FjdGlvbikKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIElE
QkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
bikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rp
b24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKIAogICAgIGlmICh0cmFuc2FjdGlvbi5pc1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAgICBB
U1NFUlQodHJhbnNhY3Rpb24ub3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CkBAIC00MzEsNyArNDMx
LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKElEQlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJh
c2U6OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uID09ICZ0cmFuc2FjdGlvbikKICAgICAgICAgbV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gPSBudWxscHRyOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIHZvaWQgSURCRGF0YWJhc2U6
OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlCiAgICAgdWludDY0X3QgY3VycmVudFZlcnNpb24gPSBtX2luZm8udmVyc2lvbigpOwog
ICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCAt
IGN1cnJlbnQgdmVyc2lvbiAlIiBQUkl1NjQgIiwgcmVxdWVzdGVkIHZlcnNpb24gJSIgUFJJdTY0
ICIsIGNvbm5lY3Rpb24gJSIgUFJJdTY0ICIgKCVwKSIsIGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0
ZWRWZXJzaW9uLCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMpOwogCi0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgfHwgbV9jbG9zZVBlbmRpbmcpIHsKICAgICAgICAgY29ubmVjdGlv
blByb3h5KCkuZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChtX2RhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIElE
QkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZQogdm9pZCBJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYg
ZXZlbnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50
ICglIiBQUkl1NjQgIikgKCVwKSIsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdGhp
cyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2
b2lkIElEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIAogdm9pZCBJREJE
YXRhYmFzZTo6ZGlkQ3JlYXRlSW5kZXhJbmZvKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBhdXRvKiBv
YmplY3RTdG9yZSA9IG1faW5mby5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvLm9iamVj
dFN0b3JlSWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUpOwpAQCAtNDk3LDcg
KzQ5Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpZENyZWF0ZUluZGV4SW5mbyhjb25zdCBJREJJ
bmRleEluZm8mIGluZm8pCiAKIHZvaWQgSURCRGF0YWJhc2U6OmRpZERlbGV0ZUluZGV4SW5mbyhj
b25zdCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0ZvckV4
aXN0aW5nT2JqZWN0U3RvcmUoaW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAgQVNT
RVJUKG9iamVjdFN0b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmNwcAppbmRleCA0OTdkZWMxYTQwZmQwZDdjNmY1MTEyOWI1MTgxZGYyZjFlODczM2Mw
Li45ZTM1ZjkwZWQ4ZDQ0NTRhNjAzMTVkNGQwOTQ5OTM1ZWIwZWY2ZWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC00OCwxNCArNDgsMTQg
QEAgSURCSW5kZXg6OklEQkluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IElEQkluZGV4SW5mbyYgaW5mbywgSUQKICAgICAsIG1fb3JpZ2luYWxJbmZvKGluZm8pCiAg
ICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUu
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIHN1c3BlbmRJ
Zk5lZWRlZCgpOwogfQogCiBJREJJbmRleDo6fklEQkluZGV4KCkKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiB9CiAKIGNv
bnN0IGNoYXIqIElEQkluZGV4OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTc1LDEz
ICs3NSwxMyBAQCBib29sIElEQkluZGV4OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBj
b25zdCBTdHJpbmcmIElEQkluZGV4OjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJu
IG1faW5mby5uYW1lKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkluZGV4OjpzZXROYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHNldCBwcm9wZXJ0eSAnbmFtZScgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IGhhcyBi
ZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTEwOSwzMSArMTA5LDMxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IElEQkluZGV4OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogSURCT2JqZWN0U3RvcmUm
IElEQkluZGV4OjpvYmplY3RTdG9yZSgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX29iamVjdFN0
b3JlOwogfQogCiBjb25zdCBJREJLZXlQYXRoJiBJREJJbmRleDo6a2V5UGF0aCgpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkKCkpOwogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCiBib29sIElEQkluZGV4
Ojp1bmlxdWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9pbmZvLnVuaXF1ZSgpOwog
fQogCiBib29sIElEQkluZGV4OjptdWx0aUVudHJ5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0
dXJuIG1faW5mby5tdWx0aUVudHJ5KCk7CiB9CiAKIHZvaWQgSURCSW5kZXg6OnJvbGxiYWNrSW5m
b0ZvclZlcnNpb25DaGFuZ2VBYm9ydCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gT25seSByb2xsYmFj
ayB0byB0aGUgb3JpZ2luYWwgaW5mbyBpZiB0aGlzIGluZGV4IHN0aWxsIGV4aXN0cyBpbiB0aGUg
cm9sbGVkLWJhY2sgZGF0YWJhc2UgaW5mby4KICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5pbmZvKCkuaW5mb0ZvckV4aXN0
aW5nT2JqZWN0U3RvcmUobV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdl
QWJvcnQoKQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNv
cihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3JEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1
cnNvciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFu
c2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS5pc0Rl
bGV0ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBB
U0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdvcGVuQ3Vyc29yJyBvbiAnSURCSW5kZXgn
OiBUaGUgaW5kZXggb3IgaXRzIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBA
IC0xNzMsNyArMTczLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6
b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmEKIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUs
IEpTVmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUu
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGF1dG8ga2V5
UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKGtleVJh
bmdlLmhhc0V4Y2VwdGlvbigpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpT
VmFsdWUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5LZXlDdXJz
b3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5L
ZXlDdXJzb3IiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUu
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUu
aXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1cnNvcicgb24gJ0lE
QkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4i
KSB9OwpAQCAtMjI3LDcgKzIyNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmNvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAo
bV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhl
Y3V0ZSAnY291bnQnIG9uICdJREJJbmRleCc6IFRoZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0b3Jl
IGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFs
dWUga2V5KQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldChF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0JyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggb3IgaXRz
IG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yOTcsNyArMjk3LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0S2V5KEV4ZWNTdGF0ZSYg
ZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJJbmRleDo6ZG9HZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYgcmFuZ2UpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFi
YXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0
b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQklu
ZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9
OwpAQCAtMzE1LDcgKzMxNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLCiBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUs
IFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9v
YmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAg
ICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVk
IHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmpl
Y3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMzM4LDcgKzMzOCw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSlNWYWx1ZSBrZXksCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4
OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJh
bmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCSW5kZXg6OmdldEFsbEtleXMiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0
aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8
IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxs
S2V5cycgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJl
ZW4gZGVsZXRlZC4iKSB9OwpAQCAtMzYwLDcgKzM2MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFs
dWUKIAogdm9pZCBJREJJbmRleDo6bWFya0FzRGVsZXRlZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RT
dG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgQVNT
RVJUKCFtX2RlbGV0ZWQpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMDhhNzg0
YmEyNDIyMzBlNjM1MzcyNTYwMDEzMWJlNjFiMzJiYmQwZC4uZDQ1MGQ3ODM3NTNmM2MzNmFjMGQ1
NjhlMDRlZTRlYmUzMTk3MjQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjEsMTQgKzYxLDE0IEBAIElEQk9iamVj
dFN0b3JlOjpJREJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBJREJPYmplY3RTCiAgICAgLCBtX29yaWdpbmFsSW5mbyhpbmZvKQogICAgICwgbV90cmFu
c2FjdGlvbih0cmFuc2FjdGlvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
dHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgp
KTsKIAogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBJREJPYmplY3RTdG9yZTo6fklEQk9i
amVjdFN0b3JlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rp
b24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIH0KIAog
Y29uc3QgY2hhciogSURCT2JqZWN0U3RvcmU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApA
QCAtODgsMTMgKzg4LDEzIEBAIGJvb2wgSURCT2JqZWN0U3RvcmU6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiAKIGNvbnN0IFN0cmluZyYgSURCT2JqZWN0U3RvcmU6Om5hbWUoKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2luZm8u
bmFtZSgpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0TmFtZShj
b25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHNldCBwcm9wZXJ0eSAnbmFtZScgb24g
J0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07
CkBAIC0xMTksMTMgKzExOSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6
c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5
UGF0aD4mIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9pbmZvLmtleVBhdGgoKTsKIH0KIAog
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90
cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAKQEAgLTE0
MCwyMCArMTQwLDIwIEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5k
ZXhOYW1lcygpIGNvbnN0CiAKIElEQlRyYW5zYWN0aW9uJiBJREJPYmplY3RTdG9yZTo6dHJhbnNh
Y3Rpb24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVy
biBtX3RyYW5zYWN0aW9uOwogfQogCiBib29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1
cm4gbV9pbmZvLmF1dG9JbmNyZW1lbnQoKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVm
UHRyPElEQktleVJhbmdlPiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlv
bi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZXhlY3V0ZSAnb3BlbkN1cnNvcicgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9i
amVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgSlMKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2Jq
ZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJL
ZXlSYW5nZT4gcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRv
IGV4ZWN1dGUgJ29wZW5LZXlDdXJzb3InIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjAxLDcgKzIwMSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhlY1N0
YXRlJiBleGVjU3RhdGUsCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
b3JlOjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5KQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUg
J2dldCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxl
dGVkLiIpIH07CkBAIC0yMTksNyArMjE5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGsKIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChFeGVjU3RhdGUm
IGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIGtleVJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJPYmplY3RTdG9yZTo6Z2V0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24g
J0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07
CkBAIC0yMzcsNyArMjM3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW4KIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpnZXRLZXkiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlm
IChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCT2JqZWN0
U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI1NSw3
ICsyNTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpn
ZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdQogRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJL
ZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpnZXRLZXkiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlm
IChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCT2JqZWN0
U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI5Nyw3
ICsyOTcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpw
dXRPckFkZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpwdXRPckFkZCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlv
bi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
YXV0byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0zNjksNyArMzY5LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBl
eGVjU3RhdGUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRv
RGVsZXRlKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbiIpOwotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0
aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gVGhlIElEQiBzcGVjIGZv
ciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQgdHJhbnNhY3Rpb24g
cmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8vIHRoZSBleGNlcHRp
b24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNDAzLDcgKzQwMyw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
Qk9iamVjdFN0b3JlOjpjbGVhcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmNsZWFyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSk7CiAKICAgICAvLyBUaGUgSURCIHNwZWMgZm9yIHNldmVyYWwgSURCT2JqZWN0
U3RvcmUgbWV0aG9kcyBzdGF0ZXMgdGhhdCB0cmFuc2FjdGlvbiByZWxhdGVkIGV4Y2VwdGlvbnMg
c2hvdWxkIGZpcmUgYmVmb3JlCiAgICAgLy8gdGhlIGV4Y2VwdGlvbiBmb3IgYW4gb2JqZWN0IHN0
b3JlIGJlaW5nIGRlbGV0ZWQuCkBAIC00MjUsNyArNDI1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoRXhlY1N0YXRlJiBleGVjU3RhdGUpCiBF
eGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhl
Y1N0YXRlJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYga2V5UGF0aCwgY29uc3Qg
SW5kZXhQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXggJXMgKGtleVBhdGg6ICVzLCB1bmlxdWU6ICVpLCBtdWx0
aUVudHJ5OiAlaSkiLCBuYW1lLnV0ZjgoKS5kYXRhKCksIGxvZ2dpbmdTdHJpbmcoa2V5UGF0aCku
dXRmOCgpLmRhdGEoKSwgcGFyYW1ldGVycy51bmlxdWUsIHBhcmFtZXRlcnMubXVsdGlFbnRyeSk7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdHJhbnNh
Y3Rpb24uaXNWZXJzaW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRlSW5k
ZXgnIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBkYXRhYmFzZSBpcyBub3QgcnVubmluZyBhIHZl
cnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uLiIpIH07CkBAIC00NjYsNyArNDY2LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0
ZSYsIGNvbnN0IFN0cmluZyYKIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0
b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCT2JqZWN0U3RvcmU6OmluZGV4Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSk7CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07IC8vIEZJWE1FOiBJcyB0aGlzIGNv
ZGUgdGVzdGVkPyBJcyBpdGV2ZW4gcmVhY2hhYmxlPwpAQCAtNDk4LDcgKzQ5OCw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSkKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0
b3JlOjpkZWxldGVJbmRleCAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2RlbGV0ZUluZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0
b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTU1MSw3ICs1NTEsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpjb3VudChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSURCS2V5UgogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
b3JlOjpkb0NvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IHJhbmdlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8g
VGhlIElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRo
YXQgdHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAg
IC8vIHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAt
NTczLDcgKzU3Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmRvQ291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0CiBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUs
IFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rp
b24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVj
dCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC01OTYsNyArNTk2LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYg
ZXhlY1N0YXRlLCBKU1ZhbHUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5n
ZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyIpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVj
dXRlICdnZXRBbGxLZXlzJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhh
cyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTYxOCwxMyArNjE4LDEzIEBAIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVj
U3RhdGUsIEpTCiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6Om1hcmtBc0RlbGV0ZWQoKQogewotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0
aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CiB9
CiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0KCkK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90
cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIFN0cmluZyBjdXJy
ZW50TmFtZSA9IG1faW5mby5uYW1lKCk7CiAgICAgbV9pbmZvID0gbV9vcmlnaW5hbEluZm87CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVl
c3QuY3BwCmluZGV4IDc4ZGE5NzAyMmE3Y2U0OWI1MTAzZjQ4ZGJlZGM2NDExOGQzNjA5NjIuLmI0
Zjc5MzFjOTdkOTViMGU1NzAyODdmY2U0NjVmODYyNzU1NWY0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC02
MywxMiArNjMsMTIgQEAgSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJDbGllbnQ6OkkKIAogSURCT3BlbkRCUmVxdWVz
dDo6fklEQk9wZW5EQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdp
blRocmVhZCgpKTsKIH0KIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvbkVycm9yKGNvbnN0IElE
QlJlc3VsdERhdGEmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhy
ZWFkKCkpOwogCiAgICAgbV9kb21FcnJvciA9IGRhdGEuZXJyb3IoKS50b0RPTUV4Y2VwdGlvbigp
OwogICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIHRydWUsICp0aGlzKSk7CkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihjb25zdCBJREJSZXN1bHREYXRhJiBk
YXRhKQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkRp
ZEZpbmlzaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgLy8gMy4zLjcgInZlcnNpb25jaGFuZ2UiIHRyYW5zYWN0aW9uIHN0ZXBzCiAgICAgLy8g
V2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQsIGFmdGVyIGZpcmluZyBjb21wbGV0ZS9h
Ym9ydCBvbiB0aGUgdHJhbnNhY3Rpb24sIGltbWVkaWF0ZWx5IHNldCByZXF1ZXN0J3MgdHJhbnNh
Y3Rpb24gcHJvcGVydHkgdG8gbnVsbC4KQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJREJPcGVuREJS
ZXF1ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCgpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hh
bmdlQ29tbWl0KCkgLSAlcyIsIHJlc291cmNlSWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKICAgICBBU1NFUlQoaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIG1fdHJhbnNhY3Rpb24t
PmFkZFJlcXVlc3QoKnRoaXMpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBJREJPcGVuREJS
ZXF1ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VDb21wbGV0aW9uKCkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJzaW9uQ2hh
bmdlQ29tcGxldGlvbigpIC0gJXMiLCByZXNvdXJjZUlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIAogICAgIElEQkVycm9y
IGlkYkVycm9yKEFib3J0RXJyb3IpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSURCT3BlbkRC
UmVxdWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6ZGlzcGF0
Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBv
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2lu
VGhyZWFkKCkpOwogCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAK
QEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyhjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJP
cGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3MoKSIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgc2V0UmVzdWx0KElEQkRhdGFiYXNlOjpjcmVhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5KCksIHJlc3VsdERhdGEpKTsK
ICAgICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25lOwpAQCAtMTQzLDcgKzE0Myw3IEBA
IHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgUmVmPElEQkRhdGFiYXNlPiBkYXRhYmFzZSA9IElEQkRh
dGFiYXNlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5
KCksIHJlc3VsdERhdGEpOwogICAgIFJlZjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBk
YXRhYmFzZS0+c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24ocmVzdWx0RGF0YS50cmFuc2Fj
dGlvbkluZm8oKSwgKnRoaXMpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgSURCT3BlbkRCUmVx
dWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAK
IHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25EZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAKICAgICB1aW50NjRfdCBvbGRWZXJzaW9uID0gcmVzdWx0RGF0YS5kYXRh
YmFzZUluZm8oKS52ZXJzaW9uKCk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIElEQk9wZW5E
QlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZCIp
OwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8g
SWYgYW4gT3BlbiByZXF1ZXN0IHdhcyBjb21wbGV0ZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIG5hdmln
YXRlZCwgbGVhdmluZyB0aGlzIHJlcXVlc3QKICAgICAvLyB3aXRoIGEgc3RvcHBlZCBzY3JpcHQg
ZXhlY3V0aW9uIGNvbnRleHQsIHdlIG5lZWQgdG8gbWVzc2FnZSBiYWNrIHRvIHRoZSBzZXJ2ZXIg
c28gaXQKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RD
b21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKIAogdm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpyZXF1ZXN0QmxvY2tlZCh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJz
aW9uKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAg
IExPRyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0QmxvY2tlZCIpOwogICAg
IGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBu
ZXdWZXJzaW9uLCBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGNkYzliYWY1MzllZGZm
MjE0MTVmOTQ0ZDgxODc4NWRjMjRhNjgyNTcuLjYyMTYyNTkwOTQyY2YxOWVkYmYwMzVmOTAyYTdm
Zjg5NjUxZDVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWQK
IAogSURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX3Jlc3VsdCkgewogICAgICAgICBXVEY6OnN3
aXRjaE9uKG1fcmVzdWx0LnZhbHVlKCksCkBAIC0xNjMsNyArMTYzLDcgQEAgRXhjZXB0aW9uT3I8
c3RkOjpvcHRpb25hbDxJREJSZXF1ZXN0OjpSZXN1bHQ+PiBJREJSZXF1ZXN0OjpyZXN1bHQoKSBj
b25zdAogCiBFeGNlcHRpb25PcjxET01FeGNlcHRpb24qPiBJREJSZXF1ZXN0OjplcnJvcigpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
aWYgKCFpc0RvbmUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byByZWFkIHRoZSAnZXJyb3InIHByb3BlcnR5IGZy
b20gJ0lEQlJlcXVlc3QnOiBUaGUgcmVxdWVzdCBoYXMgbm90IGZpbmlzaGVkLiIpIH07CkBAIC0x
NzMsNyArMTczLDcgQEAgRXhjZXB0aW9uT3I8RE9NRXhjZXB0aW9uKj4gSURCUmVxdWVzdDo6ZXJy
b3IoKSBjb25zdAogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJREJDdXJzb3ImIGN1cnNv
cikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKCFtX2N1cnNvclJlcXVlc3ROb3RpZmllcik7CiAKICAgICBtX3NvdXJjZSA9IFNvdXJjZSB7
ICZjdXJzb3IgfTsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJj
ZShJREJDdXJzb3ImIGN1cnNvcikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb24p
OwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5pc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJU
KCF0cmFuc2FjdGlvbi5pc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CkBAIC0xOTUsMTMgKzE5NSwx
MyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAKIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4g
SURCUmVxdWVzdDo6dHJhbnNhY3Rpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9zaG91bGRFeHBvc2VUcmFuc2FjdGlv
blRvRE9NID8gbV90cmFuc2FjdGlvbiA6IG51bGxwdHI7CiB9CiAKIHVpbnQ2NF90IElEQlJlcXVl
c3Q6OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0yMTUsNyArMjE1LDcgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291
cmNlT2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3QKIAogdWludDY0X3QgSURCUmVxdWVzdDo6
c291cmNlSW5kZXhJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fc291cmNlKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTIyOSwxNCArMjI5LDE0IEBAIHVpbnQ2NF90IElEQlJlcXVlc3Q6OnNvdXJjZUluZGV4
SWRlbnRpZmllcigpIGNvbnN0CiAKIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVSZWNvcmRUeXBlIElE
QlJlcXVlc3Q6OnJlcXVlc3RlZE9iamVjdFN0b3JlUmVjb3JkVHlwZSgpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIG1fcmVx
dWVzdGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBlOwogfQogCiBJbmRleGVkREI6OkluZGV4UmVjb3Jk
VHlwZSBJREJSZXF1ZXN0OjpyZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGUoKSBjb25zdAogewotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zb3Vy
Y2UpOwogICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJJbmRleD4+
KG1fc291cmNlLnZhbHVlKCkpKTsKIApAQCAtMjQ1LDMzICsyNDUsMzMgQEAgSW5kZXhlZERCOjpJ
bmRleFJlY29yZFR5cGUgSURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29u
c3QKIAogRXZlbnRUYXJnZXRJbnRlcmZhY2UgSURCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsK
IAogICAgIHJldHVybiBJREJSZXF1ZXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCiBj
b25zdCBjaGFyKiBJREJSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICByZXR1cm4gIklE
QlJlcXVlc3QiOwogfQogCiBib29sIElEQlJlcXVlc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVh
ZCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdp
blRocmVhZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKICAgICByZXR1cm4g
bV9oYXNQZW5kaW5nQWN0aXZpdHk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c3RvcCgpCiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9j
b250ZXh0U3RvcHBlZCk7CiAKICAgICBjYW5jZWxGb3JTdG9wKCk7CkBAIC0yODgsNyArMjg4LDcg
QEAgdm9pZCBJREJSZXF1ZXN0OjpjYW5jZWxGb3JTdG9wKCkKIAogdm9pZCBJREJSZXF1ZXN0Ojpl
bnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG9yaWdpblRocmVhZCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8
fCBtX2NvbnRleHRTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICszMDAsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50IC0gJXMgKCVwKSIsIGV2ZW50
LnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9oYXNQZW5kaW5nQWN0aXZp
dHkpOwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CiAKQEAgLTM0Nyw3ICszNDcsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRI
YW5kbGVyIik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAK
ICAgICBpZiAobV90cmFuc2FjdGlvbiAmJiBtX2lkYkVycm9yLmNvZGUoKSAhPSBBYm9ydEVycm9y
KQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydER1ZVRvRmFpbGVkUmVxdWVzdChET01FeGNl
cHRpb246OmNyZWF0ZShBYm9ydEVycm9yLCBBU0NJSUxpdGVyYWwoIklEQlRyYW5zYWN0aW9uIHdp
bGwgYWJvcnQgZHVlIHRvIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBhbiBldmVudCBoYW5kbGVyIikp
KTsKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9u
SW5FdmVudEhhbmRsZXIoKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBJREJL
ZXlEYXRhJiBrZXlEYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVh
ZCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgaWYgKCFjb250ZXh0KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0
UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0
UmVzdWx0KGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYga2V5RGF0YXMpCiB7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byogY29udGV4dCA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0zOTMsNyArMzkz
LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQktleURhdGE+
JiBrZXlEYXRhcykKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElE
QlZhbHVlPiYgdmFsdWVzKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVh
ZCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgaWYgKCFjb250ZXh0KQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0
UmVzdWx0KGNvbnN0IFZlY3RvcjxJREJWYWx1ZT4mIHZhbHVlcykKIAogdm9pZCBJREJSZXF1ZXN0
OjpzZXRSZXN1bHQodWludDY0X3QgbnVtYmVyKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgSURC
UmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIAogdm9pZCBJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBJREJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lIik7CiAKQEAgLTQ0NCw3
ICs0NDQsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKGNv
bnN0IElEQlZhbHVlJiB2YWx1ZSkKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVm
aW5lZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAg
ICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1Vu
ZGVmaW5lZCgpCiAKIElEQkN1cnNvciogSURCUmVxdWVzdDo6cmVzdWx0Q3Vyc29yKCkKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fcmVz
dWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBJREJDdXJz
b3IqIElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcigpCiAKIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0
ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChpc0RvbmUoKSk7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOwpAQCAt
NDkwLDcgKzQ5MCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vy
c29yJiBjdXJzb3IpCiAKIHZvaWQgSURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKIAogICAg
IG1fcmVzdWx0ID0gc3RkOjpudWxsb3B0OwpAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgSURCUmVx
dWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogCiB2b2lkIElEQlJlcXVlc3Q6OmNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZlbnQo
Y29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpE
b25lOwogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6b25FcnJvciIpOwogCi0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pZGJFcnJvci5p
c051bGwoKSk7CiAKICAgICBtX2RvbUVycm9yID0gbV9pZGJFcnJvci50b0RPTUV4Y2VwdGlvbigp
OwpAQCAtNTM0LDE0ICs1MzQsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHZvaWQg
SURCUmVxdWVzdDo6b25TdWNjZXNzKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVz
dDo6b25TdWNjZXNzIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NF
dmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KFJl
ZjxJREJEYXRhYmFzZT4mJiBkYXRhYmFzZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBv
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX3Jlc3VsdCA9IFJlc3VsdCB7IFJlZlB0cjxJREJEYXRh
YmFzZT4geyBXVEZNb3ZlKGRhdGFiYXNlKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYzFlMWRlZjU1ZWI2
MWMyODZjYTNmYWVhMWQ5ODQwNTc4Y2RiMTM2Ni4uYzQ0NjY5ZWRlMmY0OTIzZDEwMTkzNmI1MzNk
ODEwZTMyYjQ0NTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtODAsNyArODAsNyBAQCBJREJUcmFuc2FjdGlvbjo6
SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mCiAKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OklEQlRyYW5z
YWN0aW9uIC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpKTsKIAogICAgIGlmIChtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVy
c2lvbmNoYW5nZSkgewogICAgICAgICBBU1NFUlQobV9vcGVuREJSZXF1ZXN0KTsKQEAgLTEwNiw3
ICsxMDYsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRh
dGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAKIElEQlRyYW5zYWN0aW9uOjp+SURC
VHJhbnNhY3Rpb24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIH0KIAogSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkmIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uUHJveHkoKQpAQCAtMTE2LDcgKzExNiw3
IEBAIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBJREJUcmFuc2FjdGlvbjo6Y29ubmVj
dGlvblByb3h5KCkKIAogUmVmPERPTVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RT
dG9yZU5hbWVzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiBuYW1lcyA9IGlzVmVyc2lvbkNoYW5nZSgpID8gbV9kYXRhYmFzZS0+aW5mbygpLm9iamVjdFN0
b3JlTmFtZXMoKSA6IG1faW5mby5vYmplY3RTdG9yZXMoKTsKIApAQCAtMTMwLDIwICsxMzAsMjAg
QEAgUmVmPERPTVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZU5hbWVzKCkg
Y29uc3QKIAogSURCRGF0YWJhc2UqIElEQlRyYW5zYWN0aW9uOjpkYigpCiB7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
ICAgIHJldHVybiBtX2RhdGFiYXNlLnB0cigpOwogfQogCiBET01FeGNlcHRpb24qIElEQlRyYW5z
YWN0aW9uOjplcnJvcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2RvbUVycm9y
LmdldCgpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2Fj
dGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSIpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsK
IAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRp
b25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBvYmplYwogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJl
cXVlc3QoRE9NRXhjZXB0aW9uJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OmFib3J0RHVlVG9GYWlsZWRSZXF1ZXN0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYg
KGlzRmluaXNoZWRPckZpbmlzaGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xOTQsNyArMTk0
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9NRXhj
ZXB0aW9uJiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6dHJhbnNpdGlvbmVkVG9GaW5p
c2hpbmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlIHN0YXRlKQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAog
ICAgIEFTU0VSVCghaXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpOwogICAgIG1fc3RhdGUgPSBzdGF0
ZTsKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjp0cmFuc2l0aW9uZWRU
b0ZpbmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGUgc3RhdGUpCiBFeGNlcHRpb25P
cjx2b2lkPiBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6YWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hlZE9y
RmluaXNoaW5nKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnYWJvcnQnIG9uICdJREJUcmFuc2Fj
dGlvbic6IFRoZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKSB9OwpAQCAt
MjE3LDcgKzIxNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQlRyYW5zYWN0aW9uOjphYm9ydCgp
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjppbnRlcm5hbEFib3J0KCkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKCFpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CiAKICAgICBtX2RhdGFiYXNlLT53aWxsQWJv
cnRUcmFuc2FjdGlvbigqdGhpcyk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6YWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzIik7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlz
RW1wdHkoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5hYm9ydFRyYW5z
YWN0aW9uKCp0aGlzKTsKQEAgLTMwOSwyNiArMzA5LDI2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0CiAKIGNvbnN0IGNoYXIqIElEQlRyYW5zYWN0aW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuICJJREJUcmFuc2FjdGlvbiI7CiB9CiAKIGJv
b2wgSURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25z
dAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCVHJhbnNhY3Rp
b246Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpIHx8IG1heUJlR0NUaHJlYWQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpIHx8IG1heUJlR0NUaHJlYWQoKSk7CiAgICAgcmV0dXJuICFtX2NvbnRleHRTdG9wcGVkICYm
IG1fc3RhdGUgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpzdG9wIC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpKTsKIAogICAgIC8vIElEQkRhdGFiYXNlOjpzdG9wKCkgY2FsbHMgSURCVHJh
bnNhY3Rpb246OnN0b3AoKSBmb3IgZWFjaCBvZiBpdHMgYWN0aXZlIHRyYW5zYWN0aW9ucy4KICAg
ICAvLyBTaW5jZSB0aGUgb3JkZXIgb2YgY2FsbGluZyBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSBp
cyByYW5kb20sIHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIHN0b3BwZWQuCkBAIC0zNDcsMTMg
KzM0NywxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIAogYm9vbCBJREJUcmFuc2Fj
dGlvbjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9zdGF0ZSA9
PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFjdGl2ZTsKIH0KIAogYm9vbCBJREJUcmFu
c2FjdGlvbjo6aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICByZXR1cm4gbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRp
bmcKICAgICAgICAgfHwgbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFi
b3J0aW5nCkBAIC0zNjIsMTMgKzM2MiwxMyBAQCBib29sIElEQlRyYW5zYWN0aW9uOjppc0Zpbmlz
aGVkT3JGaW5pc2hpbmcoKSBjb25zdAogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjphZGRSZXF1ZXN0
KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIG1fb3BlblJlcXVlc3RzLmFk
ZCgmcmVxdWVzdCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURC
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fb3BlblJlcXVlc3Rz
LmNvbnRhaW5zKCZyZXF1ZXN0KSk7CiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0
KTsKIH0KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1
ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9w
ZXJhdGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRp
b24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9w
ZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgbV9wZW5kaW5nVHJhbnNh
Y3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKICAgICBtX3RyYW5zYWN0aW9u
T3BlcmF0aW9uTWFwLnNldChvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgV1RGTW92ZShvcGVyYXRp
b24pKTsKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9w
ZXJhdGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJgogCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcigpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogCiAgICAgaWYgKCFtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTM5NSw3
ICszOTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25U
aW1lcigpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCgp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9u
VGltZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3N0YXJ0ZWRP
blNlcnZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNDI5LDggKzQyOSw4IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb246OnBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCkKIAogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0
YSwgSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcGVyYXRpb24ub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3BlcmF0aW9uLm9yaWdpblRo
cmVhZCgpKTsKIAogICAgIG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5hcHBlbmQoeyAmb3BlcmF0
aW9uLCBkYXRhIH0pOwogICAgIHNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKTsKQEAg
LTQzOCw3ICs0MzgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRP
blNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbAogCiB2b2lkIElEQlRyYW5z
YWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCkKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAK
ICAgICBpZiAoIW1fY29tcGxldGVkT3BlcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAg
bV9jb21wbGV0ZWRPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTQ0Nyw3ICs0
NDcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRp
bWVyKCkKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQo
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0
aW9uVGltZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fY29tcGxl
dGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgfHwgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVz
dCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246OmZpbmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkK
IHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjpjb21taXQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFpc0ZpbmlzaGVk
T3JGaW5pc2hpbmcoKSk7CiAKICAgICB0cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6
OlRyYW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXRPblNl
cnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlciIpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNvbW1pdFRyYW5zYWN0aW9u
KCp0aGlzKTsKIApAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbW1p
dE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0T3JDb21taXQoKQogewogICAgIEFTU0VSVCht
X3N0YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KTsKIAogICAgIG1fc3RhdGUgPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlzaGVk
OwogfQpAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0
T3JDb21taXQoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQoY29uc3QgSURCRXJyb3Im
IGVycm9yKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQi
KTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5kaWRTdGFydFRyYW5zYWN0aW9uKCp0aGlz
KTsKIApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KGNv
bnN0IElEQkVycm9yJiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJv
cnQoY29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2Ut
PmRpZEFib3J0VHJhbnNhY3Rpb24oKnRoaXMpOwogICAgIG1faWRiRXJyb3IgPSBlcnJvcjsKQEAg
LTU2MCw3ICs1NjAsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpub3RpZnlEaWRBYm9ydChjb25z
dCBJREJFcnJvciYgZXJyb3IpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydChjb25zdCBJ
REJFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpk
aWRBYm9ydCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydChjb25zdCBJREJFcnJvciYgZXJyb3Ip
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRDb21taXQoY29uc3QgSURCRXJyb3ImIGVycm9yKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ29tbWl0Iik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6
Q29tbWl0dGluZyk7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTU5MCwyMSArNTkw
LDIxIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdChjb25zdCBJREJFcnJvciYgZXJy
b3IpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAg
ICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmZpcmVPbkFib3J0KCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmZpcmVPbkFib3J0Iik7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkKCkpOwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hYm9y
dEV2ZW50LCB0cnVlLCBmYWxzZSkpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjplbnF1ZXVl
RXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewogICAgIEFTU0VSVChtX3N0YXRlICE9IEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICgh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHx8IG1fY29udGV4dFN0b3BwZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2
ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246
OmRpc3BhdGNoRXZlbnQiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwogICAgIEFTU0VSVChl
dmVudC50YXJnZXQoKSA9PSB0aGlzKTsKQEAgLTY0Nyw3ICs2NDcsNyBAQCBSZWY8SURCT2JqZWN0
U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmpl
Y3RTdG9yZSIpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihtX3JlZmVyZW5jZWRPYmplY3RTdG9yZUxvY2spOwogCkBAIC02NjQsNyArNjY0LDcgQEAg
UmVmPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0
U3RvcmVPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24s
IGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rp
b25Qcm94eSgpLmNyZWF0ZU9iamVjdFN0b3JlKG9wZXJhdGlvbiwgaW5mbyk7CkBAIC02NzMsNyAr
NjczLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlk
Q3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0
U3RvcmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEs
IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkNyZWF0ZU9iamVjdFN0b3JlU3Vj
Y2VzcyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAK
QEAgLTY4NSw3ICs2ODUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9y
ZShJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZwogCiAgICAgQVNTRVJU
KGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlQobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLmNvbnRh
aW5zKG9iamVjdFN0b3JlLmluZm8oKS5uYW1lKCkpKTsKICAgICBBU1NFUlQoIW1fcmVmZXJlbmNl
ZE9iamVjdFN0b3Jlcy5jb250YWlucyhuZXdOYW1lKSk7CkBAIC03MDIsNyArNzAyLDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVj
dFN0b3JlLCBjb25zdCBTdHJpbmcKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0
b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBj
b25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05h
bWUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RT
dG9yZU9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7
CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5yZW5hbWVPYmplY3RTdG9yZShv
cGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03MTEsNyArNzEx
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVu
YW1lT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lT2JqZWN0U3Rv
cmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJl
c3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OlJlbmFtZU9iamVjdFN0b3JlU3VjY2Vz
cyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKQEAg
LTcxOSw3ICs3MTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9u
OjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcgogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgiKTsKICAgICBBU1NFUlQoaXNWZXJz
aW9uQ2hhbmdlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTczMyw3ICs3MzMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3Rvcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQklu
ZGV4SW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNy
ZWF0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5n
ZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNyZWF0ZUluZGV4KG9w
ZXJhdGlvbiwgaW5mbyk7CkBAIC03NDIsNyArNzQyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVy
YXQKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAocmVz
dWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6Q3JlYXRlSW5kZXhTdWNjZXNzKQogICAg
ICAgICByZXR1cm47CkBAIC03NjQsNyArNzY0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVu
YW1lSW5kZXgoSURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiAKICAgICBB
U1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVChtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMu
Y29udGFpbnMoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFtZSgpKSk7CiAgICAgQVNTRVJU
KG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5nZXQoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCku
bmFtZSgpKSA9PSAmaW5kZXgub2JqZWN0U3RvcmUoKSk7CkBAIC03ODEsNyArNzgxLDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgoSURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJp
bmcmIG5ld05hbWUpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVyKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgdWludDY0X3Qm
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgdWludDY0X3QmIGluZGV4SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6cmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoaXNWZXJz
aW9uQ2hhbmdlKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkucmVuYW1l
SW5kZXgob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwg
bmV3TmFtZSk7CkBAIC03OTAsMTQgKzc5MCwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5h
bWVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlcihjb25zdCBJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OlJlbmFtZUlu
ZGV4U3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7
CiB9CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3Io
RXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdE9wZW5DdXJzb3IiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBl
KCkgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9S
ZXF1ZXN0T3BlbkN1cnNvcihzdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIG9iamVjdFN0
b3JlLCBpbmZvKSk7CkBAIC04MDgsNyArODA4LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG8K
IFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0
YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3Ii
KTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkgPT0gSW5kZXhlZERCOjpD
dXJzb3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihz
dGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIGluZGV4LCBpbmZvKSk7CkBAIC04MTksNyAr
ODE5LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNv
cihFeGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW4KIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFu
c2FjdGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBSZWY8SURCQ3Vy
c29yPiYmIGN1cnNvcikKIHsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAg
ICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogCkBAIC04MzUsNyArODM1
LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29y
KEV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxJREJDdXIKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZW5D
dXJzb3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24s
IGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFi
YXNlLT5jb25uZWN0aW9uUHJveHkoKS5vcGVuQ3Vyc29yKG9wZXJhdGlvbiwgaW5mbyk7CiB9CkBA
IC04NDMsNyArODQzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVy
KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGkKIHZvaWQgSURCVHJhbnNh
Y3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFu
c2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgY29tcGxl
dGVDdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQpAQCAtODUzLDcgKzg1Myw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3Is
IGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjppdGVyYXRlQ3Vyc29yIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFT
U0VSVChjdXJzb3IucmVxdWVzdCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBhZGRSZXF1ZXN0KCpjdXJz
b3IucmVxdWVzdCgpKTsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JE
YXRhCiB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29y
RGF0YSYgZGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Oml0ZXJh
dGVDdXJzb3JPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rp
b25Qcm94eSgpLml0ZXJhdGVDdXJzb3Iob3BlcmF0aW9uLCBkYXRhKTsKIH0KQEAgLTg3Myw3ICs4
NzMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlk
SXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBjb21wbGV0ZUN1
cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CkBAIC04ODIsNyArODgyLDcgQEAg
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVS
ZWNvcmRzKEpTQzo6RXhlY1N0YXRlJgogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0Fj
dGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0
YXRlKSk7CiAKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVj
b3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRf
VU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTkxOSw3ICs5MTksNyBAQCBSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09u
U2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3Qg
SURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2VydmVyIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZ2V0QWxsUmVjb3JkcyhvcGVy
YXRpb24sIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpnZXRBbGxSZWNvcmRzT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09u
U2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNv
cmRzT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0g
SURCUmVzdWx0VHlwZTo6RXJyb3IpIHsKICAgICAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0
KHJlcXVlc3QsIHJlc3VsdERhdGEpOwpAQCAtOTU0LDcgKzk1NCw3IEBAIFJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChFeGVjU3RhdGUmIHN0YXRlLCBJREJP
YmplY3RTdG9yCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
UmVjb3JkIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghZ2V0UmVjb3Jk
RGF0YS5rZXlSYW5nZURhdGEuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VE
KHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBSZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwg
SURCT2JqZWN0U3RvcgogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
VmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEdldFZhbHVlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29y
ZChzdGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpWYWx1ZSwgcmFuZ2Up
OwogfQpAQCAtOTgwLDcgKzk4MCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdEdldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRlCiBSZWY8SURC
UmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwg
SURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5kZXgsIEluZGV4ZWRE
Qjo6SW5kZXhSZWNvcmRUeXBlOjpLZXksIHJhbmdlKTsKIH0KQEAgLTk5MCw3ICs5OTAsNyBAQCBS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZChFeGVjU3Rh
dGUmIHN0YXRlLCBJREJJbmRleCYgaQogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldFZhbHVlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VS
VCghcmFuZ2UuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUoJnN0YXRlKSk7CiAKQEAgLTEwMDgsNyArMTAwOCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQklu
ZGV4JiBpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldFJlY29yZERhdGEm
IGdldFJlY29yZERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpn
ZXRSZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rp
b25Qcm94eSgpLmdldFJlY29yZChvcGVyYXRpb24sIGdldFJlY29yZERhdGEpOwogfQpAQCAtMTAx
Niw3ICsxMDE2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW8KIHZvaWQgSURCVHJhbnNhY3Rp
b246OmRpZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChyZXN1bHRE
YXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgewogICAgICAgICBjb21wbGV0ZU5v
bmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMDUxLDcgKzEwNTEsNyBA
QCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChFeGVjU3RhdGUm
IHN0YXRlLCBJREJPYmplY3RTdG9yZSYgbwogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdENvdW50IChJREJPYmplY3RTdG9yZSkiKTsKICAgICBBU1NFUlQoaXNBY3Rp
dmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VS
VF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA2OSw3ICsxMDY5LDcgQEAg
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBz
dGF0ZSwgSURCSW5kZXgmIGluZGV4LAogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdENvdW50IChJREJJbmRleCkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAg
ICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVF9VTlVTRUQo
c3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
SW5kZXgmIGluZGV4LAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlcihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdl
RGF0YSYga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpn
ZXRDb3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlv
blByb3h5KCkuZ2V0Q291bnQob3BlcmF0aW9uLCBrZXlSYW5nZSk7CiB9CkBAIC0xMDkzLDcgKzEw
OTMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRDb3VudE9uU2VydmVyKElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlk
R2V0Q291bnRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlk
R2V0Q291bnRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJl
c3VsdERhdGEucmVzdWx0SW50ZWdlcigpKTsKICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3Qo
cmVxdWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwg
SURCT2JqZWN0UwogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERl
bGV0ZVJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdl
LmlzTnVsbCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZz
dGF0ZSkpOwogCkBAIC0xMTE5LDcgKzExMTksNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0Uwog
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJh
bmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3Jk
T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHko
KS5kZWxldGVSZWNvcmQob3BlcmF0aW9uLCBrZXlSYW5nZSk7CiB9CkBAIC0xMTI3LDcgKzExMjcs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVSZWNvcmRPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkRGVs
ZXRlUmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
ZERlbGV0ZVJlY29yZE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmVxdWVzdC5zZXRSZXN1
bHRUb1VuZGVmaW5lZCgpOwogICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCBy
ZXN1bHREYXRhKTsKQEAgLTExMzcsNyArMTEzNyw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2Jq
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmpl
Y3RTdG9yZSIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NF
UlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTExNTUsNyArMTE1NSw3IEBA
IFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUo
RXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVhck9iamVj
dFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9u
LCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuY2xlYXJPYmplY3RTdG9y
ZShvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiB9CkBAIC0xMTYzLDcgKzExNjMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgbwogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ2xl
YXJPYmplY3RTdG9yZU9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICByZXF1ZXN0
LnNldFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJl
cXVlc3QsIHJlc3VsdERhdGEpOwpAQCAtMTE3NSw3ICsxMTc1LDcgQEAgUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2Jq
ZWN0U3RvcmUKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFpc1JlYWRPbmx5
KCkpOwogICAgIEFTU0VSVChvYmplY3RTdG9yZS5pbmZvKCkuYXV0b0luY3JlbWVudCgpIHx8IGtl
eSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkp
OwogCkBAIC0xMTkxLDcgKzExOTEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OnJlcXVlc3RQdXRPckFkZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZQogdm9pZCBJ
REJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24sIFJlZlB0cjxJREJLZXk+IGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlJiBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cHV0T3JBZGRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoIWlzUmVhZE9ubHkoKSk7CiAgICAgQVNTRVJUKHZhbHVlKTsK
IApAQCAtMTIyNCw3ICsxMjI0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNl
cnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICBvcGVy
YXRpb24uc2V0TmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyKGZhbHNlKTsKIAogICAgIHZhbHVlLT53
cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiA9IFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uPihvcGVyYXRpb24pLCBrZXlEYXRhID0gSURCS2V5RGF0YShrZXkuZ2V0KCkpLmlz
b2xhdGVkQ29weSgpLCBvdmVyd3JpdGVNb2RlXShjb25zdCBJREJWYWx1ZSYgaWRiVmFsdWUpIG11
dGFibGUgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElE
KCkpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkp
OwogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoaWRiVmFsdWUu
ZGF0YSgpLmRhdGEoKSkgewogICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5
KCkucHV0T3JBZGQocHJvdGVjdGVkT3BlcmF0aW9uLmdldCgpLCBXVEZNb3ZlKGtleURhdGEpLCBp
ZGJWYWx1ZSwgb3ZlcndyaXRlTW9kZSk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24mIG9wZXJhdGlvbgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlcihJ
REJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlciIp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpKTsKIAogICAgIGlmIChhdXRvKiByZXN1bHQgPSByZXN1bHREYXRhLnJlc3VsdEtl
eSgpKQogICAgICAgICByZXF1ZXN0LnNldFJlc3VsdCgqcmVzdWx0KTsKQEAgLTEyNTUsNyArMTI1
NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxl
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAKICAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9jayk7CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNo
YW5nZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5k
ZWxldGVPYmplY3RTdG9yZShvcGVyYXRpb24sIG9iamVjdFN0b3JlTmFtZSk7CiB9CkBAIC0xMjgy
LDE0ICsxMjgyLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25T
ZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHZvaWQgSURCVHJhbnNhY3Rp
b246OmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZERlbGV0
ZU9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpEZWxldGVPYmplY3RT
dG9yZVN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3Ip
OwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgiKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAi
SURCIGRlbGV0ZSBpbmRleCBvcGVyYXRpb246ICVzICglIiBQUkl1NjQgIikiLCBpbmRleE5hbWUu
dXRmOCgpLmRhdGEoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKQEAgLTEzMDAsNyArMTMwMCw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNo
YW5nZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5k
ZWxldGVJbmRleChvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsK
IH0KQEAgLTEzMDgsNyArMTMwOCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4
T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0CiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkaWREZWxldGVJbmRleE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRE
ZWxldGVJbmRleE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5kZXhTdWNj
ZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApA
QCAtMTMxNiw4ICsxMzE2LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxl
dGVkT25DbGllbnQoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7
CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZElEKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9wZXJhdGlv
bi5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
Z2V0KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpID09ICZvcGVyYXRpb24pOwogICAgIEFTU0VSVCht
X3RyYW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jlc3NRdWV1ZS5maXJzdCgpID09ICZvcGVyYXRp
b24pOwogCkBAIC0xMzMwLDE0ICsxMzMwLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJh
dGlvbkNvbXBsZXRlZE9uQ2xpZW50KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlcigpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlciIpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAog
ICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmVzdGFibGlzaFRyYW5zYWN0aW9uKCp0
aGlzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogewotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsK
IAogICAgIGlmIChpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTM0Nyw3ICsxMzQ3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWFjdGl2YXRlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFjdGl2ZSkKICAgICAgICAgbV9z
dGF0ZSA9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6SW5hY3RpdmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uUHJveHkuY3BwCmluZGV4IDllYjNmMjVhOGQ5MmEwZjM3NzUxNDY5OTllZTg5NzEyNDVj
MTEyMzkuLmJlNGRiNDgwNWUyMzA1NTkwMzU1YjUyM2FiMGM4NzU3MmU0YmY0MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uUHJveHkuY3BwCkBAIC01MTksMTIgKzUxOSwxMiBAQCB2b2lkIElEQkNvbm5l
Y3Rpb25Qcm94eTo6Zm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhjb25zdCBWZWN0b3I8UmVmUHRyPFRy
YW5zYWN0aW9uTwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBl
Pgogdm9pZCByZW1vdmVJdGVtc01hdGNoaW5nQ3VycmVudFRocmVhZChIYXNoTWFwPEtleVR5cGUs
IFZhbHVlVHlwZT4mIG1hcCkKIHsKLSAgICBhdXRvIGN1cnJlbnRUaHJlYWRJRCA9IGN1cnJlbnRU
aHJlYWQoKTsKKyAgICBhdXRvJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAK
ICAgICBWZWN0b3I8S2V5VHlwZT4ga2V5czsKICAgICBrZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobWFwLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1hcCkgewotICAgICAg
ICBpZiAoaXRlcmF0b3IudmFsdWUtPm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZElE
KQorICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUtPm9yaWdpblRocmVhZCgpID09IGN1cnJlbnRU
aHJlYWQpCiAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChpdGVyYXRvci5rZXkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBjNzI0NTMxYjJlMWU1OTYy
NDVjNTY5M2I1NjU1NWE5ZjY4ZGMzNmE1Li42MGMwOGQ2ZDM3MTY2NjY2MTU2YzMyZTFmNzIwODRl
MThmYjBhMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNTEsMTIgKzUxLDEy
IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhbnNh
Y3Rpb25PcGVyYXRpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQg
PT0gY3VycmVudFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLmdldCgp
ID09IFRocmVhZDo6Y3VycmVudCgpKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZvcm0oKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0gY3VycmVudFRocmVhZCgpKTsK
KyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgp
KTsKICAgICAgICAgQVNTRVJUKG1fcGVyZm9ybUZ1bmN0aW9uKTsKICAgICAgICAgbV9wZXJmb3Jt
RnVuY3Rpb24oKTsKICAgICAgICAgbV9wZXJmb3JtRnVuY3Rpb24gPSB7IH07CkBAIC02NCw3ICs2
NCw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAKICAgICB2b2lkIHRyYW5zaXRpb25Ub0Nv
bXBsZXRlT25UaGlzVGhyZWFkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAg
ICBBU1NFUlQobV9vcmlnaW5UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
ICAgICBtX3RyYW5zYWN0aW9uLT5vcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihkYXRhLCAqdGhp
cyk7CiAgICAgfQogCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAg
ICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIGlmIChtX29y
aWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSkKKyAgICAgICAgaWYgKG1fb3JpZ2luVGhy
ZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKQogICAgICAgICAgICAgdHJhbnNpdGlvblRv
Q29tcGxldGVPblRoaXNUaHJlYWQoZGF0YSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
bV90cmFuc2FjdGlvbi0+cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoKnRoaXMsICZUcmFu
c2FjdGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQsIGRhdGEp
OwpAQCAtODMsNyArODMsNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gewogCiAgICAgdm9pZCBk
b0NvbXBsZXRlKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewotICAgICAgICBBU1NF
UlQobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAgICBBU1NFUlQo
bV9vcmlnaW5UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgICAgIC8v
IER1ZSB0byByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiB0aGUgc2VydmVyIHNlbmRpbmcgYW4gIm9w
ZXJhdGlvbiBjb21wbGV0ZSIgbWVzc2FnZSBhbmQgdGhlIGNsaWVudAogICAgICAgICAvLyBmb3Jj
ZWZ1bGx5IGFib3J0aW5nIGFuIG9wZXJhdGlvbiwgaXQncyB1bmF2b2lkYWJsZSB0aGF0IHRoaXMg
bWV0aG9kIG1pZ2h0IGJlIGNhbGxlZCB0d2ljZS4KQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBU
cmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUcmFuc2Fj
dGlvbk9wZXJhdGlvbj4gewogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBUaHJlYWRJZGVu
dGlmaWVyIG9yaWdpblRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWRJRDsg
fQorICAgIFRocmVhZCYgb3JpZ2luVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJl
YWQuZ2V0KCk7IH0KIAogICAgIElEQlJlcXVlc3QqIGlkYlJlcXVlc3QoKSB7IHJldHVybiBtX2lk
YlJlcXVlc3QuZ2V0KCk7IH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNzIFRyYW5zYWN0aW9u
T3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0
aW9uPiB7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCkgeyByZXR1cm4gbV90cmFu
c2FjdGlvbi5nZXQoKTsgfQogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIGluZGV4UmVj
b3JkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhSZWNvcmRUeXBlOyB9CiAKLSAgICBUaHJl
YWRJZGVudGlmaWVyIG1fb3JpZ2luVGhyZWFkSUQgeyBjdXJyZW50VGhyZWFkKCkgfTsKKyAgICBS
ZWY8VGhyZWFkPiBtX29yaWdpblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAgICAgUmVm
UHRyPElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKICAgICBib29sIG1fbmV4dFJlcXVlc3RDYW5H
b1RvU2VydmVyIHsgdHJ1ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBkOTUwNDdjOTAzMDUxYzBiYzNkNWU2MzhiMjdi
NDU4NTQyNGIwNTMyLi5hMDM4MWExYmQ0NDRmMDBjOGUxODg1MmE2NTllNWUzY2MxNDE1NGU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC0xMDAsOSArMTAwLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0vLyBGSVhNRTogY2hlY2sgdGhlIHByb3BlciB3
YXkgdG8gcmVmZXJlbmNlIGFuIHVuZGVmaW5lZCB0aHJlYWQgSUQKLWNvbnN0IGludCBVbmRlZmlu
ZWRUaHJlYWRJZGVudGlmaWVyID0gMHhmZmZmZmZmZjsKLQogY29uc3QgdW5zaWduZWQgTWF4UGVy
aW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM2LDcg
KzEzMyw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fZXZlbnRRdWV1ZShz
dGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCi0gICAgLCBtX2dyYXBo
T3duZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKKyAgICAsIG1fZ3JhcGhPd25l
clRocmVhZChudWxscHRyKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTIsNyAr
MTQ5LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICAgICAsIG1faXNPZmZsaW5lQ29udGV4
dCh0cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0
ZSgqdGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZl
bnRRdWV1ZT4oKnRoaXMpKQotICAgICwgbV9ncmFwaE93bmVyVGhyZWFkKFVuZGVmaW5lZFRocmVh
ZElkZW50aWZpZXIpCisgICAgLCBtX2dyYXBoT3duZXJUaHJlYWQobnVsbHB0cikKIHsKICAgICBj
b25zdHJ1Y3RDb21tb24oKTsKIApAQCAtNjk2LDIzICs2OTMsMjMgQEAgdm9pZCBBdWRpb0NvbnRl
eHQ6OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAgIC8vIERvbid0IGFsbG93IHJlZ3Vs
YXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKLSAgICBUaHJlYWRJZGVudGlmaWVyIHRoaXNUaHJlYWQgPSBjdXJyZW50VGhyZWFk
KCk7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAKLSAgICBp
ZiAodGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICBpZiAoJnRoaXNUaHJl
YWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0
aGUgbG9jay4KICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KICAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRl
eC5sb2NrKCk7Ci0gICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IHRoaXNUaHJlYWQ7CisgICAg
ICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOwogICAgICAgICBtdXN0UmVsZWFz
ZUxvY2sgPSB0cnVlOwogICAgIH0KIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKQogewotICAgIFRocmVhZElkZW50aWZpZXIgdGhpc1RocmVhZCA9
IGN1cnJlbnRUaHJlYWQoKTsKLSAgICBib29sIGlzQXVkaW9UaHJlYWQgPSB0aGlzVGhyZWFkID09
IGF1ZGlvVGhyZWFkKCk7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50
KCk7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9UaHJlYWQo
KTsKIAogICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9jayBvbiBtYWlu
IHRocmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgogICAgIEFTU0VSVChpc0F1ZGlv
VGhyZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKQEAgLTcyNSw3ICs3MjIsNyBAQCBi
b29sIEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCiAgICAgCiAg
ICAgYm9vbCBoYXNMb2NrOwogICAgIAotICAgIGlmICh0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25l
clRocmVhZCkgeworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsK
ICAgICAgICAgLy8gVGhyZWFkIGFscmVhZHkgaGFzIHRoZSBsb2NrLgogICAgICAgICBoYXNMb2Nr
ID0gdHJ1ZTsKICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CkBAIC03MzQsNyArNzMx
LDcgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQog
ICAgICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAoaGFzTG9jaykKLSAgICAgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9
IHRoaXNUaHJlYWQ7CisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVh
ZDsKIAogICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOwogICAgIH0KQEAgLTc0NCwy
MCArNzQxLDIwIEBAIGJvb2wgQXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNl
TG9jaykKIAogdm9pZCBBdWRpb0NvbnRleHQ6OnVubG9jaygpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQpOworICAgIEFTU0VSVCgmVGhyZWFkOjpj
dXJyZW50KCkgPT0gbV9ncmFwaE93bmVyVGhyZWFkKTsKIAotICAgIG1fZ3JhcGhPd25lclRocmVh
ZCA9IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXI7CisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0g
bnVsbHB0cjsKICAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOwogfQogCiBib29sIEF1
ZGlvQ29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2F1ZGlvVGhyZWFkOworICAgIHJldHVybiAmVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9hdWRpb1RocmVhZDsKIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OmlzR3JhcGhPd25lcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBtX2dyYXBoT3duZXJUaHJl
YWQ7CisgICAgcmV0dXJuICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQ7
CiB9CiAKIHZvaWQgQXVkaW9Db250ZXh0OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9k
ZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5oCmluZGV4IDQ3NGU2ODdhYmM4MDA5OGE3ZWZjMzk0ZDI1NDg3YzQ4ZGZlMGUzZTQuLmQ2M2Q0
NDE2MDgzYmM4YzRhY2RlMjU4M2FkMTVkMmM5MDkwZGYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTc4LDggKzE3OCw4IEBAIGNs
YXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxBdWRpb0NvCiAgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9j
a2luZzoKICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkSWRlbnRp
ZmllciB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9IHRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sg
ZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQotICAgIFRocmVhZElkZW50aWZpZXIg
YXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9CisgICAgdm9pZCBz
ZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsg
fSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQorICAg
IFRocmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFRocmVhZCo+
KG1fYXVkaW9UaHJlYWQpOyB9CiAgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3Q7CiAKICAg
ICAvLyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0
YXJ0ZWQgYW5kIHRoZW4gc2h1dGRvd24uCkBAIC0zODEsOCArMzgxLDEwIEBAIGNsYXNzIEF1ZGlv
Q29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxBdWRpb0NvCiAKICAgICAvLyBHcmFwaCBsb2NraW5nLgogICAgIExvY2sgbV9jb250ZXh0
R3JhcGhNdXRleDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fYXVkaW9UaHJlYWQg
eyAwIH07Ci0gICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmllciBtX2dyYXBoT3duZXJUaHJlYWQ7
IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3du
cyBpdCwgb3RoZXJ3aXNlID09IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIKKyAgICAvLyBGSVhN
RTogVXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICB2b2xhdGlsZSBUaHJlYWQqIG1f
YXVkaW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgdm9sYXRpbGUgVGhyZWFkKiBtX2dyYXBoT3du
ZXJUaHJlYWQ7IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQg
d2hpY2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IG51bGxwdHIuCiAKICAgICBBc3luY0F1ZGlvRGVj
b2RlciBtX2F1ZGlvRGVjb2RlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA1MTEyODE4NTE4NGYz
Y2NiNWE1ZDBmOGU5MDAzNzYxZTlhMzUwYzdjLi42Mjk3NjZjM2I4ZTc1Y2FlMDExMWEzN2EzM2M4
ZmZiZTI4ZjFiOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEF1
ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRp
b25CdXMsIHNpemVfdCBudQogICAgIC8vIFRoaXMgd2lsbCB0YWtlIGNhcmUgb2YgYWxsIEF1ZGlv
Tm9kZXMgYmVjYXVzZSB0aGV5IGFsbCBwcm9jZXNzIHdpdGhpbiB0aGlzIHNjb3BlLgogICAgIERl
bm9ybWFsRGlzYWJsZXIgZGVub3JtYWxEaXNhYmxlcjsKICAgICAKLSAgICBjb250ZXh0KCkuc2V0
QXVkaW9UaHJlYWQoY3VycmVudFRocmVhZCgpKTsKKyAgICBjb250ZXh0KCkuc2V0QXVkaW9UaHJl
YWQoVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIAogICAgIGlmICghY29udGV4dCgpLmlzSW5pdGlh
bGl6ZWQoKSkgewogICAgICAgICBkZXN0aW5hdGlvbkJ1cy0+emVybygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCA3ODNmOTIxZjEy
N2E1YTM0ZWNlYjU4YWM2ZDVhYThkZjMzNmIyMWRhLi40MjA4ZWFlMWFmNjRkNmQyNWM2YzRmNjI5
YjdkZGUzODg2ZTBjYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3Nl
KCkKIAogdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IGRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpKTsKIAog
ICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NN
dXRleCk7CkBAIC03NjgsNyArNzY4LDcgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlOjpz
ZWN1cml0eU9yaWdpbigpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXND
b250ZXh0VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21T
ZWN1cml0eU9yaWdpbihtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKSk7Ci0gICAg
aWYgKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZElEKCkpCisg
ICAgaWYgKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgp
KQogICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
bV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKaW5kZXggYTRlOTlhZDBiZGZmOTA2YjA2YjNkN2Zi
OGM0N2QzMWNjOTRhODQyNS4uY2JhZTEzNzE1M2Q4ZWFmYWI3NTljMGEwNzQ1YzRkMzE0ZjljMDgz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZURldGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlRGV0YWlscy5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAg
ICAgICAgICwgbV9jcmVhdGlvblRpbWUoMCkKICAgICAgICAgLCBtX21vZGlmaWNhdGlvblRpbWUo
MCkKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV90aHJlYWRJRChUaHJlYWQ6OmN1cnJlbnRJ
RCgpKQorICAgICAgICAsIG1fdGhyZWFkKCZUaHJlYWQ6OmN1cnJlbnQoKSkKICNlbmRpZgogICAg
IHsKICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAgICAg
ICAgICwgbV9jcmVhdGlvblRpbWUoY3JlYXRpb25UaW1lKQogICAgICAgICAsIG1fbW9kaWZpY2F0
aW9uVGltZShtb2RpZmljYXRpb25UaW1lKQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3Ro
cmVhZElEKFRocmVhZDo6Y3VycmVudElEKCkpCisgICAgICAgICwgbV90aHJlYWQoJlRocmVhZDo6
Y3VycmVudCgpKQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3Mg
RGF0YWJhc2VEZXRhaWxzIHsKICAgICBkb3VibGUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1
cm4gbV9jcmVhdGlvblRpbWU7IH0KICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQogI2lmbmRlZiBOREVCVUcKLSAgICBUaHJl
YWRJZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRJRDsgfQorICAg
IFRocmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gKm1fdGhyZWFkOyB9CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICBk
b3VibGUgbV9jcmVhdGlvblRpbWU7CiAgICAgZG91YmxlIG1fbW9kaWZpY2F0aW9uVGltZTsKICNp
Zm5kZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFJlZlB0
cjxUaHJlYWQ+IG1fdGhyZWFkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNDhlMGM0
NzY3OGM4ZjI2NTU0OGQ5NzUxMWE1OTkwNzE5NmFhOTkyNy4uN2YxYzgxZTE5MzQyMTFkMTBhZjI0
NDRmNjU0NTJlMTRkMjZjMjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIERh
dGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNv
bnN0IFN0cmluZyYgbmFtZSwgU2VjCiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2Nr
IHsgbV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9z
ZWREYXRhYmFzZSA6IG1fcHJvcG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9w
b3NlZERhdGFiYXNlLT5kZXRhaWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFz
ZS0+b3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocHJv
cG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLnRocmVhZElEKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQo
KSB8fCBpc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Bvc2VkRGF0
YWJhc2UtPmRldGFpbHMoKS50aHJlYWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSB8fCBpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Bvc2VkRGF0YWJhc2UtPmRldGFp
bHMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAxMTUyNGNkY2Qy
YWIzNDJmYjA5ZmU2MTlhYjQ2ZjU3OTIzY2U2OWVmLi5lNGY1MTZlNzIzYTcxYWViOGY3OGYwZGIz
MzRiMTJmZmUxNTNiZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRGF0
YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKICAgICAvLyBDbGVhbiB1cCB0aGUgbGlzdCBv
ZiBhbGwgcGVuZGluZyB0cmFuc2FjdGlvbnMgb24gdGhpcyBkYXRhYmFzZSB0aHJlYWQKICAgICBt
X3RyYW5zYWN0aW9uQ29vcmRpbmF0b3ItPnNodXRkb3duKCk7CiAKLSAgICBMT0coU3RvcmFnZUFQ
SSwgIkFib3V0IHRvIGRldGFjaCB0aHJlYWQgJWkgYW5kIGNsZWFyIHRoZSByZWYgdG8gRGF0YWJh
c2VUaHJlYWQgJXAsIHdoaWNoIGN1cnJlbnRseSBoYXMgJWkgcmVmKHMpIiwgbV90aHJlYWQtPmlk
KCksIHRoaXMsIHJlZkNvdW50KCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAiQWJvdXQgdG8gZGV0
YWNoIHRocmVhZCAlcCBhbmQgY2xlYXIgdGhlIHJlZiB0byBEYXRhYmFzZVRocmVhZCAlcCwgd2hp
Y2ggY3VycmVudGx5IGhhcyAlaSByZWYocykiLCBtX3RocmVhZC5nZXQoKSwgdGhpcywgcmVmQ291
bnQoKSk7CiAKICAgICAvLyBDbG9zZSB0aGUgZGF0YWJhc2VzIHRoYXQgd2UgcmFuIHRyYW5zYWN0
aW9ucyBvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgYW55IHRyYW5zYWN0aW9ucyBhcmUgc3RpbGwg
b3BlbiwgdGhleSBhcmUgcm9sbGVkIGJhY2sgYW5kIHdlIGRvbid0IGxlYXZlIHRoZSBkYXRhYmFz
ZSBpbiBhbgogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQgc3RhdGUuCkBAIC0xMzgsNyAr
MTM4LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNl
JiBkYXRhYmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRl
eCk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAg
ICBBU1NFUlQoJlRocmVhZDo6Y3VycmVudCgpID09IG1fdGhyZWFkKTsKICAgICBBU1NFUlQoIW1f
b3BlbkRhdGFiYXNlU2V0LmNvbnRhaW5zKCZkYXRhYmFzZSkpOwogICAgIG1fb3BlbkRhdGFiYXNl
U2V0LmFkZCgmZGF0YWJhc2UpOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRGF0YWJhc2VU
aHJlYWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CiAKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBBU1NFUlQoJlRocmVhZDo6Y3Vy
cmVudCgpID09IG1fdGhyZWFkKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29w
ZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKICAgICBtX29wZW5EYXRhYmFzZVNl
dC5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCAzNDAwOWQxYjIyYzQ0YzJlMDNlZWNi
YjdmNDRlNGM3YzhkN2RhZDU4Li5hOGM1NzBiNmYzYWM0YjNhN2RkNDFjZjFiMTI3NzJiZWJkOGM0
N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIERhdGFiYXNlVGhyZWFkIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNlVGhyZWFkPiB7CiAKICAgICB2b2lkIHJl
Y29yZERhdGFiYXNlT3BlbihEYXRhYmFzZSYpOwogICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9z
ZWQoRGF0YWJhc2UmKTsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGdldFRocmVhZElEKCkgeyByZXR1
cm4gbV90aHJlYWQgPyBtX3RocmVhZC0+aWQoKSA6IDA7IH0KKyAgICBUaHJlYWQqIGdldFRocmVh
ZCgpIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKICAgICBTUUxUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTcxZTBkYjc4MWFjZTlmYzVlNzU0
N2JlMTNiN2ZlNGIzNzY3MGI5Yi4uMTg3N2YzNGE4YzNiNjFjNjJkOGNjYmU1MjFhNDdmNWIwYzRm
NzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbi5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
OjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICBtX2Vycm9yQ2FsbGJhY2tXcmFw
cGVyLmNsZWFyKCk7CiAKICAgICAvLyBUaGUgbmV4dCBzdGVwcyBzaG91bGQgYmUgZXhlY3V0ZWQg
b25seSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgotICAgIGlmIChjdXJyZW50VGhyZWFkKCkg
IT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgpKQorICAgIGlmICgm
VGhyZWFkOjpjdXJyZW50KCkgIT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJl
YWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5z
YWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAK
aW5kZXggMmVhOTNkZGYyYjU0NzU4MDY1ZjZkNjExM2EwZWRlYzFjMjNlZTVlYy4uZDRjMTE0YTVi
OWQ5NDQ0MzMxYTljNmE4ZjI3NzExZjVmNTk3MTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNw
cApAQCAtMzUzLDcgKzM1Myw3IEBAIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6flNRTFRyYW5zYWN0
aW9uQmFja2VuZCgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRh
dGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBtX2Zyb250ZW5kLmRhdGFiYXNlKCkuZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQo
KSk7CiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKIApAQCAt
NDY1LDcgKzQ2NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRlTmV4dFN0
YXRlQW5kQ2xlYW51cElmTmVlZGVkKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om5v
dGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2Zyb250ZW5kLmRh
dGFiYXNlKCkuZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSk7CiAKICAgICAvLyBJZiB0aGUg
dHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVyZSwg
c2luY2UgdGhpcwogICAgIC8vIGlzIG91ciBsYXN0IG9wcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGlu
ZyByZWxhdGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCA0OWUxNTM1MzZhNmEzNTRhNmMzNmI1MTQ5
MTA4OTczZGEzOWNiZGRjLi5mMzQzY2M1OTA0ZmMyODdhMjVlMzJkZjg5NjAwM2ExNzNjNmU2Yzcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTUy
LDcgKzUyLDcgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEgewogICAgIGV4cGxpY2l0IEpTQ2FsbGJh
Y2tEYXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIDogbV9nbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3RocmVh
ZChjdXJyZW50VGhyZWFkKCkpCisgICAgICAgICwgbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkp
CiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBKU0NhbGxiYWNr
RGF0YSB7CiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7CiAjaWYgIVBMQVRGT1JNKElPUykK
LSAgICAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFT
U0VSVChtX3RocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKICAgICB9
CiAgICAgCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tEYXRhIHsKIHByaXZhdGU6
CiAgICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKICNpZm5k
ZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZDsKKyAgICBSZWY8VGhyZWFk
PiBtX3RocmVhZDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggMGY3NGU2YzE0MDFkOGJhZGQ0YTQ1NmIxMWNjOWNm
OTRiN2E4MTQ3Ny4uNjM1Nzc2OWQzMmQzMzc4OGY5YWFkOGJhZTUyM2NjNTg3NGQzOTQ2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyR2xvYmFsU2NvcGUm
IHdvcmtlckdsb2JhbFNjb3BlKQogewogICAgIC8vIEluIGEgV29ya2VyLCB0aGUgZXhlY3V0aW9u
IHNob3VsZCBhbHdheXMgaGFwcGVuIG9uIGEgd29ya2VyIHRocmVhZC4KLSAgICBBU1NFUlQod29y
a2VyR2xvYmFsU2NvcGUudGhyZWFkKCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOwor
ICAgIEFTU0VSVCh3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJv
bGxlciA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMjE5OWQ0YTFlMTZhYTNiYmU2NGVj
NmFjMTQ5ODljY2VlNDNhYjY0MS4uZjVkYTJiNjg5OTkzNzllZTkxZTE1NDkzZWZiODE0YjU3ZDZi
YTFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0
Y2hNZXNzYWdlUG9ydEV2ZW50cygpCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0
ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB7CiAgICAgQVNTRVJUKChp
czxEb2N1bWVudD4oKnRoaXMpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CisgICAgICAgIHx8
IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZCgpKSk7CiAK
ICAgICBtX21lc3NhZ2VQb3J0cy5hZGQoJm1lc3NhZ2VQb3J0KTsKIH0KQEAgLTE3Miw3ICsxNzIs
NyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdlUG9ydChNZXNz
YWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ry
b3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKIHsKICAgICBBU1NFUlQo
KGlzPERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHx8IChpczxX
b3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKKyAgICAgICAg
fHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgJlRocmVhZDo6Y3VycmVudCgpID09
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkpKTsK
IAogICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oCmluZGV4IDY0NmRmZWZjYzBiNmRhNDU3
OTQ3YWFkMmQ4ZTM1YThhZjI4NzAxNDUuLjE2YWVhNjAxZDE0ZTI2Mjg3NDViNjA0MDRiZjc5ZmRi
YjZkMzk5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92
ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5LmgK
QEAgLTc4LDcgKzc4LDYgQEAgY2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXkgZmluYWwgOiBwdWJs
aWMgUGFnZU92ZXJsYXk6OkNsaWVudCB7CiAgICAgSW50UG9pbnQgbV9kcmFnUG9pbnQ7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQgeyAwIH07
CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+
IG1fY29udGFpbmVyTGF5ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IGQyMDRjNzYyMTBiMzM0MDRkZjQ0YzRk
YTNmY2E3YWNjZDc3YjQyYTIuLjYxZmFjM2FlOGM1MmQzOTFkM2Q5MGI4ZTE3MmEwNGYzOTM4Y2Iz
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ro
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmNwcApAQCAtNDAsOCArNDAsNyBAQCBTY3JvbGxpbmdUaHJlYWQ6OlNjcm9sbGluZ1RocmVh
ZCgpCiAKIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKQogewotICAgIFJl
ZlB0cjxUaHJlYWQ+IHRocmVhZCA9IFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCkubV90aHJl
YWQ7Ci0gICAgcmV0dXJuIHRocmVhZCAmJiB0aHJlYWQtPmlkKCkgPT0gY3VycmVudFRocmVhZCgp
OworICAgIHJldHVybiBTY3JvbGxpbmdUaHJlYWQ6OnNpbmdsZXRvbigpLm1fdGhyZWFkID09ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxl
bWVudGFibGUuaAppbmRleCAzM2Y2OWEyZDFlZDVlYjgwMGNiZDk1MDA0ZjE4NjJhZTgxOGYxMzI2
Li43OTg0YzVkNjY0MTU2N2FlZTNjMmI2YzgxNDBhNjRiYWEyMjI3NGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgKQEAgLTk4LDMzICs5OCwzMyBAQCBjbGFzcyBT
dXBwbGVtZW50YWJsZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBwcm92aWRlU3VwcGxlbWVudChjb25z
dCBjaGFyKiBrZXksIHN0ZDo6dW5pcXVlX3B0cjxTdXBwbGVtZW50PFQ+PiBzdXBwbGVtZW50KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZCht
X3RocmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JU
aHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgQVNTRVJUKCFtX3N1cHBsZW1lbnRzLmdl
dChrZXkpKTsKICAgICAgICAgbV9zdXBwbGVtZW50cy5zZXQoa2V5LCBXVEZNb3ZlKHN1cHBsZW1l
bnQpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZVN1cHBsZW1lbnQoY29uc3QgY2hhcioga2V5
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVh
ZChtX3RocmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFG
b3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgbV9zdXBwbGVtZW50cy5yZW1vdmUo
a2V5KTsKICAgICB9CiAKICAgICBTdXBwbGVtZW50PFQ+KiByZXF1aXJlU3VwcGxlbWVudChjb25z
dCBjaGFyKiBrZXkpCiAgICAgewotICAgICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFkTG9jYWxE
YXRhRm9yVGhyZWFkKG1fdGhyZWFkSWQpKTsKKyAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVh
ZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZC5nZXQoKSkpOwogICAgICAgICByZXR1cm4gbV9z
dXBwbGVtZW50cy5nZXQoa2V5KTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBwcm90
ZWN0ZWQ6Ci0gICAgU3VwcGxlbWVudGFibGUoKSA6IG1fdGhyZWFkSWQoY3VycmVudFRocmVhZCgp
KSB7IH0KKyAgICBTdXBwbGVtZW50YWJsZSgpIDogbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkp
IHsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIq
LCBzdGQ6OnVuaXF1ZV9wdHI8U3VwcGxlbWVudDxUPj4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBT
dXBwbGVtZW50TWFwOwogICAgIFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElkOworICAgIFJlZjxU
aHJlYWQ+IG1fdGhyZWFkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAK
aW5kZXggOWNjYjQwMjFmNTAzMzc4YTg2MjI0ZTRhNmQ3NTFkYTQ4YTkzMjY3Ny4uODdkNGU2OTBm
NjE2NDBiM2M1ODI4MWFiYzI5YzY0MTllMDFiNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmNwcApAQCAtMTg2LDkgKzE4Niw2IEBAIGlubGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVu
Y3Rpb246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiBhLCBjb25zdCBUaW1lCiAvLyAtLS0t
LS0tLS0tLS0tLS0tCiAKIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSNpZm5kZWYgTkRFQlVHCi0g
ICAgOiBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjAzLDcg
KzIwMCw3IEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAKIHZvaWQgVGltZXJCYXNlOjpzdGFy
dChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpCiB7Ci0g
ICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOwor
ICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0
KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZhbDsKICAgICBzZXRO
ZXh0RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBuZXh0RmlyZUludGVydmFsKTsKQEAg
LTIxMSw3ICsyMDgsNyBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUlu
dGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogCiB2b2lkIFRpbWVyQmFzZTo6c3RvcCgp
CiB7Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVh
ZCkpOworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJl
YWQuZ2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwX3M7CiAgICAgc2V0TmV4dEZp
cmVUaW1lKE1vbm90b25pY1RpbWUgeyB9KTsKQEAgLTM2Miw3ICszNTksNyBAQCB2b2lkIFRpbWVy
QmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSkKIAogdm9pZCBU
aW1lckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIG5ld1RpbWUpCiB7Ci0gICAg
QVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAg
IEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkp
KTsKICAgICBBU1NFUlQoIW1fd2FzRGVsZXRlZCk7CiAKICAgICBpZiAobV91bmFsaWduZWROZXh0
RmlyZVRpbWUgIT0gbmV3VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IGUzZmQ3Yjk2
Y2Q5M2JmOWZhMjcwNmRiYzRiNTgwN2I1NzBlZDU2YzUuLjk1NTg3YjI2ZTJmZDBjNzEwYWI1NjQz
NzQ3MjZjYTg3NDk4NTI3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMTAzLDcgKzEw
Myw3IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgVmVjdG9yPFRpbWVyQmFzZSo+KiBtX2NhY2hl
ZFRocmVhZEdsb2JhbFRpbWVySGVhcCB7IG51bGxwdHIgfTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOworICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsg
VGhyZWFkOjpjdXJyZW50KCkgfTsKICAgICBib29sIG1fd2FzRGVsZXRlZCB7IGZhbHNlIH07CiAj
ZW5kaWYKIApAQCAtMTQwLDkgKzE0MCw5IEBAIGlubGluZSBib29sIFRpbWVyQmFzZTo6aXNBY3Rp
dmUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlzIGluIHRlcm1zIG9mIFVTRShX
RUJfVEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPUykuCiAjaWYgIVBMQVRGT1JNKElPUykK
LSAgICBBU1NFUlQobV90aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV90
aHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vsc2UKLSAgICBBU1NFUlQoV2Vi
VGhyZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9tYWluX25wKCkgfHwgbV90aHJlYWQgPT0gY3Vy
cmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgcHRocmVh
ZF9tYWluX25wKCkgfHwgbV90aHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0
RmlyZVRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDFmMmI1ZjVkMGJhODUx
YjIxMzk1NGY4NDg0N2Q5M2E0MmIwYTU5ZjIuLmNlZDAwNjI0ZDZmYTk3ZTlkOGMxMDA5OTg0OGEy
NmQ1NDU3MGY2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEyMjQsOCArMTIyNCw4
IEBAIHN0YXRpYyBib29sIHNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gVGhpcyBjYWNoZSBpcyBu
b3QgdGhyZWFkIHNhZmUgc28gdGhlIGZvbGxvd2luZyBhc3NlcnRpb24gaXMgdGhlcmUgdG8KICAg
ICAvLyBtYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY2FsbGVkIGZyb20gdGhlIHNh
bWUgdGhyZWFkLgotICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGluaXRUaHJlYWRJZCA9IGN1
cnJlbnRUaHJlYWQoKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGluaXRUaHJlYWRJ
ZCk7CisgICAgc3RhdGljIFRocmVhZCogaW5pdFRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwor
ICAgIEFTU0VSVCgmVGhyZWFkOjpjdXJyZW50KCkgPT0gaW5pdFRocmVhZCk7CiAjZW5kaWYKIAog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IGtub3duRmFt
aWxpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5j
cHAKaW5kZXggMWNjYTBjY2RhODIxYWE1MmVkNWUwNTQ1MWYxZjFkNWYxY2FjODdjYi4uYjIzZGFj
MjliNGQ3NDlmY2ZjY2IyMzM3NjA5NWZlZjIwYjVlODBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtNTgsOSArNTgsMTAgQEAgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkoKQogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9u
Q29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY29tcG9zaXRvciwgVGV4dHVyZU1hcHBlckxh
eWVyKiB0YXJnZXRMYXllcikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgbV9jb21wb3NpdG9yVGhy
ZWFkSUQgPSBtX2NvbXBvc2l0b3JUaHJlYWRJRCA/IG1fY29tcG9zaXRvclRocmVhZElEIDogV1RG
OjpjdXJyZW50VGhyZWFkKCk7CisgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWQpCisgICAgICAg
IG1fY29tcG9zaXRvclRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgotICAgIEFT
U0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFT
U0VSVChjb21wb3NpdG9yKTsKICAgICBBU1NFUlQodGFyZ2V0TGF5ZXIpOwogICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CkBAIC04MCw3ICs4MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3Iq
IGNvCiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0ZSgp
CiB7Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVh
ZCgpKTsKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAgICAgRnVuY3Rpb248dm9pZCgpPiB1cGRhdGVGdW5jdGlvbjsKICAgICB7CiAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CkBAIC0xMjAsNyArMTIxLDcgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8VGV4dHVyZU1hcHAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVm
ZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdMaW50IGludGVybmFsRm9ybWF0KQogewogICAgIEFT
U0VSVChtX2xvY2suaXNIZWxkKCkpOwotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9
PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gYXZhaWxhYmxlQnVmZmVyOwogCiAgICAgYXV0byBidWZmZXJz
ID0gV1RGTW92ZShtX3VzZWRCdWZmZXJzKTsKQEAgLTE0NCw3ICsxNDUsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphcHBl
bmRUb1VudXNlZEJ1ZmZlcnMoc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0gICAg
QVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKKyAg
ICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAg
bV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICBzY2hlZHVsZVJlbGVh
c2VVbnVzZWRCdWZmZXJzKCk7CiB9CkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQoKQog
CiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQogewot
ICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7
CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgaWYgKCFtX3RhcmdldExheWVyIHx8
ICFtX3BlbmRpbmdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IGQwMDRjYzgwZmU4NjVjYjczYzJlMWQ0
YzhjYmZjZjI2Y2NlMjliODYuLmFjYzMwNjBkMGQyYWM4ODUzNmU0MzFiYjYwYjA3NTAwNzEwMmUz
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaApA
QCAtOTEsNyArOTEsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRleHR1cmVNYXBwZQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4gbV9y
ZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElk
ZW50aWZpZXIgbV9jb21wb3NpdG9yVGhyZWFkSUQgeyAwIH07CisgICAgUmVmUHRyPFRocmVhZD4g
bV9jb21wb3NpdG9yVGhyZWFkIHsgbnVsbHB0ciB9OwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBv
c2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggODBlNDU0MDg0YzgwZTA2YTIxOGJm
N2YwYjBlYWRjMjE2OTkxMzMzYy4uOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQwN2E5
OGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZC5tbQpAQCAtNjU2LDcgKzY1Niw2IEBAIHZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICphcmcp
CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIFdlYlRocmVhZCBhbmQgdGhlIG1haW4g
dGhyZWFkIHNoYXJlIHRoZSBzYW1lIFRocmVhZEdsb2JhbERhdGEgb2JqZWN0cy4KICAgICBXZWJD
b3JlOjp0aHJlYWRHbG9iYWxEYXRhKCkuc2V0V2ViQ29yZVRocmVhZERhdGEoKTsKLSAgICBpbml0
aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcigpOwogCiAjaWYgSEFWRShQVEhSRUFEX1NFVE5BTUVf
TlApCiAgICAgcHRocmVhZF9zZXRuYW1lX25wKCJXZWJUaHJlYWQiKTsKQEAgLTc2Niw3ICs3NjUs
NyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAgICAgICAgIHN0YXJ0dXBDb25kaXRp
b24ud2FpdChzdGFydHVwTG9jayk7CiAgICAgfQogCi0gICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9u
VUlUaHJlYWRJZGVudGlmaWVyKCk7CisgICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQo
KTsKIH0KIAogc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2sgKHB0aHJlYWRfY29uZF90
ICpjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9jaywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2
YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApp
bmRleCA5ODdiMzQ2YWViOTE3MjM4NDhmMDM2NzRhODFhOTE3MmNhNzgzMzYxLi40MDZjZWIxYTky
NGY1YjZiOTI4YzU0NTIzMTE4Zjg0ZTBiNTk1ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIFNR
TGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgZm9yV2ViU1FM
RGF0YWJhc2UpCiAgICAgfQogCiAgICAgaWYgKGlzT3BlbigpKQotICAgICAgICBtX29wZW5pbmdU
aHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgICAgIG1fb3BlbmluZ1RocmVhZCA9ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKICAgICBlbHNlCiAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9ICJz
cWxpdGVfb3BlbiByZXR1cm5lZCBudWxsIjsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU1FM
aXRlRGF0YWJhc2U6OmNsb3NlKCkKIHsKICAgICBpZiAobV9kYikgewogICAgICAgICAvLyBGSVhN
RTogVGhpcyBpcyBiZWluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBKUyBHQy4g
PHJkYXI6Ly9wcm9ibGVtLzU3Mzk4MTg+Ci0gICAgICAgIC8vIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vcGVuaW5nVGhyZWFkKTsKKyAgICAgICAgLy8gQVNTRVJUKCZUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBtX29wZW5pbmdUaHJlYWQpOwogICAgICAgICBzcWxpdGUzKiBkYiA9IG1fZGI7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5n
TXV0ZXgpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkK
ICAgICAgICAgc3FsaXRlM19jbG9zZShkYik7CiAgICAgfQogCi0gICAgbV9vcGVuaW5nVGhyZWFk
ID0gMDsKKyAgICBtX29wZW5pbmdUaHJlYWQgPSBudWxscHRyOwogICAgIG1fb3BlbkVycm9yID0g
U1FMSVRFX0VSUk9SOwogICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9IENTdHJpbmcoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggNzE3MmU0
ZTEzMzY2M2FjZTBmODljNTQ0ZjFmMGYxMDY2NGJiOTBjMC4uOWJlMWFkNDQ4YTA5MGJiMWM3MjZj
NDAzMDA5YTIzMzEyOWNiYTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBTUUxpdGVEYXRhYmFzZSB7
CiAgICAgc3FsaXRlMyogc3FsaXRlM0hhbmRsZSgpIGNvbnN0CiAgICAgewogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgICAgIEFTU0VSVChtX3NoYXJhYmxlIHx8IGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29wZW5pbmdUaHJlYWQgfHwgIW1fZGIpOworICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8fCAm
VGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vcGVuaW5nVGhyZWFkIHx8ICFtX2RiKTsKICNlbmRpZgog
ICAgICAgICByZXR1cm4gbV9kYjsKICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgU1FM
aXRlRGF0YWJhc2UgewogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXpl
cjsKIAogICAgIExvY2sgbV9sb2NraW5nTXV0ZXg7Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX29w
ZW5pbmdUaHJlYWQgeyAwIH07CisgICAgUmVmUHRyPFRocmVhZD4gbV9vcGVuaW5nVGhyZWFkIHsg
bnVsbHB0ciB9OwogCiAgICAgTG9jayBtX2RhdGFiYXNlQ2xvc2luZ011dGV4OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg4NjFlYjgxZDU2
ZWY5OGE4MzMxZTI4NDRjZjIwMGE5OGY5OGYxNWEuLmY2NzRkNGEyOWExZjI5YTI0ZWExZTI3ZjVm
MmRmMmU4Yzg1NTQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjCiAKIFdv
cmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gdGhyZWFkKCkudGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6
OmN1cnJlbnQoKSA9PSB0aHJlYWQoKS50aHJlYWQoKSk7CiAKICAgICBtX3BlcmZvcm1hbmNlID0g
bnVsbHB0cjsKICAgICBtX2NyeXB0byA9IG51bGxwdHI7CkBAIC0zMjksNyArMzI5LDcgQEAgdm9p
ZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb24KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNDb250ZXh0
VGhyZWFkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IHRocmVhZCgp
LnRocmVhZElEKCk7CisgICAgcmV0dXJuICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSB0aHJlYWQoKS50
aHJlYWQoKTsKIH0KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJp
ZGRlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwCmluZGV4IGI1ZGQzOGE1NjBhMjRhNWQyN2MyN2NiNTUwYWIxODY4MTczZjdkNzku
LmVkZDdlODMxMTM1ZTA0ZDU5ZTBhODc2ZDQ2MjhmMTNkMzI5MGQ1ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXImIHdv
cmtlck9iamVjdCkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAg
QVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWlu
VGhyZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWRJRCgpKSk7
CisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgJiYgJlRocmVhZDo6Y3VycmVudCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWQoKSkpOwogCiAgICAg
Ly8gTm9ib2R5IG91dHNpZGUgdGhpcyBjbGFzcyByZWYgY291bnRzIHRoaXMgb2JqZWN0LiBUaGUg
b3JpZ2luYWwgcmVmCiAgICAgLy8gaXMgYmFsYW5jZWQgYnkgdGhlIGRlcmVmIGluIHdvcmtlckds
b2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwuCkBAIC02OSw3ICs2OSw3IEBAIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogewogICAgIEFTU0VSVCghbV93b3Jr
ZXJPYmplY3QpOwogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2Nv
cGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFk
KCkudGhyZWFkSUQoKSkpOworICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhy
ZWFkKCkpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJv
b2wgaXNPbmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5jcHAKaW5kZXggMjM2MWJmNzQ1YWFiNTRmNTkxMzYwNzM5Mjc2OWI2MmFkYjNlMGJjZS4u
NTZmYWY3ZDU0ZWUyOWZjYjhhMzEyNWNmYmVlYjVhNWQ0ODAxMDc1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgTWVzc2FnZVF1
ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyR2xvYmFsU2NvcGUq
IGNvbnRleHQsIGNvbnMKIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVu
SW5Nb2RlKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBNb2RlUHJlZGljYXRlJiBw
cmVkaWNhdGUsIFdhaXRNb2RlIHdhaXRNb2RlKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAg
ICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkp
OworICAgIEFTU0VSVChjb250ZXh0LT50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogCiAgICAgSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxs
YmFjayB0aW1lckFkZGVkVGFzayA9IFdURjo6Y3JlYXRlU2hhcmVkVGFzazxKU0M6OkpTUnVuTG9v
cFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CiAgICAgICAgIC8vIFdlIGRv
bid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIGhlcmUsIHdlIGp1c3Qgd2FudCB0byBsb29wIGFyb3Vu
ZCBydW5Jbk1vZGUKQEAgLTIyMSw3ICsyMjEsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdv
cmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29ucwog
dm9pZCBXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2VyR2xvYmFsU2NvcGUqIGNv
bnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVChjb250ZXh0LT50aHJl
YWQoKS50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQt
PnRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1f
bWVzc2FnZVF1ZXVlLmtpbGxlZCgpKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA0OWU1YzRiYmJmNTJiZGNhODE1N2MxYzA3ZmIx
OTZlOGRlYmVjOTZiLi43YzQyZTI5M2RhMzQ2NGI1Yzk3ZGE1NDYxOTIwNDQ1NzQ1NzBmOGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xh
c3MgV29ya2VyVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlclRocmVh
ZD4gewogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIGV2YWx1YXRlQ2FsbGJhY2spOwogICAgIHZvaWQgc3RvcChXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiB0ZXJtaW5hdGVkQ2FsbGJhY2spOwogCi0gICAgVGhyZWFkSWRlbnRp
ZmllciB0aHJlYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkID8gbV90aHJlYWQtPmlkKCkg
OiAwOyB9CisgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQo
KTsgfQogICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7IH0K
ICAgICBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3dvcmtlckxvYWRlclByb3h5OyB9CiAgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2Vy
RGVidWdnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94eTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwCmluZGV4IDE1ZDBmZWNjNzNmM2Y1OTFkYmY5YzIwZjA3MWE1YWNjNGRh
MTA2MTQuLmIyNWZjZmE0ODAyNDIwMjVlYzYxNmE1NGMwYmJlNDA2YmUzMmJhNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LAogU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6flNlcnZpY2VXb3JrZXJDb250YWluZXIoKQogewogI2lmbmRl
ZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkp
OworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgp
KTsKICNlbmRpZgogfQogCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJM
Jgogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYihSZWY8U2VydmljZVdv
cmtlckpvYj4mJiBqb2IpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQu
Z2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQobV9zd0Nv
bm5lY3Rpb24pOwpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6c3RhcnRNZXNzYWdlcygpCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxl
ZFdpdGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBFeGNlcHRpb24mIGV4
Y2VwdGlvbikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQg
PT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9
PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChhdXRvKiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJK
b2ImIGpvYiwgY29uc3QKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNr
VG9GaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdl
dCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgaWYgKGF1dG8qIHJlZ2lz
dHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQoaWRlbnRpZmllcikpCkBAIC0zMjAsNyArMzIw
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVVcGRh
dGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWcKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiBkYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NF
UlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2Ny
ZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAg
YXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewpAQCAtMzYwLDcg
KzM2MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVn
aXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpv
YiYgam9iLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQogewogI2lmbmRlZiBOREVCVUcKLSAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgog
CiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewpAQCAt
MzgxLDcgKzM4MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRX
aXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9i
KQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJy
ZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVh
ZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VX
b3JrZXJDb250YWluZXIgJXAgc3RhcnRpbmcgc2NyaXB0IGZldGNoIGZvciBqb2IgJXMiLCB0aGlz
LCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQw
Miw3ICs0MDIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0
Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRp
b25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIExPRyhTZXJ2aWNl
V29ya2VyLCAiU2V2aWNlV29ya2VyQ29udGFpbmVyICVwIGZpbmlzaGVkIGZldGNoaW5nIHNjcmlw
dCBmb3Igam9iICVzIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb24K
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2
aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBzdGQ6Om9wdGlv
bmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3Jl
YXRpb25UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBM
T0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmYWlsZWQgZmV0Y2hp
bmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9i
LCBjb25zdAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JEaWRGaW5pc2goU2Vydmlj
ZVdvcmtlckpvYiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFk
LmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgYXV0byB0YWtlbiA9
IG1fam9iTWFwLnRha2Uoam9iLmlkZW50aWZpZXIoKSk7CkBAIC00NzAsNyArNDcwLDcgQEAgU1dD
bGllbnRDb25uZWN0aW9uJiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjplbnN1cmVTV0NsaWVudENv
bm5lY3Rpb24oKQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24o
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogI2lmbmRlZiBOREVC
VUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAg
IEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNl
bmRpZgogCiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuYWRkU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkluU2VydmVyKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtNDgwLDcg
KzQ4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24pCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFk
ID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkg
PT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBtX3N3Q29ubmVjdGlvbi0+cmVt
b3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKHJlZ2lzdHJhdGlvbi5pZGVudGlm
aWVyKCkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzCiB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmlyZUNvbnRyb2xsZXJDaGFu
Z2VFdmVudCgpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFk
ID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkg
PT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBpZiAobV9pc1N0b3BwZWQpCkBA
IC01MTMsNyArNTEzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKIERv
Y3VtZW50T3JXb3JrZXJJZGVudGlmaWVyIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJ
ZGVudGlmaWVyKCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJl
YWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQo
KSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggMmQ5YTlmMDQ2YWJiNGFjZWYwMzYx
Nzk4ZjYzZjE2MTg4ZDgyN2QwMC4uZWExMmU4YzU5NGRmYjQzM2MzNjQ4ZDM1Y2Y1ZjkxNTYxOWM5
YTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0xMTksNyArMTE5LDcgQEAgY2xhc3MgU2VydmljZVdv
cmtlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBw
dWJsaWMgQWMKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKj4gbV9yZWdpc3RyYXRpb25zOwogCiAjaWZuZGVm
IE5ERUJVRwotICAgIFRocmVhZElkZW50aWZpZXIgbV9jcmVhdGlvblRocmVhZCB7IGN1cnJlbnRU
aHJlYWQoKSB9OworICAgIFJlZjxUaHJlYWQ+IG1fY3JlYXRpb25UaHJlYWQgeyBUaHJlYWQ6OmN1
cnJlbnQoKSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggZjczZjkwNzJhMDNjM2MwNWUzMjYx
NTQ3YTg4OTFhZGE5NTcyNDA5OS4uNzk2NjBkZDIxOWIxMjc4ZDYwYjczZmIwNzdjZTk1YTFkYjQ0
OTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmNwcApAQCAtNDcsMTIgKzQ3LDEyIEBAIFNlcnZpY2VXb3JrZXJKb2I6OlNlcnZp
Y2VXb3JrZXJKb2IoU2VydmljZVdvcmtlckpvYkNsaWVudCYgY2xpZW50LCBSZWY8RGVmZXJyZWRQ
CiAKIFNlcnZpY2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2VySm9iKCkKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9u
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkpOwog
ICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwpAQCAt
NjEsNyArNjEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNlcHRpb24o
Y29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVz
b2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0
YSwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFT
U0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsKICAgICBB
U1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24o
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJgogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6
OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1
bHQpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9jcmVhdGlvblRocmVhZC5nZXQoKSk7
CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CkBA
IC03OSw3ICs3OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdp
c3RyYXRpb25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsCiAKIHZvaWQgU2VydmljZVdv
cmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9jcmVhdGlvblRocmVhZC5nZXQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAg
ICBtX2NsaWVudC0+c3RhcnRTY3JpcHRGZXRjaEZvckpvYigqdGhpcyk7CkBAIC04Nyw3ICs4Nyw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaCgpCiAKIHZvaWQgU2Vy
dmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlv
blRocmVhZCk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fY3JlYXRpb25UaHJl
YWQuZ2V0KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgLy8gRklYTUU6IFdv
cmtlclNjcmlwdExvYWRlciBpcyB0aGUgd3JvbmcgbG9hZGVyIGNsYXNzIHRvIHVzZSBoZXJlLCBi
dXQgdGhlcmUncyBub3RoaW5nIGVsc2UgYmV0dGVyIHJpZ2h0IG5vdy4KQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmZXRjaFNjcmlwdFdpdGhDb250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkp
OwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogICAgIEFTU0VSVChtX3NjcmlwdExvYWRlcik7
CiAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogCiB2b2lkIFNl
cnZpY2VXb3JrZXJKb2I6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsKICAgICBBU1NFUlQobV9zY3JpcHRMb2FkZXIp
OwogICAgIAogICAgIGlmICghbV9zY3JpcHRMb2FkZXItPmZhaWxlZCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKaW5kZXggYzMwYTRm
Yjg0ODk3Mzg5YzE1YjYyN2YxZGY5ZGVmZTI4OTE3OWU0Yy4uOWM0MjhlNzcyMDAzNDI5OTFhZjMx
NzNhMjllMDQwMTI5NWQ1MjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5oCkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIFNlcnZpY2VX
b3JrZXJKb2IgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckpvYj4s
IHB1YmxpYyBXCiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX2xhc3RSZXNwb25zZTsKIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fY3JlYXRpb25UaHJlYWQgeyBj
dXJyZW50VGhyZWFkKCkgfTsKKyAgICBSZWY8VGhyZWFkPiBtX2NyZWF0aW9uVGhyZWFkIHsgVGhy
ZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGEzN2Q2MTUx
NmE2MjgwMGY1YTQzMWI4OTFjNzI3MzRmMDkwMzViY2MuLmFkYzc4NWVmNWZjNGY4ZjUzZGMyMjU5
NWE1ZmFjOWE5NzNlOTUxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM0MCwxMyArMzQwLDEzIEBAIGNs
YXNzIFBlbmRpbmdDYWxsYmFja3MgewogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogc3RhdGljIGludCBnbG9iYWxEZXNjcmlwdG9yID0gMDsKLXN0YXRpYyBUaHJlYWRJZGVu
dGlmaWVyIGxpYnhtbExvYWRlclRocmVhZCA9IDA7CitzdGF0aWMgVGhyZWFkKiBsaWJ4bWxMb2Fk
ZXJUaHJlYWQgeyBudWxscHRyIH07CiAKIHN0YXRpYyBpbnQgbWF0Y2hGdW5jKGNvbnN0IGNoYXIq
KQogewogICAgIC8vIE9ubHkgbWF0Y2ggbG9hZHMgaW5pdGlhdGVkIGR1ZSB0byB1c2VzIG9mIGxp
YnhtbDIgZnJvbSB3aXRoaW4gWE1MRG9jdW1lbnRQYXJzZXIgdG8gYXZvaWQKICAgICAvLyBpbnRl
cmZlcmluZyB3aXRoIGNsaWVudCBhcHBsaWNhdGlvbnMgdGhhdCBhbHNvIHVzZSBsaWJ4bWwyLiAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTMKLSAgICByZXR1cm4g
WE1MRG9jdW1lbnRQYXJzZXJTY29wZTo6Y3VycmVudENhY2hlZFJlc291cmNlTG9hZGVyICYmIGN1
cnJlbnRUaHJlYWQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJlYWQ7CisgICAgcmV0dXJuIFhNTERvY3Vt
ZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlciAmJiAmVGhyZWFkOjpj
dXJyZW50KCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkOwogfQogCiBjbGFzcyBPZmZzZXRCdWZmZXIg
ewpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93RXh0ZXJuYWxMb2Fk
KGNvbnN0IFVSTCYgdXJsKQogc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkK
IHsKICAgICBBU1NFUlQoWE1MRG9jdW1lbnRQYXJzZXJTY29wZTo6Y3VycmVudENhY2hlZFJlc291
cmNlTG9hZGVyKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGxpYnhtbExvYWRlclRo
cmVhZCk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJl
YWQpOwogCiAgICAgVVJMIHVybChVUkwoKSwgdXJpKTsKIApAQCAtNDk1LDE3ICs0OTUsMjAgQEAg
c3RhdGljIHZvaWQgZXJyb3JGdW5jKHZvaWQqLCBjb25zdCBjaGFyKiwgLi4uKQogfQogI2VuZGlm
CiAKLXN0YXRpYyBib29sIGRpZEluaXQgPSBmYWxzZTsKLQotUmVmPFhNTFBhcnNlckNvbnRleHQ+
IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZVN0cmluZ1BhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhh
bmRsZXJzLCB2b2lkKiB1c2VyRGF0YSkKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVYTUxQYXJzZXIo
KQogewotICAgIGlmICghZGlkSW5pdCkgeworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFn
OworICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIFsmXSB7CiAgICAgICAgIHhtbEluaXRQYXJzZXIo
KTsKICAgICAgICAgeG1sUmVnaXN0ZXJJbnB1dENhbGxiYWNrcyhtYXRjaEZ1bmMsIG9wZW5GdW5j
LCByZWFkRnVuYywgY2xvc2VGdW5jKTsKICAgICAgICAgeG1sUmVnaXN0ZXJPdXRwdXRDYWxsYmFj
a3MobWF0Y2hGdW5jLCBvcGVuRnVuYywgd3JpdGVGdW5jLCBjbG9zZUZ1bmMpOwotICAgICAgICBs
aWJ4bWxMb2FkZXJUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Ci0gICAgICAgIGRpZEluaXQgPSB0
cnVlOwotICAgIH0KKyAgICAgICAgbGlieG1sTG9hZGVyVGhyZWFkID0gJlRocmVhZDo6Y3VycmVu
dCgpOworICAgIH0pOworfQorCitSZWY8WE1MUGFyc2VyQ29udGV4dD4gWE1MUGFyc2VyQ29udGV4
dDo6Y3JlYXRlU3RyaW5nUGFyc2VyKHhtbFNBWEhhbmRsZXJQdHIgaGFuZGxlcnMsIHZvaWQqIHVz
ZXJEYXRhKQoreworICAgIGluaXRpYWxpemVYTUxQYXJzZXIoKTsKIAogICAgIHhtbFBhcnNlckN0
eHRQdHIgcGFyc2VyID0geG1sQ3JlYXRlUHVzaFBhcnNlckN0eHQoaGFuZGxlcnMsIDAsIDAsIDAs
IDApOwogICAgIHBhcnNlci0+X3ByaXZhdGUgPSB1c2VyRGF0YTsKQEAgLTUyMiwxMyArNTI1LDcg
QEAgUmVmPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZVN0cmluZ1Bh
cnNlcih4bWxTQVhIYW5kbGVyUHRyIGhhbmQKIC8vIENodW5rIHNob3VsZCBiZSBlbmNvZGVkIGlu
IFVURi04CiBSZWZQdHI8WE1MUGFyc2VyQ29udGV4dD4gWE1MUGFyc2VyQ29udGV4dDo6Y3JlYXRl
TWVtb3J5UGFyc2VyKHhtbFNBWEhhbmRsZXJQdHIgaGFuZGxlcnMsIHZvaWQqIHVzZXJEYXRhLCBj
b25zdCBDU3RyaW5nJiBjaHVuaykKIHsKLSAgICBpZiAoIWRpZEluaXQpIHsKLSAgICAgICAgeG1s
SW5pdFBhcnNlcigpOwotICAgICAgICB4bWxSZWdpc3RlcklucHV0Q2FsbGJhY2tzKG1hdGNoRnVu
Yywgb3BlbkZ1bmMsIHJlYWRGdW5jLCBjbG9zZUZ1bmMpOwotICAgICAgICB4bWxSZWdpc3Rlck91
dHB1dENhbGxiYWNrcyhtYXRjaEZ1bmMsIG9wZW5GdW5jLCB3cml0ZUZ1bmMsIGNsb3NlRnVuYyk7
Ci0gICAgICAgIGxpYnhtbExvYWRlclRocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAg
ZGlkSW5pdCA9IHRydWU7Ci0gICAgfQorICAgIGluaXRpYWxpemVYTUxQYXJzZXIoKTsKIAogICAg
IC8vIGFwcGVuZEZyYWdtZW50U291cmNlKCkgY2hlY2tzIHRoYXQgdGhlIGxlbmd0aCBkb2Vzbid0
IG92ZXJmbG93IGFuIGludC4KICAgICB4bWxQYXJzZXJDdHh0UHRyIHBhcnNlciA9IHhtbENyZWF0
ZU1lbW9yeVBhcnNlckN0eHQoY2h1bmsuZGF0YSgpLCBjaHVuay5sZW5ndGgoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBj
Mzc3NTgyNTRiNGQ0ZjhmMDFjZTlhMzhlNmYwZGU4YjUyNTg5OTZhLi4wN2VlZGNiNjNjNDhlZTZi
Y2IxNjZkOTJiYjhhNjdkYTE4NGIwYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNkZWZpbmUg
QVNTRVJUX05PVF9TWU5DX1RIUkVBRCgpIEFTU0VSVCghbV9zeW5jVGhyZWFkUnVubmluZyB8fCAh
SVNfSUNPTl9TWU5DX1RIUkVBRCgpKQogCiAvLyBGb3IgbWV0aG9kcyB0aGF0IGFyZSBtZWFudCB0
byBzdXBwb3J0IHRoZSBzeW5jIHRocmVhZCBPTkxZCi0jZGVmaW5lIElTX0lDT05fU1lOQ19USFJF
QUQoKSAobV9zeW5jVGhyZWFkLT5pZCgpID09IGN1cnJlbnRUaHJlYWQoKSkKKyNkZWZpbmUgSVNf
SUNPTl9TWU5DX1RIUkVBRCgpIChtX3N5bmNUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKQog
I2RlZmluZSBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpIEFTU0VSVChJU19JQ09OX1NZTkNfVEhS
RUFEKCkpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HZW5lcmljQ2FsbGJhY2suaAppbmRleCAyYjdiMmY1YzdjYTAxYzRlMzVkYTQzNGIzMzE0ZTY4
ZjdkYmFjZmI3Li41MWYyZDI3MjA1ZGUwNTA2ZDBjNDcwYjk5ZjkzYzkxODM2MTE1YWZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtOTQsMTMgKzk0LDEz
IEBAIGNsYXNzIEdlbmVyaWNDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0Jhc2UgewogCiAgICAg
dmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX29yaWdpblRocmVhZC5nZXQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jYWxs
YmFjayk7CiAgICAgfQogCiAgICAgdm9pZCBwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUo
VC4uLiByZXR1cm5WYWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX29yaWdpblRocmVhZC5nZXQoKSk7CiAKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE3LDcgKzExNyw3IEBAIGNsYXNzIEdlbmVyaWNDYWxsYmFj
ayA6IHB1YmxpYyBDYWxsYmFja0Jhc2UgewogCiAgICAgdm9pZCBpbnZhbGlkYXRlKEVycm9yIGVy
cm9yID0gRXJyb3I6OlVua25vd24pIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gbV9vcmlnaW5UaHJlYWQuZ2V0KCkpOwogCiAgICAgICAgIGlmICghbV9jYWxs
YmFjaykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBHZW5l
cmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKICAgICBzdGQ6Om9wdGlvbmFsPENh
bGxiYWNrRnVuY3Rpb24+IG1fY2FsbGJhY2s7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgVGhyZWFk
SWRlbnRpZmllciBtX29yaWdpblRocmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVm
PFRocmVhZD4gbV9vcmlnaW5UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZDFhYWRkZTVjNDkxMzYzMGFlYzkwODA0Mzg2NDRjMWVmMjEyOWE2NS4uZmE5ZmFmNWNiNzY4ZjBm
ZjcyNjc1NDU2OWY4ZDAxY2Q1YjBhOTNjMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTEyLTAzICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRuJ3Qg
aGF2ZSBib3RoIFRocmVhZCBhbmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgIChydW5UaHJlYWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorCiAyMDE3LTEyLTAxICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IGF1dG8t
aW5zdGFsbCBweXRlc3QgaW5zdGVhZCBvZiBpbXBvcnRpbmcgaXQgZnJvbSB3cHQgdG9vbHMgZGly
ZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXgg
MzI3ZjIwYjFkZjA0Y2ViYjg4ZjE0MmY1YzlhOWE2NjYyNWVkYmYwZC4uZWZkN2E2YmQyNWVkNGVi
YWM0YjlmZDhjOTBjZjYyZWM3NDFkMDk1NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQpAQCAtMTA2NywxMSArMTA2NywxMSBAQCBzdGF0aWMgdm9pZCBzZXRE
ZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogCiBzdGF0aWMgdm9pZCBydW5U
aHJlYWQoKQogewotICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIHByZXZpb3VzSWQgPSAwOwot
ICAgIFRocmVhZElkZW50aWZpZXIgY3VycmVudElkID0gY3VycmVudFRocmVhZCgpOworICAgIHN0
YXRpYyBUaHJlYWQqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBUaHJlYWQmIGN1cnJlbnQgPSBU
aHJlYWQ6OmN1cnJlbnQoKTsKICAgICAvLyBWZXJpZnkgMiBzdWNjZXNzaXZlIHRocmVhZHMgZG8g
bm90IGdldCB0aGUgc2FtZSBJZC4KLSAgICBBU1NFUlQocHJldmlvdXNJZCAhPSBjdXJyZW50SWQp
OwotICAgIHByZXZpb3VzSWQgPSBjdXJyZW50SWQ7CisgICAgQVNTRVJUKHByZXZpb3VzICE9ICZj
dXJyZW50KTsKKyAgICBwcmV2aW91cyA9ICZjdXJyZW50OwogfQogCiBzdGF0aWMgdm9pZCogcnVu
UHRocmVhZCh2b2lkKikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xv
dC5jcHAKaW5kZXggYmE4ZGQ1NmE1YjMwYTI0ZWY1ZmRjZTNiZDMwMWQwNmY1NGFkNGU4OC4uZjk0
NDBkMDlmZTFlMTJhODA2NTQwYjQyZTIxMDljOTFhNGM3N2I2ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAgLTUxLDcgKzUxLDYgQEAgc3RydWN0
IFNpbmdsZUxhdGNoVGVzdCB7CiAgICAgICAgICAgICAgICAgVGhyZWFkOjpjcmVhdGUoCiAgICAg
ICAgICAgICAgICAgICAgICJQYXJraW5nIFRlc3QgVGhyZWFkIiwKICAgICAgICAgICAgICAgICAg
ICAgWyZdICgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9ORSgwdSwgY3VycmVu
dFRocmVhZCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvd24oKTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihsb2NrKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328291</attachid>
            <date>2017-12-03 07:29:16 -0800</date>
            <delta_ts>2017-12-03 07:32:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180308-20171204002915.patch</filename>
            <type>text/plain</type>
            <size>205083</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDI4ZTNiNzZhZGVjZWZkZGQyMjBmNjEzMGY4ZjM5ZGEzOThjMmU0Li4xNTE5ZDQyNTRkNmVhODAw
ZmMwMDA5NjliMThkYWNlZjM2NWFkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVh
ZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5l
VGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25TY29wZS5j
cHA6CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjp1bmV4cGVjdGVkRXhjZXB0aW9uTWVz
c2FnZSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpTQzo6SlNMb2Nr
OjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dpbmdUaHJlYWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpWTTo6Y2xlYXJFeGNlcHRpb24pOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5j
cHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6cHJpbnRWZXJpZmljYXRpb25IZWFkZXIp
OgorCiAyMDE3LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBKYXZhU2NyaXB0Q29yZTogbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGluIE1hdGggZnVu
Y3Rpb25zIHRoYXQgdGFrZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA5YmU0YzQ1Y2Q0
NmQxODYyOTU2OWI3YzdhNTBjYWVkZTJhODk3YjAuLmM0YjMwZmE0ZTc1MDk1YTkwOWE0ZjI4OTQ5
NjgzNDU0Njk1ZmRhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTctMTItMDMgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgV1RGIHNob3VsZG4ndCBo
YXZlIGJvdGggVGhyZWFkIGFuZCBUaHJlYWRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGQgdXNlIGEgcG9pbnRlciBvZiBX
VEY6OlRocmVhZCBpbnN0ZWFkIG9mIFRocmVhZElkZW50aWZpZXIuCisKKyAgICAgICAgT25lIHBy
b2JsZW0gaXMgdGhhdCBXaW5kb3dzIHN1cHBvcnQgbGlicmFyeSB1c2VzIFdURjo6Y3JlYXRlVGhy
ZWFkLAorICAgICAgICB3aGljaCByZXR1cm5zIFRocmVhZElkZW50aWZpZXIuIFNvIHdlIGNhbm5v
dCBkcm9wIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaW4gV2luZG93cyBlbnZpcm9ubWVudC4g
VGhpcyBwYXRjaCBrZWVwcyBUaHJlYWRJZGVudGlmaWVyIGluIFdpbmRvd3MuCisKKyAgICAgICAg
KiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KToKKyAgICAgICAgKFdURjo6aXNNYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6Y2FuQWNjZXNz
VGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgor
ICAgICAgICAqIHd0Zi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6
cGFya0NvbmRpdGlvbmFsbHlJbXBsKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJr
T25lKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJrT25lSW1wbCk6CisgICAgICAg
IChXVEY6OlBhcmtpbmdMb3Q6OnVucGFya0NvdW50KToKKyAgICAgICAgKiB3dGYvUmVjdXJzaXZl
TG9ja0FkYXB0ZXIuaDoKKyAgICAgICAgKFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OmxvY2sp
OgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6dW5sb2NrKToKKyAgICAgICAg
KFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OnRyeUxvY2spOgorICAgICAgICAqIHd0Zi9UaHJl
YWRpbmcuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmR1bXAgY29uc3QpOgorICAgICAgICAq
IHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppZCBjb25zdCk6CisgICAg
ICAgIChXVEY6OlRocmVhZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaHJlYWQpOiBEZWxldGVkLgorICAgICAg
ICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbik6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6ZGV0YWNoKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNw
ZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFu
ZGxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50SUQpOiBEZWxldGVkLgorICAgICAg
ICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OndhaXRGb3JD
b21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkOjpjdXJyZW50RHlpbmcpOgorICAgICAgICAqIHd0Zi9tYWMvTWFpblRocmVhZE1h
Yy5tbToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQpOgorICAg
ICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkUGxhdGZvcm0pOgorICAgICAgICAoV1RGOjpj
YW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQpOgorICAgICAgICAoV1RGOjppbml0aWFs
aXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
Ojppbml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcik6IERlbGV0ZWQuCisKIDIwMTctMTItMDIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZhY3RvciBvdXQg
dGhlICJkYXRhYmFzZVRhc2tRdWV1ZSIgcGFydHMgb2YgSURCU2VydmVyIGludG8gc29tZXRoaW5n
IHJldXNhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJlYjc0ZWIwYWRhMzU0NDdiNzFiNjQzZmQ1ZjA4YmUy
MTYwM2I0Y2MuLmI1YjRmY2JkOGQxZjNjNzViMWY1YzBiMzEzNjY2ZDA0NzI2ZjliOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNTMgQEAKKzIwMTctMTItMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgV1RGIHNob3VsZG4ndCBoYXZlIGJvdGggVGhy
ZWFkIGFuZCBUaHJlYWRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkFj
dGl2ZURPTU9iamVjdDo6b3JpZ2luVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkFjdGl2ZURPTU9iamVjdDo6cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpjYWxsRnVuY3Rpb25Pbk9yaWdpblRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6Om9yaWdpblRocmVhZElE
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpJREJDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjp+SURCQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6c291cmNlc0RlbGV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
Ojp0cmFuc2FjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmFkdmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6dW5jaGVja2VkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJD
dXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c2V0
R2V0UmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6OnZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpy
ZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6Om1heWJlQ2xvc2VJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OndpbGxDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OndpbGxBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
OjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpk
aWRDb21taXRPckFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRpZENy
ZWF0ZUluZGV4SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGlkRGVsZXRl
SW5kZXhJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6SURCSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6On5JREJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bmFtZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6c2V0TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmtleVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OnVuaXF1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bXVsdGlFbnRyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6cm9sbGJhY2tJbmZvRm9yVmVyc2lvbkNoYW5nZUFi
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4Ojpkb0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsS2V5
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bWFya0FzRGVsZXRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omdl
dEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpnZXRBbGxLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpt
YXJrQXNEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpyb2xsYmFj
a0ZvclZlcnNpb25DaGFuZ2VBYm9ydCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T3BlbkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojp+
SURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojpv
bkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbkRpZEZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1
ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPcGVuREJSZXF1ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VDb21wbGV0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvbkRlbGV0ZURhdGFiYXNlU3VjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RCbG9ja2VkKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVxdWVzdDo6c2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OnRyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2VJbmRleElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVxdWVzdGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnJlcXVlc3RlZEluZGV4UmVj
b3JkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpldmVudFRhcmdl
dEludGVyZmFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjphY3RpdmVE
T01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZW5xdWV1ZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzdWx0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OndpbGxJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6Y29tcGxldGVSZXF1ZXN0QW5kRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0OjpvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3Vj
Y2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp+SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRiKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjplcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0
RHVlVG9GYWlsZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp0
cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVybmFsQWJv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRD
YW5jZWxSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aXNGaW5pc2hlZE9yRmluaXNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjphZGRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpyZW1vdmVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzY2hl
ZHVsZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1
bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVDb21wbGV0ZWRPcGVyYXRpb25UaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZmluaXNoQWJvcnRPckNvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246Om5vdGlmeURpZEFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpkaWRBYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ29t
bWl0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVPYmplY3RTdG9yZU9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4T25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFJlbmFtZUluZGV4T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJl
Y29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJ
bmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmdldEFsbFJl
Y29yZHNPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
QWxsUmVjb3Jkc09uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0R2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldENvdW50T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZVJlY29yZE9uU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVSZWNvcmRPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVP
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJPYmpl
Y3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0UHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RT
dG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWREZWxl
dGVPYmplY3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVsZXRl
SW5kZXhPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkRGVs
ZXRlSW5kZXhPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b3Bl
cmF0aW9uQ29tcGxldGVkT25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmVzdGFibGlzaE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjphY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVhY3RpdmF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OnJlbW92ZUl0ZW1zTWF0Y2hpbmdD
dXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb246On5UcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRl
T25UaGlzVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OmRvQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6b3JpZ2luVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9yaWdp
blRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp0cnlMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6dW5sb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aXNBdWRp
b1RocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzR3JhcGhP
d25lciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c2V0QXVkaW9UaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjphdWRpb1RocmVhZCBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJm
b3JtQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzOjpEYXRhYmFzZURldGFpbHMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzOjp0aHJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VEZXRhaWxzOjp0aHJlYWRJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VDbG9zZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhy
ZWFkOjpnZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmdldFRo
cmVhZElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhh
bmRsZUNsb3NlZERhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OmRvQ2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ6Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0
YTo6SlNDYWxsYmFja0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6On5K
U0NhbGxiYWNrRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAg
ICAgKiBwYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVh
ZDo6aXNDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnByb3ZpZGVTdXBwbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpyZW1vdmVTdXBwbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpyZXF1aXJlU3VwcGxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6U3VwcGxlbWVudGFibGUpOgorICAgICAgICAq
IHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c2V0
TmV4dEZpcmVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9z
aXRpbmdUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjpnZXRBdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YXBwZW5kVG9VbnVzZWRCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3YXBC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tOgorICAgICAgICAoUnVuV2ViVGhyZWFkKToKKyAgICAgICAgKFN0YXJ0V2ViVGhy
ZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzcWxpdGUzSGFuZGxlIGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmlzQ29udGV4dFRocmVhZCBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQcm94eSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5M
b29wOjpydW5DbGVhbnVwVGFza3MpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnRocmVhZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpv
Yik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRX
aXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVu
cmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdp
c3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2VySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAg
ICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWF0Y2hGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVYTUxQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MUGFy
c2VyQ29udGV4dDo6Y3JlYXRlU3RyaW5nUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFBh
cnNlckNvbnRleHQ6OmNyZWF0ZU1lbW9yeVBhcnNlcik6CisKIDIwMTctMTItMDIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgcmVnaXN0cmF0aW9uIGFj
dGl2YXRpb24gYW5kIGNsZWFyaW5nIGZyb20gU1dTZXJ2ZXJKb2JRdWV1ZSB0byBTV1NlcnZlclJl
Z2lzdHJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NDM3NTAyYmNkZmQwN2JlYTIzNDZkYThlNWYyNDQxZjdh
MjVmNThkLi41NTZlN2I4OWEwNWJhYTJlYjY5Nzc4M2E3NzU0OWNjY2E2MDAzZDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRuJ3QgaGF2ZSBib3RoIFRocmVhZCBh
bmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6OkdlbmVy
aWNDYWxsYmFjazo6fkdlbmVyaWNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWND
YWxsYmFjazo6cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKToKKwogMjAxNy0xMi0wMiAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldGFsbApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXgg
MWRlOGNhYTg5ZDQxODA2ODFiNzI3NjhjNzJlZjM5NWE1NTIxYjMxNi4uODI0NjI3MmFjOGE4ZWVh
NTk5ZTMzZjk3ZmM5MzdjZmNlNGI2YzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0xNjAsOCArMTYwLDggQEAgYm9vbCBN
YWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiBsb2NrZXIsIHZvaWQKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgdGhyZWFkcyB3
aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgVGhyZWFkR3JvdXAuIFRodXMsIHdlIGRvIG5vdCBkbyBh
bnl0aGluZyBoZXJlIGV4Y2VwdCBmb3IgcmVwb3J0aW5nLgogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0LmVycm9yKCkgIT0gS0VSTl9TVUNDRVNTKTsKICAgICAgICAgICAgICAgICAg
ICAgV1RGUmVwb3J0RXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9O
LAotICAgICAgICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9u
IGVuY291bnRlcmVkIGFuIGludmFsaWQgdGhyZWFkIChlcnIgMHgleCk6IFRocmVhZCBbJWQvJWQ6
ICVwXSBpZCAldS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9yKCksIGlu
ZGV4LCB0aHJlYWRzLnNpemUoKSwgdGhyZWFkLnB0cigpLCB0aHJlYWQtPmlkKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9uIGVuY291bnRl
cmVkIGFuIGludmFsaWQgdGhyZWFkIChlcnIgMHgleCk6IFRocmVhZCBbJWQvJWQ6ICVwXS4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9yKCksIGluZGV4LCB0aHJlYWRzLnNp
emUoKSwgdGhyZWFkLnB0cigpKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDIxZTkwMmQ0OTU1ZjhiY2JmNzI4MGY0ZjFiOWRhMzk3NzcxM2I1M2IuLjdhMTVlMjI5
ZWUwYTJjODE5NjQzNzg4ZThiMTZjYTMzMDk4YjRiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTkxLDggKzE5MSw4IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBk
YXRhTG9nRigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQp
OiAlZDogJWRcbiIsCi0gICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0Yo
IjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
XG4iLAorICAgICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
LApAQCAtMjE1LDggKzIxNSw4IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjCiAgICAgfSB1Owog
ICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgZGF0YUxvZ0YoCi0g
ICAgICAgICI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6
ICVkOiAlZDogJTA4eDolMDh4OiAlc1xuIiwKLSAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAg
ICAgICAiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAl
ZDogJWQ6ICUwOHg6JTA4eDogJXNcbiIsCisgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgIGV4ZWMsCiAgICAgICAgIHN0YXRpY19j
YXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKSwKQEAgLTIzMiw3ICsyMzIsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYwogCiBMTElO
VF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRhTG9nRigiPCVkPiAl
cCAvICVwOiBpbiBwcm9sb2d1ZSBvZiAiLCBjdXJyZW50VGhyZWFkKCksIGV4ZWMtPmNvZGVCbG9j
aygpLCBleGVjKTsKKyAgICBkYXRhTG9nRigiPCVwPiAlcCAvICVwOiBpbiBwcm9sb2d1ZSBvZiAi
LCAmVGhyZWFkOjpjdXJyZW50KCksIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKICAgICBkYXRh
TG9nKCpleGVjLT5jb2RlQmxvY2soKSwgIlxuIik7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0K
QEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlYwogICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5k
KTsKLSAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBpbiAlcyBvZiAiLCBjdXJyZW50VGhyZWFk
KCksIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAl
cDogaW4gJXMgb2YgIiwgJlRocmVhZDo6Y3VycmVudCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1l
bnQpOwogICAgIGRhdGFMb2coKmNvZGVCbG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlvbiAl
cCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNh
bGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhlY3V0
YWJsZSwgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBj
b2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAgLTI3
NSw4ICsyNzUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9j
b25zdHJ1Y3QpCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZSkKIHsKICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSk7Ci0gICAg
ZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBcbiIs
Ci0gICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAl
cDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBcbiIsCisgICAgICAgICAgICAmVGhyZWFk
OjpjdXJyZW50KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgICAg
IGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCkBAIC0yOTQsOCArMjk0LDggQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxf
dHJhY2UpCiB7Ci0gICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwg
Y2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCi0gICAgICAgICAgICBjdXJy
ZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNp
YWwgY2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAgICAgICAm
VGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAg
ICAgICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVj
LT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAKaW5kZXggNjkwYmMxMjI5ZjIx
NDBhMDhkYmE3N2I3ZTU1YmEyYzIxZjhjMjdiZi4uN2QxYzA2YTk1NDFiMTUwMTMwMjQ2OGFjYmIw
MWY4Njc0NDg5YWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvblNjb3BlLmNwcApAQCAtNTUsMTQgKzU1LDE0IEBAIENTdHJpbmcgRXhjZXB0aW9uU2Nv
cGU6OnVuZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlKCkKIHsKICAgICBTdHJpbmdQcmludFN0cmVh
bSBvdXQ7CiAKLSAgICBvdXQucHJpbnRsbigiVW5leHBlY3RlZCBleGNlcHRpb24gb2JzZXJ2ZWQg
b24gdGhyZWFkICIsIGN1cnJlbnRUaHJlYWQoKSwgIiBhdDoiKTsKKyAgICBvdXQucHJpbnRsbigi
VW5leHBlY3RlZCBleGNlcHRpb24gb2JzZXJ2ZWQgb24gdGhyZWFkICIsIFRocmVhZDo6Y3VycmVu
dCgpLCAiIGF0OiIpOwogICAgIGF1dG8gY3VycmVudFN0YWNrID0gU3RhY2tUcmFjZTo6Y2FwdHVy
ZVN0YWNrVHJhY2UoT3B0aW9uczo6dW5leHBlY3RlZEV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdCgp
LCAxKTsKICAgICBjdXJyZW50U3RhY2stPmR1bXAob3V0LCAiICAgICIpOwogCiAgICAgaWYgKCFt
X3ZtLm5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdygpKQogICAgICAgICByZXR1cm4gQ1N0cmlu
ZygpOwogICAgIAotICAgIG91dC5wcmludGxuKCJUaGUgZXhjZXB0aW9uIHdhcyB0aHJvd24gZnJv
bSB0aHJlYWQgIiwgbV92bS50aHJvd2luZ1RocmVhZCgpLCAiIGF0OiIpOworICAgIG91dC5wcmlu
dGxuKCJUaGUgZXhjZXB0aW9uIHdhcyB0aHJvd24gZnJvbSB0aHJlYWQgIiwgKm1fdm0udGhyb3dp
bmdUaHJlYWQoKSwgIiBhdDoiKTsKICAgICBtX3ZtLm5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJv
dygpLT5kdW1wKG91dCwgIiAgICAiKTsKIAogICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IGRlYTA1MDI4Y2Q3MzVlYjYz
OTE3NDcwYzE1MjJiMTgyNDVkZTU3NTUuLmJlZGYyYjU3MjgwNjc3NDY0N2RlMjFiN2MzMThmZmEz
OGVlMzc2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC05OCw3
ICs5OCw3IEBAIGNsYXNzIEpTTG9jayA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKU0xv
Y2s+IHsKICAgICAgICAgICAgIHJldHVybiBtX293bmVyVGhyZWFkOwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KLSAgICBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCkgeyByZXR1cm4gbV9oYXNPd25lclRocmVhZCAmJiBtX293bmVyVGhyZWFkLT5pZCgpID09IGN1
cnJlbnRUaHJlYWQoKTsgfQorICAgIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB7
IHJldHVybiBtX2hhc093bmVyVGhyZWFkICYmIG1fb3duZXJUaHJlYWQuZ2V0KCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpOyB9CiAKICAgICB2b2lkIHdpbGxEZXN0cm95Vk0oVk0qKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDVhYmRmYmJkODhiYTI4NWYxYTM1OGQ4NzEz
YjY1YTIyZTY1NDkxZTAuLjY4ZmJjZTdiZWZhM2JiMjhiODI1ZjIzY2I1NzNhY2M1YTVhODZiODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY4OSw3ICs2ODksNyBAQCB2
b2lkIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0
aW9uKQogCiAjaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAgICAgbV9u
YXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3cgPSBTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tUcmFj
ZShPcHRpb25zOjp1bmV4cGVjdGVkRXhjZXB0aW9uU3RhY2tUcmFjZUxpbWl0KCkpOwotICAgIG1f
dGhyb3dpbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgbV90aHJvd2luZ1RocmVhZCA9
ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCAzNjY4NzNiMmI3OWQ5ZDUzZmNmOWJhZjM2ZjZjNWUyNTlkM2Y5YjAwLi5hNmMy
ZDUzZmM4MDFkMWNkYWRkZmYxYTFmYWNjNTQ1NDljYWJhY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTcxMSw3ICs3MTEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAj
aWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAgICAgU3RhY2tUcmFjZSog
bmF0aXZlU3RhY2tUcmFjZU9mTGFzdFRocm93KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVTdGFj
a1RyYWNlT2ZMYXN0VGhyb3cuZ2V0KCk7IH0KLSAgICBUaHJlYWRJZGVudGlmaWVyIHRocm93aW5n
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd2luZ1RocmVhZDsgfQorICAgIFRocmVhZCog
dGhyb3dpbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgpOyB9
CiAjZW5kaWYKIAogI2lmIFVTRShDRikKQEAgLTc1NCw3ICs3NTQsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgICAg
ICBtX25lZWRFeGNlcHRpb25DaGVjayA9IGZhbHNlOwogICAgICAgICBtX25hdGl2ZVN0YWNrVHJh
Y2VPZkxhc3RUaHJvdyA9IG51bGxwdHI7Ci0gICAgICAgIG1fdGhyb3dpbmdUaHJlYWQgPSAwOwor
ICAgICAgICBtX3Rocm93aW5nVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgogICAgICAgICBtX2V4
Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgfQpAQCAtODA2LDcgKzgwNiw3IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgbXV0YWJsZSBib29sIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIHsgZmFsc2Ug
fTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tUcmFjZT4gbV9uYXRpdmVTdGFja1RyYWNlT2ZM
YXN0VGhyb3c7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IG1fbmF0aXZlU3RhY2tU
cmFjZU9mTGFzdFNpbXVsYXRlZFRocm93OwotICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJvd2lu
Z1RocmVhZDsKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Rocm93aW5nVGhyZWFkOwogI2VuZGlmCiAK
ICAgICBib29sIG1fZmFpbE5leHROZXdDb2RlQmxvY2sgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCA5YTJkMmFjYmEzZjQ3MDEy
YTAyMTNhNWRiMDZmOWM2OGI2ZDFhOTYwLi5jZDkxZWUxYTRlMDMwZThlOGNhYTE1Y2E3ZjllYWFh
YTQxMDJjZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZl
cmlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVy
LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpwcmludFZlcmlmaWNh
dGlvbkhlYWRlcigpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUo
KSk7CiAgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlID0gY3VycmVudEN5Y2xlKCkuc2NvcGU7CiAg
ICAgTW9ub3RvbmljVGltZSBnY0N5Y2xlVGltZXN0YW1wID0gY3VycmVudEN5Y2xlKCkudGltZXN0
YW1wOwotICAgIGRhdGFMb2coIlZlcmlmeWluZyBoZWFwIGluIFtwIiwgZ2V0Q3VycmVudFByb2Nl
c3NJRCgpLCAiLCB0IiwgY3VycmVudFRocmVhZCgpLCAiXSB2bSAiLAorICAgIGRhdGFMb2coIlZl
cmlmeWluZyBoZWFwIGluIFtwIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiLCAiLCBUaHJlYWQ6
OmN1cnJlbnQoKSwgIl0gdm0gIiwKICAgICAgICAgUmF3UG9pbnRlcihtX2hlYXAtPnZtKCkpLCAi
IG9uICIsIHNjb3BlLCAiIEdDIEAgIiwgZ2NDeWNsZVRpbWVzdGFtcCwgIlxuIik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYv
TWFpblRocmVhZC5jcHAKaW5kZXggMmM0MTYyN2Q2ZTc5NDBkNDhjOTVkYzczYWNlM2ZiYjI2MTM4
NmJkMy4uNGMyMjNlYTNjMjQ0ZWMyNjE3ZDRiYmJkMzkwNmZiNzAzOGM5Y2E0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWFp
blRocmVhZC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHN0YXRpYyBi
b29sIGNhbGxiYWNrc1BhdXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgb25seSBhY2Nl
c3NlZCBmcm9tIG1haW4gdGhyZWFkLgogI2lmICFQTEFURk9STShDT0NPQSkKLXN0YXRpYyBUaHJl
YWRJZGVudGlmaWVyIG1haW5UaHJlYWRJZGVudGlmaWVyOworc3RhdGljIFRocmVhZCogbWFpblRo
cmVhZCB7IG51bGxwdHIgfTsKICNlbmRpZgogCiBzdGF0aWMgU3RhdGljTG9jayBtYWluVGhyZWFk
RnVuY3Rpb25RdWV1ZU11dGV4OwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGluaXRpYWxpemVNYWlu
VGhyZWFkKCkKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplS2V5LCBbXSB7CiAgICAgICAg
IGluaXRpYWxpemVUaHJlYWRpbmcoKTsKICNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG1h
aW5UaHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBtYWluVGhyZWFk
ID0gJlRocmVhZDo6Y3VycmVudCgpOwogI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVNYWluVGhy
ZWFkUGxhdGZvcm0oKTsKICAgICAgICAgaW5pdGlhbGl6ZUdDVGhyZWFkcygpOwpAQCAtNzIsNyAr
NzIsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCkKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiBib29sIGlzTWFpblRocmVhZCgpCiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBt
YWluVGhyZWFkSWRlbnRpZmllcjsKKyAgICByZXR1cm4gJlRocmVhZDo6Y3VycmVudCgpID09IG1h
aW5UaHJlYWQ7CiB9CiAjZW5kaWYKIApAQCAtOTgsOSArOTgsOSBAQCB2b2lkIGluaXRpYWxpemVX
ZWJUaHJlYWQoKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgIVVTRShXRUJfVEhS
RUFEKQotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRp
ZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFRo
cmVhZCYgdGhyZWFkKQogewotICAgIHJldHVybiB0aHJlYWRJZCA9PSBjdXJyZW50VGhyZWFkKCk7
CisgICAgcmV0dXJuIHRocmVhZCA9PSBUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmgKaW5kZXggYzk1ZjkyZmJkZjNhNGJkMzU4NzlkYmRlZWEwZDE1MWE0YzAyOTAy
Yi4uZWQxZDQ5NWZlYmQ3MmY1ZTgwM2FjNWRiNDY0MTFkNzc4ZTI0MmVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3Ry
ZWFtOworY2xhc3MgVGhyZWFkOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CkBA
IC01NCwxNCArNTUsMTMgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWFpblRocmVhZENh
bGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
TWFpblRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5BY2Nlc3NUaHJlYWRM
b2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkJik7CiAKICNpZiBV
U0UoV0VCX1RIUkVBRCkKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV2ViVGhyZWFkKCk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1VJVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0aWFsaXplV2ViVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0
aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRJZGVudGlmaWVyKCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogdm9pZCBpbml0aWFsaXpl
V2ViVGhyZWFkUGxhdGZvcm0oKTsKICNlbHNlCiBpbmxpbmUgYm9vbCBpc1dlYlRocmVhZCgpIHsg
cmV0dXJuIGlzTWFpblRocmVhZCgpOyB9CkBAIC0xMTMsOCArMTEzLDcgQEAgdXNpbmcgV1RGOjpj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQ7CiAjZW5kaWYKICNpZiBV
U0UoV0VCX1RIUkVBRCkKIHVzaW5nIFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZDsKLXVzaW5nIFdU
Rjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyOwotdXNpbmcgV1RGOjpp
bml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcjsKK3VzaW5nIFdURjo6aW5pdGlhbGl6ZUFwcGxp
Y2F0aW9uVUlUaHJlYWQ7CiAjZW5kaWYKIAogI2VuZGlmIC8vIE1haW5UaHJlYWRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJr
aW5nTG90LmNwcAppbmRleCBmOGZlZDg4YjFmN2M5OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNjZTFj
Li5iMTRkN2EyY2RlZDhmNWVkM2QzNDAyZjc4ODBkMzcxNjI2ODllOGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5n
TG90LmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICB2b2lkIGVucXVl
dWUoVGhyZWFkRGF0YSogZGF0YSkKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVucXVldWVpbmcgIiwg
UmF3UG9pbnRlcihkYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2ludGVyKGRhdGEtPmFk
ZHJlc3MpLCAiIG9udG8gIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAgICAgICAgICAg
ZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyAiLCBSYXdQ
b2ludGVyKGRhdGEpLCAiIHdpdGggYWRkcmVzcyA9ICIsIFJhd1BvaW50ZXIoZGF0YS0+YWRkcmVz
cyksICIgb250byAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIEFTU0VSVChk
YXRhLT5hZGRyZXNzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLT5uZXh0SW5RdWV1ZSk7CiAgICAg
ICAgIApAQCAtOTksMTEgKzk5LDExIEBAIHN0cnVjdCBCdWNrZXQgewogICAgIHZvaWQgZ2VuZXJp
Y0RlcXVldWUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRl
cXVldWVpbmcgZnJvbSBidWNrZXQgYXQgIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAg
ICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZGVxdWV1ZWlu
ZyBmcm9tIGJ1Y2tldCBhdCAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIXF1ZXVlSGVhZCkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVtcHR5Llxu
IikpOworICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCks
ICI6IGVtcHR5LlxuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0
MywxNCArMTQzLDE0IEBAIHN0cnVjdCBCdWNrZXQgewogICAgICAgICB3aGlsZSAoc2hvdWxkQ29u
dGludWUpIHsKICAgICAgICAgICAgIFRocmVhZERhdGEqIGN1cnJlbnQgPSAqY3VycmVudFB0cjsK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJp
bmcoY3VycmVudFRocmVhZCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCks
ICJcbiIpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVu
dCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJcbiIpKTsKICAgICAg
ICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IERlcXVldWVSZXN1bHQgcmVzdWx0ID0gZnVuY3RvcihjdXJyZW50LCB0aW1lVG9CZUZhaXIpOwog
ICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJl
c3VsdDo6SWdub3JlOgogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3VycmVudFB0ciA9
ICIsIFJhd1BvaW50ZXIoY3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRl
cigqY3VycmVudFB0ciksICJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0
cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3VycmVudFB0ciA9ICIsIFJhd1BvaW50ZXIoY3Vy
cmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigqY3VycmVudFB0ciksICJc
biIpKTsKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAg
ICAgY3VycmVudFB0ciA9ICYoKmN1cnJlbnRQdHIpLT5uZXh0SW5RdWV1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJlc3VsdDo6UmVt
b3ZlQW5kQ29udGludWU6CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBkZXF1ZXVlaW5n
ICIsIFJhd1BvaW50ZXIoY3VycmVudCksICIgZnJvbSAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4i
KSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50
KCksICI6IGRlcXVldWVpbmcgIiwgUmF3UG9pbnRlcihjdXJyZW50KSwgIiBmcm9tICIsIFJhd1Bv
aW50ZXIodGhpcyksICJcbiIpKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBxdWV1
ZVRhaWwpCiAgICAgICAgICAgICAgICAgICAgIHF1ZXVlVGFpbCA9IHByZXZpb3VzOwogICAgICAg
ICAgICAgICAgIGRpZERlcXVldWUgPSB0cnVlOwpAQCAtMjcxLDcgKzI3MSw3IEBAIEhhc2h0YWJs
ZSogZW5zdXJlSGFzaHRhYmxlKCkKICAgICAgICAgICAgIGN1cnJlbnRIYXNodGFibGUgPSBIYXNo
dGFibGU6OmNyZWF0ZShtYXhMb2FkRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChoYXNodGFibGUu
Y29tcGFyZUV4Y2hhbmdlV2VhayhudWxscHRyLCBjdXJyZW50SGFzaHRhYmxlKSkgewogICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3Ry
aW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBpbml0aWFsIGhhc2h0YWJsZSAiLCBSYXdQ
b2ludGVyKGN1cnJlbnRIYXNodGFibGUpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IGNyZWF0ZWQgaW5pdGlhbCBoYXNo
dGFibGUgIiwgUmF3UG9pbnRlcihjdXJyZW50SGFzaHRhYmxlKSwgIlxuIikpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBjdXJyZW50SGFzaHRhYmxlOwogICAgICAgICAgICAgfQogCkBAIC0zNDYs
NyArMzQ2LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51bVRocmVhZHMp
CiAgICAgSGFzaHRhYmxlKiBvbGRIYXNodGFibGUgPSBoYXNodGFibGUubG9hZCgpOwogICAgIGlm
IChvbGRIYXNodGFibGUgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihvbGRIYXNodGFibGUtPnNpemUp
IC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihudW1UaHJlYWRzKSA+PSBtYXhMb2FkRmFjdG9yKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50
VGhyZWFkKCksICI6IG5vIG5lZWQgdG8gcmVoYXNoIGJlY2F1c2UgIiwgb2xkSGFzaHRhYmxlLT5z
aXplLCAiIC8gIiwgbnVtVGhyZWFkcywgIiA+PSAiLCBtYXhMb2FkRmFjdG9yLCAiXG4iKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBubyBuZWVk
IHRvIHJlaGFzaCBiZWNhdXNlICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVh
ZHMsICIgPj0gIiwgbWF4TG9hZEZhY3RvciwgIlxuIikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVk
IG51bVRocmVhZHMpCiAgICAgb2xkSGFzaHRhYmxlID0gaGFzaHRhYmxlLmxvYWQoKTsKICAgICBp
ZiAob2xkSGFzaHRhYmxlICYmIHN0YXRpY19jYXN0PGRvdWJsZT4ob2xkSGFzaHRhYmxlLT5zaXpl
KSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obnVtVGhyZWFkcykgPj0gbWF4TG9hZEZhY3Rvcikgewog
ICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVu
dFRocmVhZCgpLCAiOiBhZnRlciBsb2NraW5nLCBubyBuZWVkIHRvIHJlaGFzaCBiZWNhdXNlICIs
IG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMsICIgPj0gIiwgbWF4TG9hZEZh
Y3RvciwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJl
bnQoKSwgIjogYWZ0ZXIgbG9ja2luZywgbm8gbmVlZCB0byByZWhhc2ggYmVjYXVzZSAiLCBvbGRI
YXNodGFibGUtPnNpemUsICIgLyAiLCBudW1UaHJlYWRzLCAiID49ICIsIG1heExvYWRGYWN0b3Is
ICJcbiIpKTsKICAgICAgICAgdW5sb2NrSGFzaHRhYmxlKGJ1Y2tldHNUb1VubG9jayk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIGVuc3VyZUhhc2h0
YWJsZVNpemUodW5zaWduZWQgbnVtVGhyZWFkcykKICAgICAKICAgICBIYXNodGFibGUqIG5ld0hh
c2h0YWJsZSA9IEhhc2h0YWJsZTo6Y3JlYXRlKG5ld1NpemUpOwogICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBuZXcg
aGFzaHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKKyAgICAgICAg
ZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3JlYXRlZCBuZXcgaGFzaHRh
YmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKICAgICBmb3IgKFRocmVh
ZERhdGEqIHRocmVhZERhdGEgOiB0aHJlYWREYXRhcykgewogICAgICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiByZWhhc2hp
bmcgdGhyZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3Mg
PSAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAg
ICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiByZWhhc2hpbmcgdGhyZWFk
IGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQ
b2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CiAgICAgICAgIHVuc2lnbmVkIGhh
c2ggPSBoYXNoQWRkcmVzcyh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBoYXNoICUgbmV3SGFzaHRhYmxlLT5zaXplOwogICAgICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBpbmRleCA9
ICIsIGluZGV4LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6
Y3VycmVudCgpLCAiOiBpbmRleCA9ICIsIGluZGV4LCAiXG4iKSk7CiAgICAgICAgIEJ1Y2tldCog
YnVja2V0ID0gbmV3SGFzaHRhYmxlLT5kYXRhW2luZGV4XS5sb2FkKCk7CiAgICAgICAgIGlmICgh
YnVja2V0KSB7CiAgICAgICAgICAgICBpZiAocmV1c2FibGVCdWNrZXRzLmlzRW1wdHkoKSkKQEAg
LTQ4NSw3ICs0ODUsNyBAQCBib29sIGVucXVldWUoY29uc3Qgdm9pZCogYWRkcmVzcywgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFk
KCksICI6IGVucXVldWVpbmcgb250byBidWNrZXQgIiwgUmF3UG9pbnRlcihidWNrZXQpLCAiIHdp
dGggaW5kZXggIiwgaW5kZXgsICIgZm9yIGFkZHJlc3MgIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwg
IiB3aXRoIGhhc2ggIiwgaGFzaCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyBvbnRvIGJ1Y2tldCAiLCBSYXdQb2lu
dGVyKGJ1Y2tldCksICIgd2l0aCBpbmRleCAiLCBpbmRleCwgIiBmb3IgYWRkcmVzcyAiLCBSYXdQ
b2ludGVyKGFkZHJlc3MpLCAiIHdpdGggaGFzaCAiLCBoYXNoLCAiXG4iKSk7CiAgICAgICAgIGJ1
Y2tldC0+bG9jay5sb2NrKCk7CiAKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaGFzaHRh
YmxlIGNvdWxkIGhhdmUgcmVoYXNoZWQgdW5kZXIgdXMuCkBAIC00OTgsNyArNDk4LDcgQEAgYm9v
bCBlbnF1ZXVlKGNvbnN0IHZvaWQqIGFkZHJlc3MsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAg
ICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICBpZiAodGhyZWFkRGF0YSkgewogICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50
VGhyZWFkKCksICI6IHByb2NlZWRpbmcgdG8gZW5xdWV1ZSAiLCBSYXdQb2ludGVyKHRocmVhZERh
dGEpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1
cnJlbnQoKSwgIjogcHJvY2VlZGluZyB0byBlbnF1ZXVlICIsIFJhd1BvaW50ZXIodGhyZWFkRGF0
YSksICJcbiIpKTsKICAgICAgICAgICAgIGJ1Y2tldC0+ZW5xdWV1ZSh0aHJlYWREYXRhKTsKICAg
ICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNTY3LDcgKzU2Nyw3
IEBAIE5FVkVSX0lOTElORSBQYXJraW5nTG90OjpQYXJrUmVzdWx0IFBhcmtpbmdMb3Q6OnBhcmtD
b25kaXRpb25hbGx5SW1wbCgKICAgICBjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIHRp
bWVvdXQpCiB7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3Vy
cmVudFRocmVhZCgpLCAiOiBwYXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5n
KFRocmVhZDo6Y3VycmVudCgpLCAiOiBwYXJraW5nLlxuIikpOwogICAgIAogICAgIFRocmVhZERh
dGEqIG1lID0gbXlUaHJlYWREYXRhKCk7CiAgICAgbWUtPnRva2VuID0gMDsKQEAgLTY2MSw3ICs2
NjEsNyBAQCBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6UGFya1Jlc3VsdCBQYXJraW5nTG90Ojpw
YXJrQ29uZGl0aW9uYWxseUltcGwoCiBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6VW5wYXJrUmVz
dWx0IFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKQogewogICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjog
dW5wYXJraW5nIG9uZS5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1
cnJlbnQoKSwgIjogdW5wYXJraW5nIG9uZS5cbiIpKTsKICAgICAKICAgICBVbnBhcmtSZXN1bHQg
cmVzdWx0OwogCkBAIC03MDYsNyArNzA2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgUGFya2luZ0xv
dDo6dW5wYXJrT25lSW1wbCgKICAgICBjb25zdCBTY29wZWRMYW1iZGE8aW50cHRyX3QoUGFya2lu
Z0xvdDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJraW5nIG9uZSB0
aGUgaGFyZCB3YXkuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJy
ZW50KCksICI6IHVucGFya2luZyBvbmUgdGhlIGhhcmQgd2F5LlxuIikpOwogICAgIAogICAgIFJl
ZlB0cjxUaHJlYWREYXRhPiB0aHJlYWREYXRhOwogICAgIGJvb2wgdGltZVRvQmVGYWlyID0gZmFs
c2U7CkBAIC03NTEsNyArNzUxLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6
OnVucGFya0NvdW50KGNvbnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICAgICAg
cmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJp
bmcoY3VycmVudFRocmVhZCgpLCAiOiB1bnBhcmtpbmcgY291bnQgPSAiLCBjb3VudCwgIiBmcm9t
ICIsIFJhd1BvaW50ZXIoYWRkcmVzcyksICIuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJp
bmcoVGhyZWFkOjpjdXJyZW50KCksICI6IHVucGFya2luZyBjb3VudCA9ICIsIGNvdW50LCAiIGZy
b20gIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpKTsKICAgICAKICAgICBWZWN0b3I8UmVm
UHRyPFRocmVhZERhdGE+LCA4PiB0aHJlYWREYXRhczsKICAgICBkZXF1ZXVlKApAQCAtNzYxLDcg
Kzc2MSw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChj
b25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3VuCiAgICAgICAgIEJ1Y2tldE1vZGU6Okln
bm9yZUVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQsIGJvb2wpIHsKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmco
Y3VycmVudFRocmVhZCgpLCAiOiBPYnNlcnZpbmcgZWxlbWVudCB3aXRoIGFkZHJlc3MgPSAiLCBS
YXdQb2ludGVyKGVsZW1lbnQtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0
YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogT2JzZXJ2aW5nIGVsZW1lbnQgd2l0
aCBhZGRyZXNzID0gIiwgUmF3UG9pbnRlcihlbGVtZW50LT5hZGRyZXNzKSwgIlxuIikpOwogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPmFkZHJlc3MgIT0gYWRkcmVzcykKICAgICAgICAgICAgICAg
ICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICAgICAgdGhyZWFkRGF0YXMu
YXBwZW5kKGVsZW1lbnQpOwpAQCAtNzczLDcgKzc3Myw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25l
ZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBj
b3VuCiAKICAgICBmb3IgKFJlZlB0cjxUaHJlYWREYXRhPiYgdGhyZWFkRGF0YSA6IHRocmVhZERh
dGFzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhjdXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEu
Z2V0KCkpLCAiIHdpdGggYWRkcmVzcyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3Mp
LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgp
LCAiOiB1bnBhcmtpbmcgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLmdldCgpKSwgIiB3aXRoIGFk
ZHJlc3MgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLT5hZGRyZXNzKSwgIlxuIikpOwogICAgICAg
ICBBU1NFUlQodGhyZWFkRGF0YS0+YWRkcmVzcyk7CiAgICAgICAgIHsKICAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcih0aHJlYWREYXRhLT5wYXJraW5nTG9jayk7CkBAIC03ODMsNyArNzgz
LDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVucGFya0NvdW50KGNvbnN0
IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICB9CiAKICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRvbmUgdW5wYXJr
aW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAi
OiBkb25lIHVucGFya2luZy5cbiIpKTsKICAgICAKICAgICByZXR1cm4gdGhyZWFkRGF0YXMuc2l6
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIu
aCBiL1NvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmgKaW5kZXggOTdhMjQzYjkw
YmNhYzAwYjJkN2VlY2RmMjdlMDQyNWZjNTJkNjdhNy4uYmVmOWNiYzJlMzQ3MGVkYjY5OTQzMjg0
NDViZDllODAxN2I2MjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9j
a0FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oCkBA
IC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAKICAgICB2
b2lkIGxvY2soKQogICAgIHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRU
aHJlYWQoKTsKLSAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBt
ZSA9IFRocmVhZDo6Y3VycmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAg
ICAgICAgICAgIG1fcmVjdXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZWN1cnNpdmVMb2NrQWRhcHRlciB7CiAgICAg
ICAgIG1fbG9jay5sb2NrKCk7CiAgICAgICAgIEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFT
U0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAg
bV9vd25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1cnNpb25Db3VudCA9IDE7CiAgICAgfQogICAg
IApAQCAtNTUsMTQgKzU1LDE0IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICB7
CiAgICAgICAgIGlmICgtLW1fcmVjdXJzaW9uQ291bnQpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIG1fb3duZXIgPSAwOworICAgICAgICBtX293bmVyID0gbnVsbHB0cjsKICAgICAgICAg
bV9sb2NrLnVubG9jaygpOwogICAgIH0KICAgICAKICAgICBib29sIHRyeUxvY2soKQogICAgIHsK
LSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAg
aWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9IFRocmVhZDo6Y3VycmVu
dCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAgICAgICAgIG1fcmVjdXJz
aW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC03Miw3
ICs3Miw3IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0g
ICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9vd25lciA9ICZtZTsKICAgICAgICAgbV9y
ZWN1cnNpb25Db3VudCA9IDE7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTgzLDcg
KzgzLDcgQEAgY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgewogICAgIH0KICAgICAKIHByaXZh
dGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX293bmVyIHsgMCB9OworICAgIFRocmVhZCogbV9v
d25lciB7IG51bGxwdHIgfTsgLy8gVXNlIFRocmVhZCogaW5zdGVhZCBvZiBSZWZQdHI8VGhyZWFk
PiBzaW5jZSBvd25lciB0aHJlYWQgaXMgYWx3YXlzIGFsaXZlIHdoaWxlIG1fb253ZXIgaXMgZXQu
CiAgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsKICAgICBMb2NrVHlwZSBtX2xv
Y2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMGJlNWExMGVkMGY3MjVmOGQzZTE3ZTFjZjE5
YWIyMDlhOTAwYTgyOS4uYzU2ZjE1NmRkOWNiZWM0OTk5Njk3YzZkNTQ5ZTg3NTZmNzNiMjlmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgcW9zX2NsYXNzX3QgVGhyZWFk
OjphZGp1c3RlZFFPU0NsYXNzKHFvc19jbGFzc190IG9yaWdpbmFsQ2xhc3MpCiAKIHZvaWQgVGhy
ZWFkOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1faWQp
OworICAgIG91dC5wcmludCgiVGhyZWFkOiIsIFJhd1BvaW50ZXIodGhpcykpOwogfQogCiAjaWYg
IUhBVkUoRkFTVF9UTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGVlMTMwM2ExOTFiMDlkNGVjOWRkYzg3
Y2NjODgxNTQyOTdmYTIzMDYuLjlkNTk1Mzc5NmVkNTgyNjg0NzY3OTBjMjAxNGFmZTkwNmM4OTRl
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCkBAIC04MCw3ICs4MCw5IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFk
R3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogICAgIGZyaWVuZCBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgT1MoV0lO
RE9XUykKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbihUaHJlYWRJZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5UaHJlYWQoKTsKIApAQCAtOTEsMTIgKzkzLDE2IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAvLyBSZXR1cm5zIFRocmVhZCBv
YmplY3QuCiAgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCisjaWYgT1MoV0lORE9XUykK
ICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBp
ZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4g
QXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJ
ZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQogICAgIC8vIHRoYXQgdGhlIHRocmVhZCBpbmZvcm1h
dGlvbiBpcyBhbGl2ZS4gV2hpbGUgVGhyZWFkOjpjdXJyZW50KCkgaXMgbm90IHNhZmUgaWYgaXQg
aXMgY2FsbGVkCiAgICAgLy8gZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3RoZXIgVExTIGRh
dGEsIGN1cnJlbnRJRCgpIGFsd2F5cyByZXR1cm5zIG1lYW5pbmdmdWwgdGhyZWFkIElELgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsK
IAorICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisjZW5k
aWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNoYW5nZVByaW9yaXR5KGludCk7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaCgpOwpAQCAtMTM3LDE2ICsxNDMsMTQgQEAgY2xhc3Mg
VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIAotICAg
IFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0KICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgVGhyZWFkJiB0aHJlYWQpCiAgICAgewotICAgICAgICByZXR1cm4g
aWQoKSA9PSB0aHJlYWQuaWQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMgPT0gJnRocmVhZDsKICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGhyZWFkJiB0aHJlYWQpCiAgICAgewot
ICAgICAgICByZXR1cm4gaWQoKSAhPSB0aHJlYWQuaWQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMg
IT0gJnRocmVhZDsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1U
aHJlYWRpbmcoKTsKQEAgLTI4MCw3ICsyODQsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAKICAgICAvLyBXb3JkTG9jayAmIExvY2sgcmVs
eSBvbiBUaHJlYWRTcGVjaWZpYy4gQnV0IFRocmVhZCBvYmplY3QgY2FuIGJlIGRlc3Ryb3llZCBl
dmVuIGFmdGVyIFRocmVhZFNwZWNpZmljIHRoaW5ncyBhcmUgZGVzdHJveWVkLgogICAgIHN0ZDo6
bXV0ZXggbV9tdXRleDsKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAwIH07CiAgICAgSm9p
bmFibGVTdGF0ZSBtX2pvaW5hYmxlU3RhdGUgeyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9pc1No
dXR0aW5nRG93biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwpAQCAt
Mjg4LDcgKzI5MSw5IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWQ+IHsKICAgICBTdGFja0JvdW5kcyBtX3N0YWNrIHsgU3RhY2tCb3VuZHM6OmVtcHR5
Qm91bmRzKCkgfTsKICAgICBWZWN0b3I8c3RkOjp3ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhy
ZWFkR3JvdXBzOwogICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxlOwotI2lmIE9TKERB
UldJTikKKyNpZiBPUyhXSU5ET1dTKQorICAgIFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsK
KyNlbGlmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwogI2Vs
aWYgVVNFKFBUSFJFQURTKQogICAgIFBsYXRmb3JtUmVnaXN0ZXJzKiBtX3BsYXRmb3JtUmVnaXN0
ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMzA3LDExICszMTIsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgdm9pZCogbV9zYXZlZExhc3RT
dGFja1RvcDsKIH07CiAKLWlubGluZSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQot
ewotICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnRJRCgpOwotfQotCiBpbmxpbmUgVGhyZWFkKiBU
aHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQogewogI2lmICFIQVZFKEZBU1RfVExTKQpAQCAtMzQ1
LDExICszNDUsMTAgQEAgaW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6
VGhyZWFkOwotdXNpbmcgV1RGOjpjdXJyZW50VGhyZWFkOwogCiAjaWYgT1MoV0lORE9XUykKK3Vz
aW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwogdXNp
bmcgV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oCmluZGV4IDZlODhhYTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZhZGMz
MGM2ZDIuLjRhY2UyOGYxZjU5Zjg4Njk3MDkxMDA4YTBhMGIxMjAxMGM5NzYyYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKLXVzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFRocmVh
ZEZ1bmN0aW9uID0gdm9pZCAoKikodm9pZCogYXJndW1lbnQpOwogCiAjaWYgVVNFKFBUSFJFQURT
KQpAQCAtNTMsNiArNTIsNyBAQCB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRf
dDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0Zm9y
bUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90OwogI2VsaWYgT1MoV0lORE9XUykKK3VzaW5nIFRo
cmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0g
SEFORExFOwogc3RydWN0IFBsYXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04gbV9p
bnRlcm5hbE11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDgzYjlk
NTA5OTUyNWIwNmI2MGU5MTEwM2RkZjUyNjQ5YmE5MDgwM2MuLjJjNTYyZTY2OWQwYTE3MzU1ODdi
NjY0MzIzZWFmMTM2ODhkMTYyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAK
QEAgLTI4MCw5ICsyODAsOSBAQCBpbnQgVGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbigpCiAgICAg
aW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pvaW4oaGFuZGxlLCAwKTsKIAogICAgIGlmIChqb2lu
UmVzdWx0ID09IEVERUFETEspCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAl
dSB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAg
ICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlp
bmcgdG8gcXVpdCIsIHRoaXMpOwogICAgIGVsc2UgaWYgKGpvaW5SZXN1bHQpCi0gICAgICAgIExP
R19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIs
IG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGpv
aW5lZC5cbiIsIHRoaXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tl
cihtX211dGV4KTsKICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAg
LTMwMCw3ICszMDAsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwogICAgIGludCBkZXRhY2hSZXN1bHQgPSBw
dGhyZWFkX2RldGFjaChtX2hhbmRsZSk7CiAgICAgaWYgKGRldGFjaFJlc3VsdCkKLSAgICAgICAg
TE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyB1bmFibGUgdG8gYmUgZGV0YWNoZWRc
biIsIG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJl
IGRldGFjaGVkXG4iLCB0aGlzKTsKIAogICAgIGlmICghaGFzRXhpdGVkKCkpCiAgICAgICAgIGRp
ZEJlY29tZURldGFjaGVkKCk7CkBAIC0zMTcsMTEgKzMxNyw2IEBAIFRocmVhZCYgVGhyZWFkOjpp
bml0aWFsaXplQ3VycmVudFRMUygpCiAgICAgcmV0dXJuIGluaXRpYWxpemVUTFMoV1RGTW92ZSh0
aHJlYWQpKTsKIH0KIAotVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCi17Ci0g
ICAgcmV0dXJuIGN1cnJlbnQoKS5pZCgpOwotfQotCiBib29sIFRocmVhZDo6c2lnbmFsKGludCBz
aWduYWxOdW1iZXIpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlciht
X211dGV4KTsKQEAgLTMzMyw3ICszMjgsNyBAQCBib29sIFRocmVhZDo6c2lnbmFsKGludCBzaWdu
YWxOdW1iZXIpCiAKIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9pZCwgUGxh
dGZvcm1TdXNwZW5kRXJyb3I+CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGlk
KCkgIT0gY3VycmVudFRocmVhZCgpLCAiV2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUg
Y3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FH
RSh0aGlzICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1c3BlbmRp
bmcgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICAvLyBEdXJpbmcgc3VzcGVuZCwg
c3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9tIHRoZSBvdGhlciB0
aHJlYWRzLgogICAgIC8vIFdlIHVzZSBnbG9iYWwgbG9jayBpbnN0ZWFkIG9mIHBlciB0aHJlYWQg
bG9jay4KICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNhc2UsIHRoZXJlIGFyZSB0aHJl
YWRzIEEgYW5kIEIuCkBAIC00NTEsMTMgKzQ0Niw5IEBAIHZvaWQgVGhyZWFkOjplc3RhYmxpc2hQ
bGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCBoYW5kbGUpCiB7CiAgICAgc3RkOjpsb2Nr
X2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBtX2hhbmRsZSA9IGhhbmRs
ZTsKLSAgICBpZiAoIW1faWQpIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6YXRvbWljPFRocmVhZElk
ZW50aWZpZXI+IHByb3ZpZGVyIHsgMCB9OwotICAgICAgICBtX2lkID0gKytwcm92aWRlcjsKICNp
ZiBPUyhEQVJXSU4pCi0gICAgICAgIG1fcGxhdGZvcm1UaHJlYWQgPSBwdGhyZWFkX21hY2hfdGhy
ZWFkX25wKGhhbmRsZSk7CisgICAgbV9wbGF0Zm9ybVRocmVhZCA9IHB0aHJlYWRfbWFjaF90aHJl
YWRfbnAoaGFuZGxlKTsKICNlbmRpZgotICAgIH0KIH0KIAogI2lmICFIQVZFKEZBU1RfVExTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggYmVjMGQzNDNkYWU1ZWVkNDFmOTUxYjNlOTZiZGZm
ZjA1NjU3ZDgxNy4uYTgxNTkwNDA2OTY3ZDZlODU2NjkxNTM3ZTIwY2M1ZTgxZTFiOWMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgaW50IFRocmVhZDo6d2Fp
dEZvckNvbXBsZXRpb24oKQogCiAgICAgRFdPUkQgam9pblJlc3VsdCA9IFdhaXRGb3JTaW5nbGVP
YmplY3QoaGFuZGxlLCBJTkZJTklURSk7CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gV0FJVF9GQUlM
RUQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQgdG8g
YmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0dfRVJST1Io
IlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIHRo
aXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsK
ICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTIxNiw3ICsyMTYs
NyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKIAogYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBF
eHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsKLSAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX01FU1NBR0UoaWQoKSAhPSBjdXJyZW50VGhyZWFkKCksICJXZSBkbyBub3Qgc3VwcG9y
dCBzdXNwZW5kaW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7CisgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMgIT0gJlRocmVhZDo6Y3VycmVudCgpLCAiV2UgZG8gbm90
IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOwogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKICAgICBEV09SRCByZXN1bHQgPSBT
dXNwZW5kVGhyZWFkKG1faGFuZGxlKTsKICAgICBpZiAocmVzdWx0ICE9IChEV09SRCktMSkKQEAg
LTI5Myw3ICsyOTMsNyBAQCBUaHJlYWQqIFRocmVhZDo6Y3VycmVudER5aW5nKCkKICAgICBBU1NF
UlQoc19rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKICAgICAvLyBBZnRlciBGTFMg
aXMgZGVzdHJveWVkLCB0aGlzIG1hcCBvZmZlcnMgdGhlIHZhbHVlIHVudGlsIHRoZSBzZWNvbmQg
dGhyZWFkIGV4aXQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6
Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgcmV0dXJuIHRocmVhZE1hcCgp
LmdldChjdXJyZW50VGhyZWFkKCkpOworICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoY3VycmVu
dElEKCkpOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2RlIG9uY2Ug
PHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJl
YWRNYWMubW0KaW5kZXggMzFkODE0YmY3YTdiOTY1Nzk1MmU4NWY4ZGZkNjQ2MDg4ZTNlZDcyNS4u
MTQyMTU5MGJjZTdkMzVlYWEzMDdhZjY4Yjk3MGU5NWM2MmJkOTRkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KKysrIGIvU291cmNlL1dURi93dGYvbWFj
L01haW5UaHJlYWRNYWMubW0KQEAgLTY2LDggKzY2LDggQEAgc3RhdGljIHB0aHJlYWRfdCBtYWlu
VGhyZWFkUHRocmVhZDsKIHN0YXRpYyBOU1RocmVhZCogbWFpblRocmVhZE5TVGhyZWFkOwogCiAj
aWYgVVNFKFdFQl9USFJFQUQpCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzQXBwbGljYXRpb25V
SVRocmVhZElkZW50aWZpZXI7Ci1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzV2ViVGhyZWFkSWRl
bnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIHNBcHBsaWNhdGlvblVJVGhyZWFkOworc3RhdGljIFRo
cmVhZCogc1dlYlRocmVhZDsKICNlbmRpZgogCiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxh
dGZvcm0oKQpAQCAtMTczLDE2ICsxNzMsMTAgQEAgYm9vbCBpc1dlYlRocmVhZCgpCiAgICAgcmV0
dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5UaHJlYWRQdGhyZWFkKTsKIH0K
IAotdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKQordm9pZCBp
bml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpCiB7CiAgICAgQVNTRVJUKHB0aHJlYWRfbWFp
bl9ucCgpKTsKLSAgICBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhy
ZWFkKCk7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZVdlYlRocmVhZElkZW50aWZpZXIoKQotewotICAg
IEFTU0VSVCghcHRocmVhZF9tYWluX25wKCkpOwotICAgIHNXZWJUaHJlYWRJZGVudGlmaWVyID0g
Y3VycmVudFRocmVhZCgpOworICAgIHNBcHBsaWNhdGlvblVJVGhyZWFkID0gJlRocmVhZDo6Y3Vy
cmVudCgpOwogfQogCiB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCkBAIC0xOTIs
MTYgKzE4NiwxOCBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCiAgICAgbWFp
blRocmVhZEVzdGFibGlzaGVkQXNQdGhyZWFkTWFpbiA9IGZhbHNlOwogICAgIG1haW5UaHJlYWRQ
dGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CiAgICAgbWFpblRocmVhZE5TVGhyZWFkID0gW1tOU1Ro
cmVhZCBjdXJyZW50VGhyZWFkXSByZXRhaW5dOworCisgICAgc1dlYlRocmVhZCA9ICZUaHJlYWQ6
OmN1cnJlbnQoKTsKIH0KIAotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQo
VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRh
Rm9yVGhyZWFkKFRocmVhZCYgdGhyZWFkKQogewotICAgIFRocmVhZElkZW50aWZpZXIgY3VycmVu
dFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIGlmICh0aHJlYWRJZCA9PSBjdXJyZW50
VGhyZWFkSWQpCisgICAgVGhyZWFkJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CisgICAgaWYgKHRocmVhZCA9PSBjdXJyZW50VGhyZWFkKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGlmICh0aHJlYWRJZCA9PSBzV2ViVGhyZWFkSWRlbnRpZmllciB8fCB0aHJlYWRJZCA9
PSBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiAoY3VycmVu
dFRocmVhZElkID09IHNXZWJUaHJlYWRJZGVudGlmaWVyIHx8IGN1cnJlbnRUaHJlYWRJZCA9PSBz
QXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpICYmIHdlYlRocmVhZElzVW5pbml0aWFsaXpl
ZE9yTG9ja2VkT3JEaXNhYmxlZCgpOworICAgIGlmICgmdGhyZWFkID09IHNXZWJUaHJlYWQgfHwg
JnRocmVhZCA9PSBzQXBwbGljYXRpb25VSVRocmVhZCkKKyAgICAgICAgcmV0dXJuICgmY3VycmVu
dFRocmVhZCA9PSBzV2ViVGhyZWFkIHx8ICZjdXJyZW50VGhyZWFkID09IHNBcHBsaWNhdGlvblVJ
VGhyZWFkKSAmJiB3ZWJUaHJlYWRJc1VuaW5pdGlhbGl6ZWRPckxvY2tlZE9yRGlzYWJsZWQoKTsK
IAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTNmMzEyMTU2YzY0OGZmMjUy
YTg2Y2I0ZWRlZGE2NGM4MWU5N2YwMi4uNWRlNjlhODJkNDhlMDQ5NTFjYTA4ZjZjYTYzZTM5ZWZh
MWY0NmRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTM1LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQkFjdGl2ZURPTU9iamVjdCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogcHVibGljOgotICAgIFRocmVhZElkZW50aWZpZXIgb3JpZ2luVGhyZWFkSUQoKSBjb25zdCB7
IHJldHVybiBtX29yaWdpblRocmVhZElEOyB9CisgICAgVGhyZWFkJiBvcmlnaW5UaHJlYWQoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZC5nZXQoKTsgfQogCiAgICAgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCkgZmluYWwgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9v
cmlnaW5UaHJlYWQuZ2V0KCkpOwogCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dExvY2spOwogICAgICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHRE
ZXN0cm95ZWQoKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0IDog
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gUGFyYW1ldGVycywgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZvaWQgcGVyZm9y
bUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoVCYgb2JqZWN0LCB2b2lkIChUOjoqbWV0aG9kKShQYXJh
bWV0ZXJzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKG9yaWdpblRocmVhZElEKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZElEKCkpOworICAgICAg
ICBBU1NFUlQob3JpZ2luVGhyZWFkKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZCgpKTsKIAotICAg
ICAgICBpZiAob2JqZWN0Lm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7Cisg
ICAgICAgIGlmIChvYmplY3Qub3JpZ2luVGhyZWFkKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpIHsK
ICAgICAgICAgICAgIChvYmplY3QuKm1ldGhvZCkoYXJndW1lbnRzLi4uKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBJREJBY3RpdmVET01P
YmplY3QgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIAogICAgIHZvaWQgY2FsbEZ1bmN0aW9u
T25PcmlnaW5UaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIHsK
LSAgICAgICAgaWYgKG9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7CisgICAg
ICAgIGlmIChvcmlnaW5UaHJlYWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSkgewogICAgICAgICAg
ICAgZnVuY3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODcsNyAr
ODcsNyBAQCBjbGFzcyBJREJBY3RpdmVET01PYmplY3QgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX29yaWdpblRocmVh
ZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9vcmlnaW5UaHJlYWQg
eyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogICAgIExvY2sgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
TG9jazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCmluZGV4IDYyZmExNTFjYWIwOTdiZjQ5ZGUzMTExYzczOTBjNGExZTdlMDRjZWYuLmZj
MDZiMzEzMDMzM2U3ODQ2M2VkNjNjNGU5NDBjNTU2NDg5MmEwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtNjEsNyArNjEsNyBAQCBJ
REJDdXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQk9iamVj
dFN0b3JlJiBvYmplY3RTdG9yZSwgYwogICAgICwgbV9pbmZvKGluZm8pCiAgICAgLCBtX3NvdXJj
ZSgmb2JqZWN0U3RvcmUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3Rp
dmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUo
KS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgc3VzcGVu
ZElmTmVlZGVkKCk7CiB9CkBAIC03MSwxOSArNzEsMTkgQEAgSURCQ3Vyc29yOjpJREJDdXJzb3Io
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQkN1
cnMKICAgICAsIG1faW5mbyhpbmZvKQogICAgICwgbV9zb3VyY2UoJmluZGV4KQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKTsKIAogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBJREJDdXJz
b3I6On5JREJDdXJzb3IoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0
aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3Jl
KCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIH0KIAogYm9vbCBJ
REJDdXJzb3I6OnNvdXJjZXNEZWxldGVkKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBlZmZl
Y3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSk7CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZSwKICAgICAgICAgW10gKGNv
bnN0IFJlZlB0cjxJREJPYmplY3RTdG9yZT4mIG9iamVjdFN0b3JlKSB7IHJldHVybiBvYmplY3RT
dG9yZS0+aXNEZWxldGVkKCk7IH0sCkBAIC0xMDEsMTQgKzEwMSwxNCBAQCBJREJPYmplY3RTdG9y
ZSYgSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpIGNvbnN0CiAKIElEQlRyYW5zYWN0
aW9uJiBJREJDdXJzb3I6OnRyYW5zYWN0aW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBl
ZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSk7CiAgICAgcmV0dXJuIGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKTsK
IH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJD
dXJzb3I6OnVwZGF0ZSIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZl
T2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCku
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChzb3Vy
Y2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ3VwZGF0ZScgb24gJ0lEQkN1cnNv
cic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVl
biBkZWxldGVkLiIpIH07CkBAIC0xNDksNyArMTQ5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogRXhjZXB0aW9uT3I8dm9pZD4gSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmFkdmFuY2UiKTsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkBAIC0yMzQsNyArMjM0LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlY1N0YXRl
LCBKU1ZhbHVlIGtleVYKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGludWVGdW5j
dGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1
cnNvcjo6Y29udGludWVGdW5jdGlvbiAodG8ga2V5ICVzKSIsIGtleS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVP
YmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3Jl
cXVlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpA
QCAtMjY4LDcgKzI2OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAKIHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNr
ZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgY291bnQpCiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRy
YW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgKyttX291dHN0YW5kaW5nUmVxdWVzdENv
dW50OwogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJh
dGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBjb3VudCkKIAogdm9pZCBJ
REJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBj
b25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2
ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsK
IAogICAgICsrbV9vdXRzdGFuZGluZ1JlcXVlc3RDb3VudDsKIApAQCAtMjg5LDcgKzI4OSw3IEBA
IHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURhdGEm
IGtleSwgY29uc3QgSURCS2V5RGF0YSYKIEV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJREJSZXF1
ZXN0Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgaWYgKHNvdXJjZXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8g
ZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURCQ3Vyc29yJzogVGhlIGN1cnNvcidzIHNvdXJjZSBvciBl
ZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTMyMCw3ICsz
MjAsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZQogdm9pZCBJREJDdXJzb3I6OnNldEdldFJl
c3VsdChJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50
IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygw
LCAxMDApLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0
b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGF1
dG8qIGNvbnRleHQgPSByZXF1ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAo
IWNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKaW5kZXggOGY2ZTc3NWRhMmRjNzJmMTYwNTg0YTViYzgyZGFlNjdlNjE5MjQ0My4u
YTAwOGRkZjYzZjhkNDdmNTcwOTU5NzJkNzU4NWQyNWNmYTU0ZDQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgSURCQ2xpZW50OjpJREJDb25uZWN0aQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNl
KCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAoIW1fY2xvc2VkSW5TZXJ2ZXIpCiAgICAgICAgIG1fY29ubmVjdGlvblByb3h5LT5kYXRhYmFz
ZUNvbm5lY3Rpb25DbG9zZWQoKnRoaXMpOwpAQCAtNzQsNyArNzQsNyBAQCBJREJEYXRhYmFzZTo6
fklEQkRhdGFiYXNlKCkKIAogYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkg
fHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKIAogICAgIGlmIChtX2Nsb3NlZEluU2Vy
dmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NywxOSArODcsMTkgQEAgYm9vbCBJREJE
YXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogY29uc3QgU3RyaW5nIElEQkRh
dGFiYXNlOjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9CiAKIHVpbnQ2NF90IElEQkRh
dGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKIFJlZlB0cjxE
T01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
ICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVOYW1lcygpKQpAQCAtMTEw
LDcgKzExMCw3IEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3Rv
cmVOYW1lcygpIGNvbnN0CiAKIHZvaWQgSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKElE
Qk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV92ZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgIEFTU0VSVChtX2luZm8uaGFzT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmUuaW5mbygpLm5hbWUoKSkpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJ
REJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3Jl
LCBjb25zdCBTdHJpbmcmIG4KIAogdm9pZCBJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoSURCSW5k
ZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbik7CiAgICAgQVNTRVJUKG1faW5mby5oYXNPYmplY3RTdG9yZShpbmRleC5vYmplY3RTdG9y
ZSgpLmluZm8oKS5uYW1lKCkpKTsKICAgICBBU1NFUlQobV9pbmZvLmluZm9Gb3JFeGlzdGluZ09i
amVjdFN0b3JlKGluZGV4Lm9iamVjdFN0b3JlKCkuaW5mbygpLm5hbWUoKSktPmhhc0luZGV4KGlu
ZGV4LmluZm8oKS5uYW1lKCkpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCT2JqZWN0U3RvcmU+PiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUgLSAoJXMgJXMpIiwgbV9pbmZvLm5hbWUoKS51dGY4KCkuZGF0YSgpLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIGlmICghbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24pCkBAIC0xNjUsNyArMTY1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlRy
YW5zYWN0aW9uPj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFN0cmluZ09yVmVjdG9yT2ZTdHJp
bmcKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uIik7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9j
bG9zZVBlbmRpbmcpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAndHJhbnNhY3Rpb24nIG9uICdJREJE
YXRhYmFzZSc6IFRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3NpbmcuIikgfTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBB
U0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdkZWxldGVPYmplY3RTdG9yZScgb24gJ0lE
QkRhdGFiYXNlJzogVGhlIGRhdGFiYXNlIGlzIG5vdCBydW5uaW5nIGEgdmVyc2lvbiBjaGFuZ2Ug
dHJhbnNhY3Rpb24uIikgfTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpj
bG9zZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjbG9zZSAtICUiIFBS
SXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghbV9jbG9zZVBlbmRpbmcpIHsK
ICAgICAgICAgbV9jbG9zZVBlbmRpbmcgPSB0cnVlOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoY29uc3QgSURCRXJyb3ImIGVycm9y
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y29ubmVjdGlvblRvU2VydmVy
TG9zdCAtICUiIFBSSXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fY2xvc2VQZW5k
aW5nID0gdHJ1ZTsKICAgICBtX2Nsb3NlZEluU2VydmVyID0gdHJ1ZTsKQEAgLTI4NCw3ICsyODQs
NyBAQCB2b2lkIElEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIoKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyIC0gJSIgUFJJdTY0LCBt
X2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fY2xvc2VkSW5TZXJ2ZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTMwMSwxMyArMzAxLDEzIEBAIHZvaWQgSURCRGF0YWJhc2U6Om1heWJlQ2xv
c2VJblNlcnZlcigpCiAKIGNvbnN0IGNoYXIqIElEQkRhdGFiYXNlOjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7
CiAgICAgcmV0dXJuICJJREJEYXRhYmFzZSI7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHZhbHVlIHdpbGwg
c29tZXRpbWVzIGJlIGZhbHNlIHdoZW4gZGF0YWJhc2Ugb3BlcmF0aW9ucyBhcmUgYWN0dWFsbHkg
aW4gcHJvZ3Jlc3MuCiAgICAgLy8gU3VjaCBkYXRhYmFzZSBvcGVyYXRpb25zIGRvIG5vdCB5ZXQg
ZXhpc3QuCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6c3RvcCgpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpzdG9wIC0gJSIgUFJJdTY0LCBtX2RhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKIApAQCAtMzQx
LDcgKzM0MSw3IEBAIFJlZjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0CiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiAlcyIsIGluZm8u
aWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQoaW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rp
b25Nb2RlOjpWZXJzaW9uY2hhbmdlKTsKICAgICBBU1NFUlQoIW1fY2xvc2VQZW5kaW5nKTsKQEAg
LTM1OSw3ICszNTksNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uKElE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0
YWJhc2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fdmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNsaWVudCB0byBoYXZl
IGFib3J0ZWQgYSB0cmFuc2FjdGlvbiBiZWZvcmUgdGhlIHNlcnZlciByZXBsaWVzIGJhY2sgdGhh
dCBpdCBoYXMgc3RhcnRlZC4KICAgICBpZiAobV9hYm9ydGluZ1RyYW5zYWN0aW9ucy5jb250YWlu
cyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSkKQEAgLTM3Miw3ICszNzIsNyBAQCB2
b2lkIElEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbENvbW1p
dFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAKICAgICBhdXRvIHJlZlRyYW5zYWN0aW9uID0gbV9hY3RpdmVUcmFuc2Fj
dGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQo
cmVmVHJhbnNhY3Rpb24pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRp
ZENvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZENvbW1pdFRyYW5zYWN0aW9uICVzIiwgdHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gJnRyYW5zYWN0aW9uKQogICAgICAgICBt
X2luZm8uc2V0VmVyc2lvbih0cmFuc2FjdGlvbi5pbmZvKCkubmV3VmVyc2lvbigpKTsKQEAgLTM5
NSw3ICszOTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFi
YXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byByZWZUcmFuc2FjdGlvbiA9IG1f
YWN0aXZlVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7
CiAgICAgaWYgKCFyZWZUcmFuc2FjdGlvbikKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIElEQkRh
dGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24g
JXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsK
IAogICAgIGlmICh0cmFuc2FjdGlvbi5pc1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAgICBBU1NF
UlQodHJhbnNhY3Rpb24ub3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CkBAIC00MzEsNyArNDMxLDcg
QEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6
OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uID09ICZ0cmFuc2FjdGlvbikKICAgICAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24gPSBudWxscHRyOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlCiAgICAgdWludDY0X3QgY3VycmVudFZlcnNpb24gPSBtX2luZm8udmVyc2lvbigpOwogICAg
IExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCAtIGN1
cnJlbnQgdmVyc2lvbiAlIiBQUkl1NjQgIiwgcmVxdWVzdGVkIHZlcnNpb24gJSIgUFJJdTY0ICIs
IGNvbm5lY3Rpb24gJSIgUFJJdTY0ICIgKCVwKSIsIGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0ZWRW
ZXJzaW9uLCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMpOwogCi0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgfHwgbV9jbG9zZVBlbmRpbmcpIHsKICAgICAgICAgY29ubmVjdGlvblBy
b3h5KCkuZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIElEQkRh
dGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZQogdm9pZCBJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50ICgl
IiBQUkl1NjQgIikgKCVwKSIsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcyk7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lk
IElEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIAogdm9pZCBJREJEYXRh
YmFzZTo6ZGlkQ3JlYXRlSW5kZXhJbmZvKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZSA9IG1faW5mby5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvLm9iamVjdFN0
b3JlSWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUpOwpAQCAtNDk3LDcgKzQ5
Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpZENyZWF0ZUluZGV4SW5mbyhjb25zdCBJREJJbmRl
eEluZm8mIGluZm8pCiAKIHZvaWQgSURCRGF0YWJhc2U6OmRpZERlbGV0ZUluZGV4SW5mbyhjb25z
dCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBv
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2lu
VGhyZWFkKCkpOwogCiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0ZvckV4aXN0
aW5nT2JqZWN0U3RvcmUoaW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJU
KG9iamVjdFN0b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcAppbmRleCA0OTdkZWMxYTQwZmQwZDdjNmY1MTEyOWI1MTgxZGYyZjFlODczM2MwLi45
ZTM1ZjkwZWQ4ZDQ0NTRhNjAzMTVkNGQwOTQ5OTM1ZWIwZWY2ZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC00OCwxNCArNDgsMTQgQEAg
SURCSW5kZXg6OklEQkluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IElEQkluZGV4SW5mbyYgaW5mbywgSUQKICAgICAsIG1fb3JpZ2luYWxJbmZvKGluZm8pCiAgICAg
LCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIHN1c3BlbmRJZk5l
ZWRlZCgpOwogfQogCiBJREJJbmRleDo6fklEQkluZGV4KCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiB9CiAKIGNvbnN0
IGNoYXIqIElEQkluZGV4OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTc1LDEzICs3
NSwxMyBAQCBib29sIElEQkluZGV4OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBjb25z
dCBTdHJpbmcmIElEQkluZGV4OjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1f
aW5mby5uYW1lKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkluZGV4OjpzZXROYW1lKGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2Jq
ZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHNldCBwcm9wZXJ0eSAnbmFtZScgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IGhhcyBiZWVu
IGRlbGV0ZWQuIikgfTsKQEAgLTEwOSwzMSArMTA5LDMxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElE
QkluZGV4OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogSURCT2JqZWN0U3RvcmUmIElE
QkluZGV4OjpvYmplY3RTdG9yZSgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX29iamVjdFN0b3Jl
OwogfQogCiBjb25zdCBJREJLZXlQYXRoJiBJREJJbmRleDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkpOwogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCiBib29sIElEQkluZGV4Ojp1
bmlxdWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RT
dG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9pbmZvLnVuaXF1ZSgpOwogfQog
CiBib29sIElEQkluZGV4OjptdWx0aUVudHJ5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJu
IG1faW5mby5tdWx0aUVudHJ5KCk7CiB9CiAKIHZvaWQgSURCSW5kZXg6OnJvbGxiYWNrSW5mb0Zv
clZlcnNpb25DaGFuZ2VBYm9ydCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gT25seSByb2xsYmFjayB0
byB0aGUgb3JpZ2luYWwgaW5mbyBpZiB0aGlzIGluZGV4IHN0aWxsIGV4aXN0cyBpbiB0aGUgcm9s
bGVkLWJhY2sgZGF0YWJhc2UgaW5mby4KICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX29i
amVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5pbmZvKCkuaW5mb0ZvckV4aXN0aW5n
T2JqZWN0U3RvcmUobV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTE1Miw3
ICsxNTIsNyBAQCB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJv
cnQoKQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNv
ciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS5pc0RlbGV0
ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJ
SUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdvcGVuQ3Vyc29yJyBvbiAnSURCSW5kZXgnOiBU
aGUgaW5kZXggb3IgaXRzIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0x
NzMsNyArMTczLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3Bl
bkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmEKIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpT
VmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGF1dG8ga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKGtleVJhbmdl
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFs
dWUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3Io
RXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5LZXlD
dXJzb3IiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNE
ZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1cnNvcicgb24gJ0lEQklu
ZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9
OwpAQCAtMjI3LDcgKzIyNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmNvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9k
ZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0
ZSAnY291bnQnIG9uICdJREJJbmRleCc6IFRoZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0b3JlIGhh
cyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUg
a2V5KQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldChFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZXhlY3V0ZSAnZ2V0JyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggb3IgaXRzIG9i
amVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yOTcsNyArMjk3LDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0S2V5KEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJ
bmRleDo6ZG9HZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3Jl
LmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQkluZGV4
JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpA
QCAtMzE1LDcgKzMxNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6
OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLCiBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
aWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMzM4LDcgKzMzOCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSlNWYWx1ZSBrZXksCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpn
ZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCSW5kZXg6OmdldEFsbEtleXMiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1f
b2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsS2V5
cycgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4g
ZGVsZXRlZC4iKSB9OwpAQCAtMzYwLDcgKzM2MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUK
IAogdm9pZCBJREJJbmRleDo6bWFya0FzRGVsZXRlZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9y
ZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgQVNTRVJU
KCFtX2RlbGV0ZWQpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMDhhNzg0YmEy
NDIyMzBlNjM1MzcyNTYwMDEzMWJlNjFiMzJiYmQwZC4uZDQ1MGQ3ODM3NTNmM2MzNmFjMGQ1Njhl
MDRlZTRlYmUzMTk3MjQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjEsMTQgKzYxLDE0IEBAIElEQk9iamVjdFN0
b3JlOjpJREJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBJREJPYmplY3RTCiAgICAgLCBtX29yaWdpbmFsSW5mbyhpbmZvKQogICAgICwgbV90cmFuc2Fj
dGlvbih0cmFuc2FjdGlvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsK
IAogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBJREJPYmplY3RTdG9yZTo6fklEQk9iamVj
dFN0b3JlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIH0KIAogY29u
c3QgY2hhciogSURCT2JqZWN0U3RvcmU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAt
ODgsMTMgKzg4LDEzIEBAIGJvb2wgSURCT2JqZWN0U3RvcmU6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiAKIGNvbnN0IFN0cmluZyYgSURCT2JqZWN0U3RvcmU6Om5hbWUoKSBjb25zdAogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2luZm8ubmFt
ZSgpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAK
ICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHNldCBwcm9wZXJ0eSAnbmFtZScgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBA
IC0xMTksMTMgKzExOSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9pbmZvLmtleVBhdGgoKTsKIH0KIAogUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFu
c2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIFJlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAKQEAgLTE0MCwy
MCArMTQwLDIwIEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhO
YW1lcygpIGNvbnN0CiAKIElEQlRyYW5zYWN0aW9uJiBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rp
b24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBt
X3RyYW5zYWN0aW9uOwogfQogCiBib29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4g
bV9pbmZvLmF1dG9JbmNyZW1lbnQoKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRy
PElEQktleVJhbmdlPiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWls
ZWQgdG8gZXhlY3V0ZSAnb3BlbkN1cnNvcicgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVj
dCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3Rh
dGUmIGV4ZWNTdGF0ZSwgSlMKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4
ZWN1dGUgJ29wZW5LZXlDdXJzb3InIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBvYmplY3Qgc3Rv
cmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjAxLDcgKzIwMSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhlY1N0YXRl
JiBleGVjU3RhdGUsCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
OjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5KQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dl
dCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVk
LiIpIH07CkBAIC0yMTksNyArMjE5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGsKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIGtleVJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJPYmplY3RTdG9yZTo6Z2V0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBA
IC0yMzcsNyArMjM3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW4KIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpn
ZXRLZXkiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICht
X2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCT2JqZWN0U3Rv
cmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI1NSw3ICsy
NTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRL
ZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlS
YW5nZSoga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpn
ZXRLZXkiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICht
X2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCT2JqZWN0U3Rv
cmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI5Nyw3ICsy
OTcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpwdXRP
ckFkZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpw
dXRPckFkZCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0
byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKTsK
ICAgICBpZiAoIWNvbnRleHQpCkBAIC0zNjksNyArMzY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVj
U3RhdGUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvRGVs
ZXRlKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbiIpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9u
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gVGhlIElEQiBzcGVjIGZvciBz
ZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQgdHJhbnNhY3Rpb24gcmVs
YXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8vIHRoZSBleGNlcHRpb24g
Zm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNDAzLDcgKzQwMyw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9i
amVjdFN0b3JlOjpjbGVhcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCT2JqZWN0U3RvcmU6OmNsZWFyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICAvLyBUaGUgSURCIHNwZWMgZm9yIHNldmVyYWwgSURCT2JqZWN0U3Rv
cmUgbWV0aG9kcyBzdGF0ZXMgdGhhdCB0cmFuc2FjdGlvbiByZWxhdGVkIGV4Y2VwdGlvbnMgc2hv
dWxkIGZpcmUgYmVmb3JlCiAgICAgLy8gdGhlIGV4Y2VwdGlvbiBmb3IgYW4gb2JqZWN0IHN0b3Jl
IGJlaW5nIGRlbGV0ZWQuCkBAIC00MjUsNyArNDI1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoRXhlY1N0YXRlJiBleGVjU3RhdGUpCiBFeGNl
cHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhlY1N0
YXRlJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYga2V5UGF0aCwgY29uc3QgSW5k
ZXhQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXggJXMgKGtleVBhdGg6ICVzLCB1bmlxdWU6ICVpLCBtdWx0aUVu
dHJ5OiAlaSkiLCBuYW1lLnV0ZjgoKS5kYXRhKCksIGxvZ2dpbmdTdHJpbmcoa2V5UGF0aCkudXRm
OCgpLmRhdGEoKSwgcGFyYW1ldGVycy51bmlxdWUsIHBhcmFtZXRlcnMubXVsdGlFbnRyeSk7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rp
b24uaXNWZXJzaW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRlSW5kZXgn
IG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBkYXRhYmFzZSBpcyBub3QgcnVubmluZyBhIHZlcnNp
b24gY2hhbmdlIHRyYW5zYWN0aW9uLiIpIH07CkBAIC00NjYsNyArNDY2LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSYs
IGNvbnN0IFN0cmluZyYKIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3Jl
OjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCT2JqZWN0U3RvcmU6OmluZGV4Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSk7CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07IC8vIEZJWE1FOiBJcyB0aGlzIGNvZGUg
dGVzdGVkPyBJcyBpdGV2ZW4gcmVhY2hhYmxlPwpAQCAtNDk4LDcgKzQ5OCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGlu
ZGV4TmFtZSkKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpkZWxldGVJbmRleCAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4
ZWN1dGUgJ2RlbGV0ZUluZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3Jl
IGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTU1MSw3ICs1NTEsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpjb3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSURCS2V5UgogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
Ojpkb0NvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gVGhl
IElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQg
dHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8v
IHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNTcz
LDcgKzU3Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6
OmRvQ291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0CiBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBz
dG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC01OTYsNyArNTk2LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKU1ZhbHUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyIpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRl
ICdnZXRBbGxLZXlzJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBi
ZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTYxOCwxMyArNjE4LDEzIEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3Rh
dGUsIEpTCiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6Om1hcmtBc0RlbGV0ZWQoKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9u
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CiB9CiAK
IHZvaWQgSURCT2JqZWN0U3RvcmU6OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0KCkKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFu
c2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIFN0cmluZyBjdXJyZW50
TmFtZSA9IG1faW5mby5uYW1lKCk7CiAgICAgbV9pbmZvID0gbV9vcmlnaW5hbEluZm87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwCmluZGV4IDc4ZGE5NzAyMmE3Y2U0OWI1MTAzZjQ4ZGJlZGM2NDExOGQzNjA5NjIuLmI0Zjc5
MzFjOTdkOTViMGU1NzAyODdmY2U0NjVmODYyNzU1NWY0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC02Mywx
MiArNjMsMTIgQEAgSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJDbGllbnQ6OkkKIAogSURCT3BlbkRCUmVxdWVzdDo6
fklEQk9wZW5EQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRo
cmVhZCgpKTsKIH0KIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvbkVycm9yKGNvbnN0IElEQlJl
c3VsdERhdGEmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFk
KCkpOwogCiAgICAgbV9kb21FcnJvciA9IGRhdGEuZXJyb3IoKS50b0RPTUV4Y2VwdGlvbigpOwog
ICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIHRydWUsIHRydWUsICp0aGlzKSk7CkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRh
KQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkRpZEZp
bmlzaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAg
ICAgLy8gMy4zLjcgInZlcnNpb25jaGFuZ2UiIHRyYW5zYWN0aW9uIHN0ZXBzCiAgICAgLy8gV2hl
biB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQsIGFmdGVyIGZpcmluZyBjb21wbGV0ZS9hYm9y
dCBvbiB0aGUgdHJhbnNhY3Rpb24sIGltbWVkaWF0ZWx5IHNldCByZXF1ZXN0J3MgdHJhbnNhY3Rp
b24gcHJvcGVydHkgdG8gbnVsbC4KQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCgpCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdl
Q29tbWl0KCkgLSAlcyIsIHJlc291cmNlSWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQoaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIG1fdHJhbnNhY3Rpb24tPmFk
ZFJlcXVlc3QoKnRoaXMpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VDb21wbGV0aW9uKCkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJzaW9uQ2hhbmdl
Q29tcGxldGlvbigpIC0gJXMiLCByZXNvdXJjZUlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIAogICAgIElEQkVycm9yIGlk
YkVycm9yKEFib3J0RXJyb3IpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSURCT3BlbkRCUmVx
dWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6ZGlzcGF0Y2hF
dmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhy
ZWFkKCkpOwogCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKQEAg
LTEzMyw3ICsxMzMsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyhjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPcGVu
REJSZXF1ZXN0OjpvblN1Y2Nlc3MoKSIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgc2V0UmVzdWx0KElEQkRhdGFiYXNlOjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5KCksIHJlc3VsdERhdGEpKTsKICAg
ICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25lOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgUmVmPElEQkRhdGFiYXNlPiBkYXRhYmFzZSA9IElEQkRhdGFi
YXNlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5KCks
IHJlc3VsdERhdGEpOwogICAgIFJlZjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBkYXRh
YmFzZS0+c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24ocmVzdWx0RGF0YS50cmFuc2FjdGlv
bkluZm8oKSwgKnRoaXMpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVz
dDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAKIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6b25EZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAKICAgICB1aW50NjRfdCBvbGRWZXJzaW9uID0gcmVzdWx0RGF0YS5kYXRhYmFz
ZUluZm8oKS52ZXJzaW9uKCk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIElEQk9wZW5EQlJl
cXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZCIpOwog
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gSWYg
YW4gT3BlbiByZXF1ZXN0IHdhcyBjb21wbGV0ZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIG5hdmlnYXRl
ZCwgbGVhdmluZyB0aGlzIHJlcXVlc3QKICAgICAvLyB3aXRoIGEgc3RvcHBlZCBzY3JpcHQgZXhl
Y3V0aW9uIGNvbnRleHQsIHdlIG5lZWQgdG8gbWVzc2FnZSBiYWNrIHRvIHRoZSBzZXJ2ZXIgc28g
aXQKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RDb21w
bGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0
OjpyZXF1ZXN0QmxvY2tlZCh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9u
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIExP
RyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0QmxvY2tlZCIpOwogICAgIGVu
cXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBuZXdW
ZXJzaW9uLCBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGNkYzliYWY1MzllZGZmMjE0
MTVmOTQ0ZDgxODc4NWRjMjRhNjgyNTcuLjYyMTYyNTkwOTQyY2YxOWVkYmYwMzVmOTAyYTdmZjg5
NjUxZDVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWQKIAog
SURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9y
aWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX3Jlc3VsdCkgewogICAgICAgICBXVEY6OnN3aXRj
aE9uKG1fcmVzdWx0LnZhbHVlKCksCkBAIC0xNjMsNyArMTYzLDcgQEAgRXhjZXB0aW9uT3I8c3Rk
OjpvcHRpb25hbDxJREJSZXF1ZXN0OjpSZXN1bHQ+PiBJREJSZXF1ZXN0OjpyZXN1bHQoKSBjb25z
dAogCiBFeGNlcHRpb25PcjxET01FeGNlcHRpb24qPiBJREJSZXF1ZXN0OjplcnJvcigpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYg
KCFpc0RvbmUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byByZWFkIHRoZSAnZXJyb3InIHByb3BlcnR5IGZyb20g
J0lEQlJlcXVlc3QnOiBUaGUgcmVxdWVzdCBoYXMgbm90IGZpbmlzaGVkLiIpIH07CkBAIC0xNzMs
NyArMTczLDcgQEAgRXhjZXB0aW9uT3I8RE9NRXhjZXB0aW9uKj4gSURCUmVxdWVzdDo6ZXJyb3Io
KSBjb25zdAogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJREJDdXJzb3ImIGN1cnNvcikK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KCFtX2N1cnNvclJlcXVlc3ROb3RpZmllcik7CiAKICAgICBtX3NvdXJjZSA9IFNvdXJjZSB7ICZj
dXJzb3IgfTsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJ
REJDdXJzb3ImIGN1cnNvcikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb24pOwog
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5pc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKCF0
cmFuc2FjdGlvbi5pc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CkBAIC0xOTUsMTMgKzE5NSwxMyBA
QCB2b2lkIElEQlJlcXVlc3Q6OnNldFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiAKIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4gSURC
UmVxdWVzdDo6dHJhbnNhY3Rpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9zaG91bGRFeHBvc2VUcmFuc2FjdGlvblRv
RE9NID8gbV90cmFuc2FjdGlvbiA6IG51bGxwdHI7CiB9CiAKIHVpbnQ2NF90IElEQlJlcXVlc3Q6
OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0yMTUsNyArMjE1LDcgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNl
T2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3QKIAogdWludDY0X3QgSURCUmVxdWVzdDo6c291
cmNlSW5kZXhJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBv
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fc291cmNlKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTIyOSwxNCArMjI5LDE0IEBAIHVpbnQ2NF90IElEQlJlcXVlc3Q6OnNvdXJjZUluZGV4SWRl
bnRpZmllcigpIGNvbnN0CiAKIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVSZWNvcmRUeXBlIElEQlJl
cXVlc3Q6OnJlcXVlc3RlZE9iamVjdFN0b3JlUmVjb3JkVHlwZSgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIG1fcmVxdWVz
dGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBlOwogfQogCiBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlw
ZSBJREJSZXF1ZXN0OjpyZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGUoKSBjb25zdAogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zb3VyY2Up
OwogICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJJbmRleD4+KG1f
c291cmNlLnZhbHVlKCkpKTsKIApAQCAtMjQ1LDMzICsyNDUsMzMgQEAgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgSURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29uc3QK
IAogRXZlbnRUYXJnZXRJbnRlcmZhY2UgSURCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAog
ICAgIHJldHVybiBJREJSZXF1ZXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCiBjb25z
dCBjaGFyKiBJREJSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICByZXR1cm4gIklEQlJl
cXVlc3QiOwogfQogCiBib29sIElEQlJlcXVlc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3Bl
bnNpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gb3JpZ2luVGhyZWFkKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKICAgICByZXR1cm4gbV9o
YXNQZW5kaW5nQWN0aXZpdHk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c3RvcCgpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9jb250
ZXh0U3RvcHBlZCk7CiAKICAgICBjYW5jZWxGb3JTdG9wKCk7CkBAIC0yODgsNyArMjg4LDcgQEAg
dm9pZCBJREJSZXF1ZXN0OjpjYW5jZWxGb3JTdG9wKCkKIAogdm9pZCBJREJSZXF1ZXN0OjplbnF1
ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8fCBt
X2NvbnRleHRTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICszMDAsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50IC0gJXMgKCVwKSIsIGV2ZW50LnR5
cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9oYXNQZW5kaW5nQWN0aXZpdHkp
OwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5k
bGVyIik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAobV90cmFuc2FjdGlvbiAmJiBtX2lkYkVycm9yLmNvZGUoKSAhPSBBYm9ydEVycm9yKQog
ICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydER1ZVRvRmFpbGVkUmVxdWVzdChET01FeGNlcHRp
b246OmNyZWF0ZShBYm9ydEVycm9yLCBBU0NJSUxpdGVyYWwoIklEQlRyYW5zYWN0aW9uIHdpbGwg
YWJvcnQgZHVlIHRvIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBhbiBldmVudCBoYW5kbGVyIikpKTsK
QEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5F
dmVudEhhbmRsZXIoKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBJREJLZXlE
YXRhJiBrZXlEYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYga2V5RGF0YXMpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0zOTMsNyArMzkzLDcg
QEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQktleURhdGE+JiBr
ZXlEYXRhcykKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQlZh
bHVlPiYgdmFsdWVzKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IFZlY3RvcjxJREJWYWx1ZT4mIHZhbHVlcykKIAogdm9pZCBJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHQodWludDY0X3QgbnVtYmVyKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9y
aWdpblRocmVhZCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgSURCUmVx
dWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRS
ZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBJREJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lIik7CiAKQEAgLTQ0NCw3ICs0
NDQsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKGNvbnN0
IElEQlZhbHVlJiB2YWx1ZSkKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVmaW5l
ZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
YXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVm
aW5lZCgpCiAKIElEQkN1cnNvciogSURCUmVxdWVzdDo6cmVzdWx0Q3Vyc29yKCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fcmVzdWx0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBJREJDdXJzb3Iq
IElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcigpCiAKIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJh
dGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChpc0RvbmUoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOwpAQCAtNDkw
LDcgKzQ5MCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29y
JiBjdXJzb3IpCiAKIHZvaWQgSURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKIAogICAgIG1f
cmVzdWx0ID0gc3RkOjpudWxsb3B0OwpAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogCiB2b2lkIElEQlJlcXVlc3Q6OmNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZlbnQoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25l
OwogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6b25FcnJvciIpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pZGJFcnJvci5pc051
bGwoKSk7CiAKICAgICBtX2RvbUVycm9yID0gbV9pZGJFcnJvci50b0RPTUV4Y2VwdGlvbigpOwpA
QCAtNTM0LDE0ICs1MzQsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6
b25TdWNjZXNzIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KFJlZjxJ
REJEYXRhYmFzZT4mJiBkYXRhYmFzZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAKICAgICBtX3Jlc3VsdCA9IFJlc3VsdCB7IFJlZlB0cjxJREJEYXRhYmFz
ZT4geyBXVEZNb3ZlKGRhdGFiYXNlKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYzFlMWRlZjU1ZWI2MWMy
ODZjYTNmYWVhMWQ5ODQwNTc4Y2RiMTM2Ni4uYzQ0NjY5ZWRlMmY0OTIzZDEwMTkzNmI1MzNkODEw
ZTMyYjQ0NTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtODAsNyArODAsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURC
VHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mCiAKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0
aW9uIC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KTsKIAogICAgIGlmIChtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lv
bmNoYW5nZSkgewogICAgICAgICBBU1NFUlQobV9vcGVuREJSZXF1ZXN0KTsKQEAgLTEwNiw3ICsx
MDYsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFi
YXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAKIElEQlRyYW5zYWN0aW9uOjp+SURCVHJh
bnNhY3Rpb24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIH0KIAogSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkmIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uUHJveHkoKQpAQCAtMTE2LDcgKzExNiw3IEBA
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBJREJUcmFuc2FjdGlvbjo6Y29ubmVjdGlv
blByb3h5KCkKIAogUmVmPERPTVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9y
ZU5hbWVzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBu
YW1lcyA9IGlzVmVyc2lvbkNoYW5nZSgpID8gbV9kYXRhYmFzZS0+aW5mbygpLm9iamVjdFN0b3Jl
TmFtZXMoKSA6IG1faW5mby5vYmplY3RTdG9yZXMoKTsKIApAQCAtMTMwLDIwICsxMzAsMjAgQEAg
UmVmPERPTVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3QKIAogSURCRGF0YWJhc2UqIElEQlRyYW5zYWN0aW9uOjpkYigpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAg
IHJldHVybiBtX2RhdGFiYXNlLnB0cigpOwogfQogCiBET01FeGNlcHRpb24qIElEQlRyYW5zYWN0
aW9uOjplcnJvcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2RvbUVycm9yLmdl
dCgpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSIpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAog
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBvYmplYwogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVl
c3QoRE9NRXhjZXB0aW9uJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OmFib3J0RHVlVG9GYWlsZWRSZXF1ZXN0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKGlz
RmluaXNoZWRPckZpbmlzaGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xOTQsNyArMTk0LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9NRXhjZXB0
aW9uJiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6dHJhbnNpdGlvbmVkVG9GaW5pc2hp
bmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlIHN0YXRlKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAg
IEFTU0VSVCghaXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsK
QEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjp0cmFuc2l0aW9uZWRUb0Zp
bmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGUgc3RhdGUpCiBFeGNlcHRpb25Pcjx2
b2lkPiBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJU
cmFuc2FjdGlvbjo6YWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hlZE9yRmlu
aXNoaW5nKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnYWJvcnQnIG9uICdJREJUcmFuc2FjdGlv
bic6IFRoZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKSB9OwpAQCAtMjE3
LDcgKzIxNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQlRyYW5zYWN0aW9uOjphYm9ydCgpCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjppbnRlcm5hbEFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KCFpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CiAKICAgICBtX2RhdGFiYXNlLT53aWxsQWJvcnRU
cmFuc2FjdGlvbigqdGhpcyk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6YWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzIik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1w
dHkoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5hYm9ydFRyYW5zYWN0
aW9uKCp0aGlzKTsKQEAgLTMwOSwyNiArMzA5LDI2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmFi
b3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
CiAKIGNvbnN0IGNoYXIqIElEQlRyYW5zYWN0aW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuICJJREJUcmFuc2FjdGlvbiI7CiB9CiAKIGJvb2wg
SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpIHx8IG1heUJlR0NUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
IHx8IG1heUJlR0NUaHJlYWQoKSk7CiAgICAgcmV0dXJuICFtX2NvbnRleHRTdG9wcGVkICYmIG1f
c3RhdGUgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KIAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpzdG9wIC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpKTsKIAogICAgIC8vIElEQkRhdGFiYXNlOjpzdG9wKCkgY2FsbHMgSURCVHJhbnNh
Y3Rpb246OnN0b3AoKSBmb3IgZWFjaCBvZiBpdHMgYWN0aXZlIHRyYW5zYWN0aW9ucy4KICAgICAv
LyBTaW5jZSB0aGUgb3JkZXIgb2YgY2FsbGluZyBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSBpcyBy
YW5kb20sIHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIHN0b3BwZWQuCkBAIC0zNDcsMTMgKzM0
NywxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIAogYm9vbCBJREJUcmFuc2FjdGlv
bjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9zdGF0ZSA9PSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFjdGl2ZTsKIH0KIAogYm9vbCBJREJUcmFuc2Fj
dGlvbjo6aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBy
ZXR1cm4gbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcK
ICAgICAgICAgfHwgbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFib3J0
aW5nCkBAIC0zNjIsMTMgKzM2MiwxMyBAQCBib29sIElEQlRyYW5zYWN0aW9uOjppc0ZpbmlzaGVk
T3JGaW5pc2hpbmcoKSBjb25zdAogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjphZGRSZXF1ZXN0KElE
QlJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIG1fb3BlblJlcXVlc3RzLmFkZCgm
cmVxdWVzdCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURCUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fb3BlblJlcXVlc3RzLmNv
bnRhaW5zKCZyZXF1ZXN0KSk7CiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsK
IH0KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0
KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJh
dGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24p
CiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJh
dGlvbi0+aWRlbnRpZmllcigpKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgbV9wZW5kaW5nVHJhbnNhY3Rp
b25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKICAgICBtX3RyYW5zYWN0aW9uT3Bl
cmF0aW9uTWFwLnNldChvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgV1RGTW92ZShvcGVyYXRpb24p
KTsKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJh
dGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJgogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcigpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgaWYgKCFtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAg
ICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTM5NSw3ICsz
OTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1l
cigpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGlt
ZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3N0YXJ0ZWRPblNl
cnZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNDI5LDggKzQyOSw4IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246OnBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCkKIAogdm9pZCBJREJUcmFuc2FjdGlv
bjo6b3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSwg
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogewotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcGVyYXRpb24ub3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVh
ZCgpKTsKIAogICAgIG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9u
LCBkYXRhIH0pOwogICAgIHNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKTsKQEAgLTQz
OCw3ICs0MzgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNl
cnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbAogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCkKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAoIW1fY29tcGxldGVkT3BlcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9j
b21wbGV0ZWRPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTQ0Nyw3ICs0NDcs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVy
KCkKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQoKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9u
VGltZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fY29tcGxldGVk
T25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgfHwgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmZpbmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpjb21taXQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFpc0ZpbmlzaGVkT3JG
aW5pc2hpbmcoKSk7CiAKICAgICB0cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRy
YW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSURC
VHJhbnNhY3Rpb246OmNvbW1pdCgpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlciIpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsK
IAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNvbW1pdFRyYW5zYWN0aW9uKCp0
aGlzKTsKIApAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdE9u
U2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKIHZvaWQg
SURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0T3JDb21taXQoKQogewogICAgIEFTU0VSVChtX3N0
YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsK
IAogICAgIG1fc3RhdGUgPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlzaGVkOwog
fQpAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0T3JD
b21taXQoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQoY29uc3QgSURCRXJyb3ImIGVy
cm9yKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQiKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5kaWRTdGFydFRyYW5zYWN0aW9uKCp0aGlzKTsK
IApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KGNvbnN0
IElEQkVycm9yJiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQo
Y29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmRp
ZEFib3J0VHJhbnNhY3Rpb24oKnRoaXMpOwogICAgIG1faWRiRXJyb3IgPSBlcnJvcjsKQEAgLTU2
MCw3ICs1NjAsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpub3RpZnlEaWRBYm9ydChjb25zdCBJ
REJFcnJvciYgZXJyb3IpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydChjb25zdCBJREJF
cnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRB
Ym9ydCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNh
Y3Rpb25TdGF0ZTo6RmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydChjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRDb21taXQoY29uc3QgSURCRXJyb3ImIGVycm9yKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ29tbWl0Iik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogICAgIEFTU0VSVChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6Q29t
bWl0dGluZyk7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTU5MCwyMSArNTkwLDIx
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdChjb25zdCBJREJFcnJvciYgZXJyb3Ip
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBl
bnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmZpcmVPbkFib3J0KCkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmZpcmVPbkFib3J0Iik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hYm9ydEV2
ZW50LCB0cnVlLCBmYWxzZSkpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZl
bnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewogICAgIEFTU0VSVChtX3N0YXRlICE9IEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIHx8IG1fY29udGV4dFN0b3BwZWQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50
KEV2ZW50JiBldmVudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
c3BhdGNoRXZlbnQiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwogICAgIEFTU0VSVChldmVu
dC50YXJnZXQoKSA9PSB0aGlzKTsKQEAgLTY0Nyw3ICs2NDcsNyBAQCBSZWY8SURCT2JqZWN0U3Rv
cmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RT
dG9yZSIpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihtX3JlZmVyZW5jZWRPYmplY3RTdG9yZUxvY2spOwogCkBAIC02NjQsNyArNjY0LDcgQEAgUmVm
PElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3Rv
cmVPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAg
QVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmNyZWF0ZU9iamVjdFN0b3JlKG9wZXJhdGlvbiwgaW5mbyk7CkBAIC02NzMsNyArNjcz
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ3Jl
YXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3Rv
cmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJl
c3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkNyZWF0ZU9iamVjdFN0b3JlU3VjY2Vz
cyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKQEAg
LTY4NSw3ICs2ODUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZShJ
REJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZwogCiAgICAgQVNTRVJUKGlz
VmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBBU1NFUlQobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLmNvbnRhaW5z
KG9iamVjdFN0b3JlLmluZm8oKS5uYW1lKCkpKTsKICAgICBBU1NFUlQoIW1fcmVmZXJlbmNlZE9i
amVjdFN0b3Jlcy5jb250YWlucyhuZXdOYW1lKSk7CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0
b3JlLCBjb25zdCBTdHJpbmcKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3Jl
T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25z
dCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9y
ZU9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAK
ICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5yZW5hbWVPYmplY3RTdG9yZShvcGVy
YXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03MTEsNyArNzExLDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1l
T2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmVP
blNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3Vs
dERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OlJlbmFtZU9iamVjdFN0b3JlU3VjY2VzcyB8
fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKQEAgLTcx
OSw3ICs3MTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpj
cmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcgogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgiKTsKICAgICBBU1NFUlQoaXNWZXJzaW9u
Q2hhbmdlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTczMyw3ICs3MzMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9y
ZSYgb2JqZWN0U3Rvcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNyZWF0
ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgp
KTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNyZWF0ZUluZGV4KG9wZXJh
dGlvbiwgaW5mbyk7CkBAIC03NDIsNyArNzQyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXQK
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAocmVzdWx0
RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6Q3JlYXRlSW5kZXhTdWNjZXNzKQogICAgICAg
ICByZXR1cm47CkBAIC03NjQsNyArNzY0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1l
SW5kZXgoSURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiAKICAgICBBU1NF
UlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVChtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuY29u
dGFpbnMoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFtZSgpKSk7CiAgICAgQVNTRVJUKG1f
cmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5nZXQoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFt
ZSgpKSA9PSAmaW5kZXgub2JqZWN0U3RvcmUoKSk7CkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgoSURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcm
IG5ld05hbWUpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVyKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgdWludDY0X3QmIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgdWludDY0X3QmIGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoaXNWZXJzaW9u
Q2hhbmdlKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkucmVuYW1lSW5k
ZXgob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3
TmFtZSk7CkBAIC03OTAsMTQgKzc5MCwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJ
bmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlcihjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
ZGlkUmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OlJlbmFtZUluZGV4
U3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9
CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhl
Y1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJDdXJz
b3JJbmZvJiBpbmZvKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdE9wZW5DdXJzb3IiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkg
PT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9SZXF1
ZXN0T3BlbkN1cnNvcihzdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIG9iamVjdFN0b3Jl
LCBpbmZvKSk7CkBAIC04MDgsNyArODA4LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG8KIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRl
JiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IiKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkgPT0gSW5kZXhlZERCOjpDdXJz
b3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihzdGF0
ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIGluZGV4LCBpbmZvKSk7CkBAIC04MTksNyArODE5
LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihF
eGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW4KIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBSZWY8SURCQ3Vyc29y
PiYmIGN1cnNvcikKIHsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
QVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogCkBAIC04MzUsNyArODM1LDcg
QEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKEV4
ZWNTdGF0ZSYgc3RhdGUsIFJlZjxJREJDdXIKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZW5DdXJz
b3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNv
bnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNl
LT5jb25uZWN0aW9uUHJveHkoKS5vcGVuQ3Vyc29yKG9wZXJhdGlvbiwgaW5mbyk7CiB9CkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVyKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGkKIHZvaWQgSURCVHJhbnNhY3Rp
b246OmRpZE9wZW5DdXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgY29tcGxldGVD
dXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQpAQCAtODUzLDcgKzg1Myw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjppdGVyYXRlQ3Vyc29yIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VS
VChjdXJzb3IucmVxdWVzdCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBhZGRSZXF1ZXN0KCpjdXJzb3Iu
cmVxdWVzdCgpKTsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0
ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRh
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0
YSYgZGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVD
dXJzb3JPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLml0ZXJhdGVDdXJzb3Iob3BlcmF0aW9uLCBkYXRhKTsKIH0KQEAgLTg3Myw3ICs4NzMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRl
cmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpk
aWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBjb21wbGV0ZUN1cnNv
clJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CkBAIC04ODIsNyArODgyLDcgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNv
cmRzKEpTQzo6RXhlY1N0YXRlJgogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KSk7CiAKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3Jk
cyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5V
U0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTkxOSw3ICs5MTksNyBAQCBSZWY8SURC
UmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2VydmVyIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZ2V0QWxsUmVjb3JkcyhvcGVyYXRp
b24sIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpnZXRBbGxSZWNvcmRzT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRz
T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gSURC
UmVzdWx0VHlwZTo6RXJyb3IpIHsKICAgICAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJl
cXVlc3QsIHJlc3VsdERhdGEpOwpAQCAtOTU0LDcgKzk1NCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmpl
Y3RTdG9yCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVj
b3JkIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghZ2V0UmVjb3JkRGF0
YS5rZXlSYW5nZURhdGEuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0
YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
T2JqZWN0U3RvcgogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0VmFs
dWUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldFZhbHVlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChz
dGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpWYWx1ZSwgcmFuZ2UpOwog
fQpAQCAtOTgwLDcgKzk4MCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEdldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRlCiBSZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
SW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6
SW5kZXhSZWNvcmRUeXBlOjpLZXksIHJhbmdlKTsKIH0KQEAgLTk5MCw3ICs5OTAsNyBAQCBSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZChFeGVjU3RhdGUm
IHN0YXRlLCBJREJJbmRleCYgaQogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdEdldFZhbHVlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCgh
cmFuZ2UuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUoJnN0YXRlKSk7CiAKQEAgLTEwMDgsNyArMTAwOCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4
JiBpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdl
dFJlY29yZERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpnZXRS
ZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmdldFJlY29yZChvcGVyYXRpb24sIGdldFJlY29yZERhdGEpOwogfQpAQCAtMTAxNiw3
ICsxMDE2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW8KIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkaWRHZXRSZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChyZXN1bHREYXRh
LnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgewogICAgICAgICBjb21wbGV0ZU5vbmN1
cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChFeGVjU3RhdGUmIHN0
YXRlLCBJREJPYmplY3RTdG9yZSYgbwogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdENvdW50IChJREJPYmplY3RTdG9yZSkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUo
KSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVF9V
TlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0
ZSwgSURCSW5kZXgmIGluZGV4LAogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdENvdW50IChJREJJbmRleCkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAg
QVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5k
ZXgmIGluZGV4LAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpnZXRD
b3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblBy
b3h5KCkuZ2V0Q291bnQob3BlcmF0aW9uLCBrZXlSYW5nZSk7CiB9CkBAIC0xMDkzLDcgKzEwOTMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRDb3VudE9uU2VydmVyKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
Q291bnRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
Q291bnRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3Vs
dERhdGEucmVzdWx0SW50ZWdlcigpKTsKICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVx
dWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
T2JqZWN0UwogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERlbGV0
ZVJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdlLmlz
TnVsbCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0
ZSkpOwogCkBAIC0xMTE5LDcgKzExMTksNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0Uwogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25T
ZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5k
ZWxldGVSZWNvcmQob3BlcmF0aW9uLCBrZXlSYW5nZSk7CiB9CkBAIC0xMTI3LDcgKzExMjcsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVSZWNvcmRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRl
UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZERl
bGV0ZVJlY29yZE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmVxdWVzdC5zZXRSZXN1bHRU
b1VuZGVmaW5lZCgpOwogICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1
bHREYXRhKTsKQEAgLTExMzcsNyArMTEzNyw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RT
dG9yZSIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRf
VU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTExNTUsNyArMTE1NSw3IEBAIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoRXhl
Y1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVhck9iamVjdFN0
b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBj
b25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuY2xlYXJPYmplY3RTdG9yZShv
cGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiB9CkBAIC0xMTYzLDcgKzExNjMsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgbwogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZU9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpk
aWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICByZXF1ZXN0LnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVl
c3QsIHJlc3VsdERhdGEpOwpAQCAtMTE3NSw3ICsxMTc1LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0
U3RvcmUKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFpc1JlYWRPbmx5KCkp
OwogICAgIEFTU0VSVChvYmplY3RTdG9yZS5pbmZvKCkuYXV0b0luY3JlbWVudCgpIHx8IGtleSk7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwog
CkBAIC0xMTkxLDcgKzExOTEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJl
cXVlc3RQdXRPckFkZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZQogdm9pZCBJREJU
cmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXRpb24sIFJlZlB0cjxJREJLZXk+IGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2Rl
JiBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cHV0T3JBZGRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVh
ZCgpKTsKICAgICBBU1NFUlQoIWlzUmVhZE9ubHkoKSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKIApA
QCAtMTIyNCw3ICsxMjI0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICBvcGVyYXRp
b24uc2V0TmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyKGZhbHNlKTsKIAogICAgIHZhbHVlLT53cml0
ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiA9IFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uPihvcGVyYXRpb24pLCBrZXlEYXRhID0gSURCS2V5RGF0YShrZXkuZ2V0KCkpLmlzb2xh
dGVkQ29weSgpLCBvdmVyd3JpdGVNb2RlXShjb25zdCBJREJWYWx1ZSYgaWRiVmFsdWUpIG11dGFi
bGUgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoaWRiVmFsdWUuZGF0
YSgpLmRhdGEoKSkgewogICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCku
cHV0T3JBZGQocHJvdGVjdGVkT3BlcmF0aW9uLmdldCgpLCBXVEZNb3ZlKGtleURhdGEpLCBpZGJW
YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlcihJREJS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlciIpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZCgpKTsKIAogICAgIGlmIChhdXRvKiByZXN1bHQgPSByZXN1bHREYXRhLnJlc3VsdEtleSgp
KQogICAgICAgICByZXF1ZXN0LnNldFJlc3VsdCgqcmVzdWx0KTsKQEAgLTEyNTUsNyArMTI1NSw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9jayk7CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24mCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5n
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5kZWxl
dGVPYmplY3RTdG9yZShvcGVyYXRpb24sIG9iamVjdFN0b3JlTmFtZSk7CiB9CkBAIC0xMjgyLDE0
ICsxMjgyLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2
ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZU9i
amVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHRE
YXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpEZWxldGVPYmplY3RTdG9y
ZVN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwog
fQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgiKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURC
IGRlbGV0ZSBpbmRleCBvcGVyYXRpb246ICVzICglIiBQUkl1NjQgIikiLCBpbmRleE5hbWUudXRm
OCgpLmRhdGEoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKQEAgLTEzMDAsNyArMTMwMCw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5n
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5kZWxl
dGVJbmRleChvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKIH0K
QEAgLTEzMDgsNyArMTMwOCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25T
ZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0CiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpkaWREZWxldGVJbmRleE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWREZWxl
dGVJbmRleE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0
YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5kZXhTdWNjZXNz
IHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApAQCAt
MTMxNiw4ICsxMzE2LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVk
T25DbGllbnQoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9wZXJhdGlvbi5v
cmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuZ2V0
KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpID09ICZvcGVyYXRpb24pOwogICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jlc3NRdWV1ZS5maXJzdCgpID09ICZvcGVyYXRpb24p
OwogCkBAIC0xMzMwLDE0ICsxMzMwLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlv
bkNvbXBsZXRlZE9uQ2xpZW50KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlcigpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAg
IG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmVzdGFibGlzaFRyYW5zYWN0aW9uKCp0aGlz
KTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAog
ICAgIGlmIChpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0
Nyw3ICsxMzQ3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkZWFjdGl2YXRlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9zdGF0
ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFjdGl2ZSkKICAgICAgICAgbV9zdGF0
ZSA9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6SW5hY3RpdmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwCmluZGV4IDllYjNmMjVhOGQ5MmEwZjM3NzUxNDY5OTllZTg5NzEyNDVjMTEy
MzkuLmJlNGRiNDgwNWUyMzA1NTkwMzU1YjUyM2FiMGM4NzU3MmU0YmY0MjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCkBAIC01MTksMTIgKzUxOSwxMiBAQCB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6Zm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5z
YWN0aW9uTwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPgog
dm9pZCByZW1vdmVJdGVtc01hdGNoaW5nQ3VycmVudFRocmVhZChIYXNoTWFwPEtleVR5cGUsIFZh
bHVlVHlwZT4mIG1hcCkKIHsKLSAgICBhdXRvIGN1cnJlbnRUaHJlYWRJRCA9IGN1cnJlbnRUaHJl
YWQoKTsKKyAgICBhdXRvJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAKICAg
ICBWZWN0b3I8S2V5VHlwZT4ga2V5czsKICAgICBrZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bWFwLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1hcCkgewotICAgICAgICBp
ZiAoaXRlcmF0b3IudmFsdWUtPm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZElEKQor
ICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUtPm9yaWdpblRocmVhZCgpID09IGN1cnJlbnRUaHJl
YWQpCiAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChpdGVyYXRvci5rZXkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBjNzI0NTMxYjJlMWU1OTYyNDVj
NTY5M2I1NjU1NWE5ZjY4ZGMzNmE1Li42MGMwOGQ2ZDM3MTY2NjY2MTU2YzMyZTFmNzIwODRlMThm
YjBhMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNTEsMTIgKzUxLDEyIEBA
IGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhbnNhY3Rp
b25PcGVyYXRpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0g
Y3VycmVudFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLmdldCgpID09
IFRocmVhZDo6Y3VycmVudCgpKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZvcm0oKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAg
ICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsK
ICAgICAgICAgQVNTRVJUKG1fcGVyZm9ybUZ1bmN0aW9uKTsKICAgICAgICAgbV9wZXJmb3JtRnVu
Y3Rpb24oKTsKICAgICAgICAgbV9wZXJmb3JtRnVuY3Rpb24gPSB7IH07CkBAIC02NCw3ICs2NCw3
IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbXBs
ZXRlT25UaGlzVGhyZWFkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewotICAgICAg
ICBBU1NFUlQobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAgICBB
U1NFUlQobV9vcmlnaW5UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAg
ICBtX3RyYW5zYWN0aW9uLT5vcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihkYXRhLCAqdGhpcyk7
CiAgICAgfQogCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIGlmIChtX29yaWdp
blRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSkKKyAgICAgICAgaWYgKG1fb3JpZ2luVGhyZWFk
LmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKQogICAgICAgICAgICAgdHJhbnNpdGlvblRvQ29t
cGxldGVPblRoaXNUaHJlYWQoZGF0YSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV90
cmFuc2FjdGlvbi0+cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoKnRoaXMsICZUcmFuc2Fj
dGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQsIGRhdGEpOwpA
QCAtODMsNyArODMsNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gewogCiAgICAgdm9pZCBkb0Nv
bXBsZXRlKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9v
cmlnaW5UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgICAgIC8vIER1
ZSB0byByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiB0aGUgc2VydmVyIHNlbmRpbmcgYW4gIm9wZXJh
dGlvbiBjb21wbGV0ZSIgbWVzc2FnZSBhbmQgdGhlIGNsaWVudAogICAgICAgICAvLyBmb3JjZWZ1
bGx5IGFib3J0aW5nIGFuIG9wZXJhdGlvbiwgaXQncyB1bmF2b2lkYWJsZSB0aGF0IHRoaXMgbWV0
aG9kIG1pZ2h0IGJlIGNhbGxlZCB0d2ljZS4KQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBUcmFu
c2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gewogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBUaHJlYWRJZGVudGlm
aWVyIG9yaWdpblRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWRJRDsgfQor
ICAgIFRocmVhZCYgb3JpZ2luVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWQu
Z2V0KCk7IH0KIAogICAgIElEQlJlcXVlc3QqIGlkYlJlcXVlc3QoKSB7IHJldHVybiBtX2lkYlJl
cXVlc3QuZ2V0KCk7IH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3Bl
cmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiB7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCkgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbi5nZXQoKTsgfQogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIGluZGV4UmVjb3Jk
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhSZWNvcmRUeXBlOyB9CiAKLSAgICBUaHJlYWRJ
ZGVudGlmaWVyIG1fb3JpZ2luVGhyZWFkSUQgeyBjdXJyZW50VGhyZWFkKCkgfTsKKyAgICBSZWY8
VGhyZWFkPiBtX29yaWdpblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAgICAgUmVmUHRy
PElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKICAgICBib29sIG1fbmV4dFJlcXVlc3RDYW5Hb1Rv
U2VydmVyIHsgdHJ1ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBkOTUwNDdjOTAzMDUxYzBiYzNkNWU2MzhiMjdiNDU4
NTQyNGIwNTMyLi5hMDM4MWExYmQ0NDRmMDBjOGUxODg1MmE2NTllNWUzY2MxNDE1NGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBA
IC0xMDAsOSArMTAwLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0vLyBGSVhNRTogY2hlY2sgdGhlIHByb3BlciB3YXkg
dG8gcmVmZXJlbmNlIGFuIHVuZGVmaW5lZCB0aHJlYWQgSUQKLWNvbnN0IGludCBVbmRlZmluZWRU
aHJlYWRJZGVudGlmaWVyID0gMHhmZmZmZmZmZjsKLQogY29uc3QgdW5zaWduZWQgTWF4UGVyaW9k
aWNXYXZlTGVuZ3RoID0gNDA5NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM2LDcgKzEz
Myw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6
Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCi0gICAgLCBtX2dyYXBoT3du
ZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKKyAgICAsIG1fZ3JhcGhPd25lclRo
cmVhZChudWxscHRyKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTIsNyArMTQ5
LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0
cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgq
dGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQotICAgICwgbV9ncmFwaE93bmVyVGhyZWFkKFVuZGVmaW5lZFRocmVhZElk
ZW50aWZpZXIpCisgICAgLCBtX2dyYXBoT3duZXJUaHJlYWQobnVsbHB0cikKIHsKICAgICBjb25z
dHJ1Y3RDb21tb24oKTsKIApAQCAtNjk2LDIzICs2OTMsMjMgQEAgdm9pZCBBdWRpb0NvbnRleHQ6
OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAgIC8vIERvbid0IGFsbG93IHJlZ3VsYXIg
bG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBUaHJlYWRJZGVudGlmaWVyIHRoaXNUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7
CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAKLSAgICBpZiAo
dGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICBpZiAoJnRoaXNUaHJlYWQg
PT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUg
bG9jay4KICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KICAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRleC5s
b2NrKCk7Ci0gICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IHRoaXNUaHJlYWQ7CisgICAgICAg
IG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOwogICAgICAgICBtdXN0UmVsZWFzZUxv
Y2sgPSB0cnVlOwogICAgIH0KIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYg
bXVzdFJlbGVhc2VMb2NrKQogewotICAgIFRocmVhZElkZW50aWZpZXIgdGhpc1RocmVhZCA9IGN1
cnJlbnRUaHJlYWQoKTsKLSAgICBib29sIGlzQXVkaW9UaHJlYWQgPSB0aGlzVGhyZWFkID09IGF1
ZGlvVGhyZWFkKCk7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9UaHJlYWQoKTsK
IAogICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9jayBvbiBtYWluIHRo
cmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgogICAgIEFTU0VSVChpc0F1ZGlvVGhy
ZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKQEAgLTcyNSw3ICs3MjIsNyBAQCBib29s
IEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCiAgICAgCiAgICAg
Ym9vbCBoYXNMb2NrOwogICAgIAotICAgIGlmICh0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRo
cmVhZCkgeworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKICAg
ICAgICAgLy8gVGhyZWFkIGFscmVhZHkgaGFzIHRoZSBsb2NrLgogICAgICAgICBoYXNMb2NrID0g
dHJ1ZTsKICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CkBAIC03MzQsNyArNzMxLDcg
QEAgYm9vbCBBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAg
ICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoaGFzTG9jaykKLSAgICAgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IHRo
aXNUaHJlYWQ7CisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVhZDsK
IAogICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOwogICAgIH0KQEAgLTc0NCwyMCAr
NzQxLDIwIEBAIGJvb2wgQXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykKIAogdm9pZCBBdWRpb0NvbnRleHQ6OnVubG9jaygpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQpOworICAgIEFTU0VSVCgmVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV9ncmFwaE93bmVyVGhyZWFkKTsKIAotICAgIG1fZ3JhcGhPd25lclRocmVhZCA9
IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXI7CisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVs
bHB0cjsKICAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOwogfQogCiBib29sIEF1ZGlv
Q29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2F1ZGlvVGhyZWFkOworICAgIHJldHVybiAmVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9hdWRpb1RocmVhZDsKIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OmlzR3JhcGhPd25lcigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQ7
CisgICAgcmV0dXJuICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQ7CiB9
CiAKIHZvaWQgQXVkaW9Db250ZXh0OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSog
bm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CmluZGV4IDQ3NGU2ODdhYmM4MDA5OGE3ZWZjMzk0ZDI1NDg3YzQ4ZGZlMGUzZTQuLmQ2M2Q0NDE2
MDgzYmM4YzRhY2RlMjU4M2FkMTVkMmM5MDkwZGYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTc4LDggKzE3OCw4IEBAIGNsYXNz
IEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBdWRpb0NvCiAgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2lu
ZzoKICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkSWRlbnRpZmll
ciB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9IHRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0
aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQotICAgIFRocmVhZElkZW50aWZpZXIgYXVk
aW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9CisgICAgdm9pZCBzZXRB
dWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAv
LyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIFRo
cmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFRocmVhZCo+KG1f
YXVkaW9UaHJlYWQpOyB9CiAgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3Q7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0
ZWQgYW5kIHRoZW4gc2h1dGRvd24uCkBAIC0zODEsOCArMzgxLDEwIEBAIGNsYXNzIEF1ZGlvQ29u
dGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxBdWRpb0NvCiAKICAgICAvLyBHcmFwaCBsb2NraW5nLgogICAgIExvY2sgbV9jb250ZXh0R3Jh
cGhNdXRleDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fYXVkaW9UaHJlYWQgeyAw
IH07Ci0gICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmllciBtX2dyYXBoT3duZXJUaHJlYWQ7IC8v
IGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBp
dCwgb3RoZXJ3aXNlID09IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIKKyAgICAvLyBGSVhNRTog
VXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICB2b2xhdGlsZSBUaHJlYWQqIG1fYXVk
aW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgdm9sYXRpbGUgVGhyZWFkKiBtX2dyYXBoT3duZXJU
aHJlYWQ7IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hp
Y2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IG51bGxwdHIuCiAKICAgICBBc3luY0F1ZGlvRGVjb2Rl
ciBtX2F1ZGlvRGVjb2RlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA1MTEyODE4NTE4NGYzY2Ni
NWE1ZDBmOGU5MDAzNzYxZTlhMzUwYzdjLi42Mjk3NjZjM2I4ZTc1Y2FlMDExMWEzN2EzM2M4ZmZi
ZTI4ZjFiOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpyZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRpb25C
dXMsIHNpemVfdCBudQogICAgIC8vIFRoaXMgd2lsbCB0YWtlIGNhcmUgb2YgYWxsIEF1ZGlvTm9k
ZXMgYmVjYXVzZSB0aGV5IGFsbCBwcm9jZXNzIHdpdGhpbiB0aGlzIHNjb3BlLgogICAgIERlbm9y
bWFsRGlzYWJsZXIgZGVub3JtYWxEaXNhYmxlcjsKICAgICAKLSAgICBjb250ZXh0KCkuc2V0QXVk
aW9UaHJlYWQoY3VycmVudFRocmVhZCgpKTsKKyAgICBjb250ZXh0KCkuc2V0QXVkaW9UaHJlYWQo
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIAogICAgIGlmICghY29udGV4dCgpLmlzSW5pdGlhbGl6
ZWQoKSkgewogICAgICAgICBkZXN0aW5hdGlvbkJ1cy0+emVybygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCA3ODNmOTIxZjEyN2E1
YTM0ZWNlYjU4YWM2ZDVhYThkZjMzNmIyMWRhLi40MjA4ZWFlMWFmNjRkNmQyNWM2YzRmNjI5Yjdk
ZGUzODg2ZTBjYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkK
IAogdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IGRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpKTsKIAogICAg
IHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRl
eCk7CkBAIC03NjgsNyArNzY4LDcgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbigpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250
ZXh0VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKSk7Ci0gICAgaWYg
KGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZElEKCkpCisgICAg
aWYgKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpKQog
ICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9k
YXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKaW5kZXggYTRlOTlhZDBiZGZmOTA2YjA2YjNkN2ZiOGM0
N2QzMWNjOTRhODQyNS4uY2JhZTEzNzE1M2Q4ZWFmYWI3NTljMGEwNzQ1YzRkMzE0ZjljMDgzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURl
dGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
RGV0YWlscy5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAgICAg
ICAgICwgbV9jcmVhdGlvblRpbWUoMCkKICAgICAgICAgLCBtX21vZGlmaWNhdGlvblRpbWUoMCkK
ICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV90aHJlYWRJRChUaHJlYWQ6OmN1cnJlbnRJRCgp
KQorICAgICAgICAsIG1fdGhyZWFkKCZUaHJlYWQ6OmN1cnJlbnQoKSkKICNlbmRpZgogICAgIHsK
ICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAgICAgICAg
ICwgbV9jcmVhdGlvblRpbWUoY3JlYXRpb25UaW1lKQogICAgICAgICAsIG1fbW9kaWZpY2F0aW9u
VGltZShtb2RpZmljYXRpb25UaW1lKQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3RocmVh
ZElEKFRocmVhZDo6Y3VycmVudElEKCkpCisgICAgICAgICwgbV90aHJlYWQoJlRocmVhZDo6Y3Vy
cmVudCgpKQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRGF0
YWJhc2VEZXRhaWxzIHsKICAgICBkb3VibGUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jcmVhdGlvblRpbWU7IH0KICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQogI2lmbmRlZiBOREVCVUcKLSAgICBUaHJlYWRJ
ZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRJRDsgfQorICAgIFRo
cmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gKm1fdGhyZWFkOyB9CiAjZW5kaWYKIAogcHJp
dmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICBkb3Vi
bGUgbV9jcmVhdGlvblRpbWU7CiAgICAgZG91YmxlIG1fbW9kaWZpY2F0aW9uVGltZTsKICNpZm5k
ZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFJlZlB0cjxU
aHJlYWQ+IG1fdGhyZWFkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNDhlMGM0NzY3
OGM4ZjI2NTU0OGQ5NzUxMWE1OTkwNzE5NmFhOTkyNy4uN2YxYzgxZTE5MzQyMTFkMTBhZjI0NDRm
NjU0NTJlMTRkMjZjMjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIERhdGFi
YXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0
IFN0cmluZyYgbmFtZSwgU2VjCiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrIHsg
bV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWRE
YXRhYmFzZSA6IG1fcHJvcG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3Nl
ZERhdGFiYXNlLT5kZXRhaWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+
b3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocHJvcG9z
ZWREYXRhYmFzZS0+ZGV0YWlscygpLnRocmVhZElEKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSB8
fCBpc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Bvc2VkRGF0YWJh
c2UtPmRldGFpbHMoKS50aHJlYWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSB8fCBpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAxMTUyNGNkY2QyYWIz
NDJmYjA5ZmU2MTlhYjQ2ZjU3OTIzY2U2OWVmLi5lNGY1MTZlNzIzYTcxYWViOGY3OGYwZGIzMzRi
MTJmZmUxNTNiZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRGF0YWJh
c2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKICAgICAvLyBDbGVhbiB1cCB0aGUgbGlzdCBvZiBh
bGwgcGVuZGluZyB0cmFuc2FjdGlvbnMgb24gdGhpcyBkYXRhYmFzZSB0aHJlYWQKICAgICBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3ItPnNodXRkb3duKCk7CiAKLSAgICBMT0coU3RvcmFnZUFQSSwg
IkFib3V0IHRvIGRldGFjaCB0aHJlYWQgJWkgYW5kIGNsZWFyIHRoZSByZWYgdG8gRGF0YWJhc2VU
aHJlYWQgJXAsIHdoaWNoIGN1cnJlbnRseSBoYXMgJWkgcmVmKHMpIiwgbV90aHJlYWQtPmlkKCks
IHRoaXMsIHJlZkNvdW50KCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAiQWJvdXQgdG8gZGV0YWNo
IHRocmVhZCAlcCBhbmQgY2xlYXIgdGhlIHJlZiB0byBEYXRhYmFzZVRocmVhZCAlcCwgd2hpY2gg
Y3VycmVudGx5IGhhcyAlaSByZWYocykiLCBtX3RocmVhZC5nZXQoKSwgdGhpcywgcmVmQ291bnQo
KSk7CiAKICAgICAvLyBDbG9zZSB0aGUgZGF0YWJhc2VzIHRoYXQgd2UgcmFuIHRyYW5zYWN0aW9u
cyBvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgYW55IHRyYW5zYWN0aW9ucyBhcmUgc3RpbGwgb3Bl
biwgdGhleSBhcmUgcm9sbGVkIGJhY2sgYW5kIHdlIGRvbid0IGxlYXZlIHRoZSBkYXRhYmFzZSBp
biBhbgogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQgc3RhdGUuCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlJiBk
YXRhYmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7
CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBB
U1NFUlQoJlRocmVhZDo6Y3VycmVudCgpID09IG1fdGhyZWFkKTsKICAgICBBU1NFUlQoIW1fb3Bl
bkRhdGFiYXNlU2V0LmNvbnRhaW5zKCZkYXRhYmFzZSkpOwogICAgIG1fb3BlbkRhdGFiYXNlU2V0
LmFkZCgmZGF0YWJhc2UpOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRGF0YWJhc2VUaHJl
YWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBMb2Nr
SG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CiAKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBBU1NFUlQoJlRocmVhZDo6Y3VycmVu
dCgpID09IG1fdGhyZWFkKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29wZW5E
YXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKICAgICBtX29wZW5EYXRhYmFzZVNldC5y
ZW1vdmUoJmRhdGFiYXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCAzNDAwOWQxYjIyYzQ0YzJlMDNlZWNiYjdm
NDRlNGM3YzhkN2RhZDU4Li5hOGM1NzBiNmYzYWM0YjNhN2RkNDFjZjFiMTI3NzJiZWJkOGM0N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIERhdGFiYXNlVGhyZWFkIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNlVGhyZWFkPiB7CiAKICAgICB2b2lkIHJlY29y
ZERhdGFiYXNlT3BlbihEYXRhYmFzZSYpOwogICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9zZWQo
RGF0YWJhc2UmKTsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGdldFRocmVhZElEKCkgeyByZXR1cm4g
bV90aHJlYWQgPyBtX3RocmVhZC0+aWQoKSA6IDA7IH0KKyAgICBUaHJlYWQqIGdldFRocmVhZCgp
IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKICAgICBTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTcxZTBkYjc4MWFjZTlmYzVlNzU0N2Jl
MTNiN2ZlNGIzNzY3MGI5Yi4uMTg3N2YzNGE4YzNiNjFjNjJkOGNjYmU1MjFhNDdmNWIwYzRmNzUz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpj
aGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVy
LmNsZWFyKCk7CiAKICAgICAvLyBUaGUgbmV4dCBzdGVwcyBzaG91bGQgYmUgZXhlY3V0ZWQgb25s
eSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgotICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0g
bV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgpKQorICAgIGlmICgmVGhy
ZWFkOjpjdXJyZW50KCkgIT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0
aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5k
ZXggMmVhOTNkZGYyYjU0NzU4MDY1ZjZkNjExM2EwZWRlYzFjMjNlZTVlYy4uZDRjMTE0YTViOWQ5
NDQ0MzMxYTljNmE4ZjI3NzExZjVmNTk3MTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApA
QCAtMzUzLDcgKzM1Myw3IEBAIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6flNRTFRyYW5zYWN0aW9u
QmFja2VuZCgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFi
YXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2Zyb250ZW5kLmRhdGFiYXNlKCkuZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSk7
CiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKIApAQCAtNDY1
LDcgKzQ2NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRlTmV4dFN0YXRl
QW5kQ2xlYW51cElmTmVlZGVkKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om5vdGlm
eURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2Zyb250ZW5kLmRhdGFi
YXNlKCkuZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSk7CiAKICAgICAvLyBJZiB0aGUgdHJh
bnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVyZSwgc2lu
Y2UgdGhpcwogICAgIC8vIGlzIG91ciBsYXN0IG9wcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGluZyBy
ZWxhdGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCA0OWUxNTM1MzZhNmEzNTRhNmMzNmI1MTQ5MTA4
OTczZGEzOWNiZGRjLi5mMzQzY2M1OTA0ZmMyODdhMjVlMzJkZjg5NjAwM2ExNzNjNmU2YzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTUyLDcg
KzUyLDcgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEgewogICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tE
YXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIDogbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3RocmVhZChj
dXJyZW50VGhyZWFkKCkpCisgICAgICAgICwgbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkpCiAj
ZW5kaWYKICAgICB7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBKU0NhbGxiYWNrRGF0
YSB7CiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFTU0VS
VChtX3RocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKICAgICB9CiAg
ICAgCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tEYXRhIHsKIHByaXZhdGU6CiAg
ICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKICNpZm5kZWYg
TkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZDsKKyAgICBSZWY8VGhyZWFkPiBt
X3RocmVhZDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggMGY3NGU2YzE0MDFkOGJhZGQ0YTQ1NmIxMWNjOWNmOTRi
N2E4MTQ3Ny4uNjM1Nzc2OWQzMmQzMzc4OGY5YWFkOGJhZTUyM2NjNTg3NGQzOTQ2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0xNDYs
NyArMTQ2LDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogewogICAgIC8vIEluIGEgV29ya2VyLCB0aGUgZXhlY3V0aW9uIHNo
b3VsZCBhbHdheXMgaGFwcGVuIG9uIGEgd29ya2VyIHRocmVhZC4KLSAgICBBU1NFUlQod29ya2Vy
R2xvYmFsU2NvcGUudGhyZWFkKCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOworICAg
IEFTU0VSVCh3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxl
ciA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMjE5OWQ0YTFlMTZhYTNiYmU2NGVjNmFj
MTQ5ODljY2VlNDNhYjY0MS4uZjVkYTJiNjg5OTkzNzllZTkxZTE1NDkzZWZiODE0YjU3ZDZiYTFl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hN
ZXNzYWdlUG9ydEV2ZW50cygpCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRN
ZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB7CiAgICAgQVNTRVJUKChpczxE
b2N1bWVudD4oKnRoaXMpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CisgICAgICAgIHx8IChp
czxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZCgpKSk7CiAKICAg
ICBtX21lc3NhZ2VQb3J0cy5hZGQoJm1lc3NhZ2VQb3J0KTsKIH0KQEAgLTE3Miw3ICsxNzIsNyBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdlUG9ydChNZXNzYWdl
UG9ydCYgbWVzc2FnZVBvcnQpCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3ll
ZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKIHsKICAgICBBU1NFUlQoKGlz
PERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKKyAgICAgICAgfHwg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgJlRocmVhZDo6Y3VycmVudCgpID09IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkpKTsKIAog
ICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oCmluZGV4IDY0NmRmZWZjYzBiNmRhNDU3OTQ3
YWFkMmQ4ZTM1YThhZjI4NzAxNDUuLjE2YWVhNjAxZDE0ZTI2Mjg3NDViNjA0MDRiZjc5ZmRiYjZk
Mzk5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92ZXJs
YXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5LmgKQEAg
LTc4LDcgKzc4LDYgQEAgY2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXkgZmluYWwgOiBwdWJsaWMg
UGFnZU92ZXJsYXk6OkNsaWVudCB7CiAgICAgSW50UG9pbnQgbV9kcmFnUG9pbnQ7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQgeyAwIH07CiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
Y29udGFpbmVyTGF5ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IGQyMDRjNzYyMTBiMzM0MDRkZjQ0YzRkYTNm
Y2E3YWNjZDc3YjQyYTIuLjYxZmFjM2FlOGM1MmQzOTFkM2Q5MGI4ZTE3MmEwNGYzOTM4Y2IzY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
LmNwcApAQCAtNDAsOCArNDAsNyBAQCBTY3JvbGxpbmdUaHJlYWQ6OlNjcm9sbGluZ1RocmVhZCgp
CiAKIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKQogewotICAgIFJlZlB0
cjxUaHJlYWQ+IHRocmVhZCA9IFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCkubV90aHJlYWQ7
Ci0gICAgcmV0dXJuIHRocmVhZCAmJiB0aHJlYWQtPmlkKCkgPT0gY3VycmVudFRocmVhZCgpOwor
ICAgIHJldHVybiBTY3JvbGxpbmdUaHJlYWQ6OnNpbmdsZXRvbigpLm1fdGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdXBwbGVtZW50YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVu
dGFibGUuaAppbmRleCAzM2Y2OWEyZDFlZDVlYjgwMGNiZDk1MDA0ZjE4NjJhZTgxOGYxMzI2Li43
OTg0YzVkNjY0MTU2N2FlZTNjMmI2YzgxNDBhNjRiYWEyMjI3NGJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgKQEAgLTk4LDMzICs5OCwzMyBAQCBjbGFzcyBTdXBw
bGVtZW50YWJsZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBwcm92aWRlU3VwcGxlbWVudChjb25zdCBj
aGFyKiBrZXksIHN0ZDo6dW5pcXVlX3B0cjxTdXBwbGVtZW50PFQ+PiBzdXBwbGVtZW50KQogICAg
IHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3Ro
cmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJl
YWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgQVNTRVJUKCFtX3N1cHBsZW1lbnRzLmdldChr
ZXkpKTsKICAgICAgICAgbV9zdXBwbGVtZW50cy5zZXQoa2V5LCBXVEZNb3ZlKHN1cHBsZW1lbnQp
KTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZVN1cHBsZW1lbnQoY29uc3QgY2hhcioga2V5KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZCht
X3RocmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JU
aHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgbV9zdXBwbGVtZW50cy5yZW1vdmUoa2V5
KTsKICAgICB9CiAKICAgICBTdXBwbGVtZW50PFQ+KiByZXF1aXJlU3VwcGxlbWVudChjb25zdCBj
aGFyKiBrZXkpCiAgICAgewotICAgICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRh
Rm9yVGhyZWFkKG1fdGhyZWFkSWQpKTsKKyAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExv
Y2FsRGF0YUZvclRocmVhZChtX3RocmVhZC5nZXQoKSkpOwogICAgICAgICByZXR1cm4gbV9zdXBw
bGVtZW50cy5nZXQoa2V5KTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBwcm90ZWN0
ZWQ6Ci0gICAgU3VwcGxlbWVudGFibGUoKSA6IG1fdGhyZWFkSWQoY3VycmVudFRocmVhZCgpKSB7
IH0KKyAgICBTdXBwbGVtZW50YWJsZSgpIDogbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkpIHsg
fQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBz
dGQ6OnVuaXF1ZV9wdHI8U3VwcGxlbWVudDxUPj4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBTdXBw
bGVtZW50TWFwOwogICAgIFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKICNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElkOworICAgIFJlZjxUaHJl
YWQ+IG1fdGhyZWFkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKaW5k
ZXggOWNjYjQwMjFmNTAzMzc4YTg2MjI0ZTRhNmQ3NTFkYTQ4YTkzMjY3Ny4uODdkNGU2OTBmNjE2
NDBiM2M1ODI4MWFiYzI5YzY0MTllMDFiNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNw
cApAQCAtMTg2LDkgKzE4Niw2IEBAIGlubGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rp
b246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiBhLCBjb25zdCBUaW1lCiAvLyAtLS0tLS0t
LS0tLS0tLS0tCiAKIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSNpZm5kZWYgTkRFQlVHCi0gICAg
OiBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjAzLDcgKzIw
MCw3IEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAKIHZvaWQgVGltZXJCYXNlOjpzdGFydChT
ZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpCiB7Ci0gICAg
QVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAg
IEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkp
KTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZhbDsKICAgICBzZXROZXh0
RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBuZXh0RmlyZUludGVydmFsKTsKQEAgLTIx
MSw3ICsyMDgsNyBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUludGVy
dmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogCiB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiB7
Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkp
OworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQu
Z2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwX3M7CiAgICAgc2V0TmV4dEZpcmVU
aW1lKE1vbm90b25pY1RpbWUgeyB9KTsKQEAgLTM2Miw3ICszNTksNyBAQCB2b2lkIFRpbWVyQmFz
ZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSkKIAogdm9pZCBUaW1l
ckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIG5ld1RpbWUpCiB7Ci0gICAgQVNT
RVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAgIEFT
U0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsK
ICAgICBBU1NFUlQoIW1fd2FzRGVsZXRlZCk7CiAKICAgICBpZiAobV91bmFsaWduZWROZXh0Rmly
ZVRpbWUgIT0gbmV3VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IGUzZmQ3Yjk2Y2Q5
M2JmOWZhMjcwNmRiYzRiNTgwN2I1NzBlZDU2YzUuLjk1NTg3YjI2ZTJmZDBjNzEwYWI1NjQzNzQ3
MjZjYTg3NDk4NTI3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMTAzLDcgKzEwMyw3
IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgVmVjdG9yPFRpbWVyQmFzZSo+KiBtX2NhY2hlZFRo
cmVhZEdsb2JhbFRpbWVySGVhcCB7IG51bGxwdHIgfTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBU
aHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOworICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhy
ZWFkOjpjdXJyZW50KCkgfTsKICAgICBib29sIG1fd2FzRGVsZXRlZCB7IGZhbHNlIH07CiAjZW5k
aWYKIApAQCAtMTQwLDkgKzE0MCw5IEBAIGlubGluZSBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUo
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlzIGluIHRlcm1zIG9mIFVTRShXRUJf
VEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPUykuCiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICBBU1NFUlQobV90aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV90aHJl
YWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vsc2UKLSAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9tYWluX25wKCkgfHwgbV90aHJlYWQgPT0gY3VycmVu
dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9t
YWluX25wKCkgfHwgbV90aHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0Rmly
ZVRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDFmMmI1ZjVkMGJhODUxYjIx
Mzk1NGY4NDg0N2Q5M2E0MmIwYTU5ZjIuLmNlZDAwNjI0ZDZmYTk3ZTlkOGMxMDA5OTg0OGEyNmQ1
NDU3MGY2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEyMjQsOCArMTIyNCw4IEBA
IHN0YXRpYyBib29sIHNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gVGhpcyBjYWNoZSBpcyBub3Qg
dGhyZWFkIHNhZmUgc28gdGhlIGZvbGxvd2luZyBhc3NlcnRpb24gaXMgdGhlcmUgdG8KICAgICAv
LyBtYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY2FsbGVkIGZyb20gdGhlIHNhbWUg
dGhyZWFkLgotICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGluaXRUaHJlYWRJZCA9IGN1cnJl
bnRUaHJlYWQoKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGluaXRUaHJlYWRJZCk7
CisgICAgc3RhdGljIFRocmVhZCogaW5pdFRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAg
IEFTU0VSVCgmVGhyZWFkOjpjdXJyZW50KCkgPT0gaW5pdFRocmVhZCk7CiAjZW5kaWYKIAogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IGtub3duRmFtaWxp
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAK
aW5kZXggMWNjYTBjY2RhODIxYWE1MmVkNWUwNTQ1MWYxZjFkNWYxY2FjODdjYi4uYjIzZGFjMjli
NGQ3NDlmY2ZjY2IyMzM3NjA5NWZlZjIwYjVlODBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtNTgsOSArNTgsMTAgQEAgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHkoKQogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29t
cG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY29tcG9zaXRvciwgVGV4dHVyZU1hcHBlckxheWVy
KiB0YXJnZXRMYXllcikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgbV9jb21wb3NpdG9yVGhyZWFk
SUQgPSBtX2NvbXBvc2l0b3JUaHJlYWRJRCA/IG1fY29tcG9zaXRvclRocmVhZElEIDogV1RGOjpj
dXJyZW50VGhyZWFkKCk7CisgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWQpCisgICAgICAgIG1f
Y29tcG9zaXRvclRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgotICAgIEFTU0VS
VChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNT
RVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VS
VChjb21wb3NpdG9yKTsKICAgICBBU1NFUlQodGFyZ2V0TGF5ZXIpOwogICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CkBAIC04MCw3ICs4MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNv
CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0ZSgpCiB7
Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgp
KTsKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAgICAgRnVuY3Rpb248dm9pZCgpPiB1cGRhdGVGdW5jdGlvbjsKICAgICB7CiAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CkBAIC0xMjAsNyArMTIxLDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVmZmVy
KGNvbnN0IEludFNpemUmIHNpemUsIEdMaW50IGludGVybmFsRm9ybWF0KQogewogICAgIEFTU0VS
VChtX2xvY2suaXNIZWxkKCkpOwotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBX
VEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4gYXZhaWxhYmxlQnVmZmVyOwogCiAgICAgYXV0byBidWZmZXJzID0g
V1RGTW92ZShtX3VzZWRCdWZmZXJzKTsKQEAgLTE0NCw3ICsxNDUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphcHBlbmRU
b1VudXNlZEJ1ZmZlcnMoc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0gICAgQVNT
RVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKKyAgICBB
U1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgbV91
c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICBzY2hlZHVsZVJlbGVhc2VV
bnVzZWRCdWZmZXJzKCk7CiB9CkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQoKQogCiB2
b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQogewotICAg
IEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgaWYgKCFtX3RhcmdldExheWVyIHx8ICFt
X3BlbmRpbmdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IGQwMDRjYzgwZmU4NjVjYjczYzJlMWQ0Yzhj
YmZjZjI2Y2NlMjliODYuLmFjYzMwNjBkMGQyYWM4ODUzNmU0MzFiYjYwYjA3NTAwNzEwMmUzNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaApAQCAt
OTEsNyArOTEsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5IDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRleHR1cmVNYXBwZQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4gbV9yZWxl
YXNlVW51c2VkQnVmZmVyc1RpbWVyOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElkZW50
aWZpZXIgbV9jb21wb3NpdG9yVGhyZWFkSUQgeyAwIH07CisgICAgUmVmUHRyPFRocmVhZD4gbV9j
b21wb3NpdG9yVGhyZWFkIHsgbnVsbHB0ciB9OwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBvc2l0
b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggODBlNDU0MDg0YzgwZTA2YTIxOGJmN2Yw
YjBlYWRjMjE2OTkxMzMzYy4uOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQwN2E5OGI1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbQpAQCAtNjU2LDcgKzY1Niw2IEBAIHZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICphcmcpCiAg
ICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIFdlYlRocmVhZCBhbmQgdGhlIG1haW4gdGhy
ZWFkIHNoYXJlIHRoZSBzYW1lIFRocmVhZEdsb2JhbERhdGEgb2JqZWN0cy4KICAgICBXZWJDb3Jl
Ojp0aHJlYWRHbG9iYWxEYXRhKCkuc2V0V2ViQ29yZVRocmVhZERhdGEoKTsKLSAgICBpbml0aWFs
aXplV2ViVGhyZWFkSWRlbnRpZmllcigpOwogCiAjaWYgSEFWRShQVEhSRUFEX1NFVE5BTUVfTlAp
CiAgICAgcHRocmVhZF9zZXRuYW1lX25wKCJXZWJUaHJlYWQiKTsKQEAgLTc2Niw3ICs3NjUsNyBA
QCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAgICAgICAgIHN0YXJ0dXBDb25kaXRpb24u
d2FpdChzdGFydHVwTG9jayk7CiAgICAgfQogCi0gICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlU
aHJlYWRJZGVudGlmaWVyKCk7CisgICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQoKTsK
IH0KIAogc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2sgKHB0aHJlYWRfY29uZF90ICpj
b25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9jaywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCA5ODdiMzQ2YWViOTE3MjM4NDhmMDM2NzRhODFhOTE3MmNhNzgzMzYxLi40MDZjZWIxYTkyNGY1
YjZiOTI4YzU0NTIzMTE4Zjg0ZTBiNTk1ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIFNRTGl0
ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgZm9yV2ViU1FMRGF0
YWJhc2UpCiAgICAgfQogCiAgICAgaWYgKGlzT3BlbigpKQotICAgICAgICBtX29wZW5pbmdUaHJl
YWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgICAgIG1fb3BlbmluZ1RocmVhZCA9ICZUaHJlYWQ6
OmN1cnJlbnQoKTsKICAgICBlbHNlCiAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9ICJzcWxp
dGVfb3BlbiByZXR1cm5lZCBudWxsIjsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU1FMaXRl
RGF0YWJhc2U6OmNsb3NlKCkKIHsKICAgICBpZiAobV9kYikgewogICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBiZWluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBKUyBHQy4gPHJk
YXI6Ly9wcm9ibGVtLzU3Mzk4MTg+Ci0gICAgICAgIC8vIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9vcGVuaW5nVGhyZWFkKTsKKyAgICAgICAgLy8gQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX29wZW5pbmdUaHJlYWQpOwogICAgICAgICBzcWxpdGUzKiBkYiA9IG1fZGI7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0
ZXgpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkKICAg
ICAgICAgc3FsaXRlM19jbG9zZShkYik7CiAgICAgfQogCi0gICAgbV9vcGVuaW5nVGhyZWFkID0g
MDsKKyAgICBtX29wZW5pbmdUaHJlYWQgPSBudWxscHRyOwogICAgIG1fb3BlbkVycm9yID0gU1FM
SVRFX0VSUk9SOwogICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9IENTdHJpbmcoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggNzE3MmU0ZTEz
MzY2M2FjZTBmODljNTQ0ZjFmMGYxMDY2NGJiOTBjMC4uOWJlMWFkNDQ4YTA5MGJiMWM3MjZjNDAz
MDA5YTIzMzEyOWNiYTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBTUUxpdGVEYXRhYmFzZSB7CiAg
ICAgc3FsaXRlMyogc3FsaXRlM0hhbmRsZSgpIGNvbnN0CiAgICAgewogI2lmICFQTEFURk9STShJ
T1MpCi0gICAgICAgIEFTU0VSVChtX3NoYXJhYmxlIHx8IGN1cnJlbnRUaHJlYWQoKSA9PSBtX29w
ZW5pbmdUaHJlYWQgfHwgIW1fZGIpOworICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8fCAmVGhy
ZWFkOjpjdXJyZW50KCkgPT0gbV9vcGVuaW5nVGhyZWFkIHx8ICFtX2RiKTsKICNlbmRpZgogICAg
ICAgICByZXR1cm4gbV9kYjsKICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgU1FMaXRl
RGF0YWJhc2UgewogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplcjsK
IAogICAgIExvY2sgbV9sb2NraW5nTXV0ZXg7Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX29wZW5p
bmdUaHJlYWQgeyAwIH07CisgICAgUmVmUHRyPFRocmVhZD4gbV9vcGVuaW5nVGhyZWFkIHsgbnVs
bHB0ciB9OwogCiAgICAgTG9jayBtX2RhdGFiYXNlQ2xvc2luZ011dGV4OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg4NjFlYjgxZDU2ZWY5
OGE4MzMxZTI4NDRjZjIwMGE5OGY5OGYxNWEuLmY2NzRkNGEyOWExZjI5YTI0ZWExZTI3ZjVmMmRm
MmU4Yzg1NTQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjCiAKIFdvcmtl
ckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gdGhyZWFkKCkudGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1
cnJlbnQoKSA9PSB0aHJlYWQoKS50aHJlYWQoKSk7CiAKICAgICBtX3BlcmZvcm1hbmNlID0gbnVs
bHB0cjsKICAgICBtX2NyeXB0byA9IG51bGxwdHI7CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb24KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNDb250ZXh0VGhy
ZWFkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IHRocmVhZCgpLnRo
cmVhZElEKCk7CisgICAgcmV0dXJuICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSB0aHJlYWQoKS50aHJl
YWQoKTsKIH0KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRl
bigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCmluZGV4IGI1ZGQzOGE1NjBhMjRhNWQyN2MyN2NiNTUwYWIxODY4MTczZjdkNzkuLmVk
ZDdlODMxMTM1ZTA0ZDU5ZTBhODc2ZDQ2MjhmMTNkMzI5MGQ1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXImIHdvcmtl
ck9iamVjdCkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAgQVNT
RVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWRJRCgpKSk7Cisg
ICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgJiYgJlRocmVhZDo6Y3VycmVudCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWQoKSkpOwogCiAgICAgLy8g
Tm9ib2R5IG91dHNpZGUgdGhpcyBjbGFzcyByZWYgY291bnRzIHRoaXMgb2JqZWN0LiBUaGUgb3Jp
Z2luYWwgcmVmCiAgICAgLy8gaXMgYmFsYW5jZWQgYnkgdGhlIGRlcmVmIGluIHdvcmtlckdsb2Jh
bFNjb3BlRGVzdHJveWVkSW50ZXJuYWwuCkBAIC02OSw3ICs2OSw3IEBAIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogewogICAgIEFTU0VSVCghbV93b3JrZXJP
YmplY3QpOwogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCku
dGhyZWFkSUQoKSkpOworICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpICYmICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFk
KCkpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wg
aXNPbmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25v
dG9uaWNUaW1lIHRpbWVPcmlnaW4sIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAKaW5kZXggMjM2MWJmNzQ1YWFiNTRmNTkxMzYwNzM5Mjc2OWI2MmFkYjNlMGJjZS4uNTZm
YWY3ZDU0ZWUyOWZjYjhhMzEyNWNmYmVlYjVhNWQ0ODAxMDc1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgTWVzc2FnZVF1ZXVl
V2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyR2xvYmFsU2NvcGUqIGNv
bnRleHQsIGNvbnMKIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5N
b2RlKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBNb2RlUHJlZGljYXRlJiBwcmVk
aWNhdGUsIFdhaXRNb2RlIHdhaXRNb2RlKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBB
U1NFUlQoY29udGV4dC0+dGhyZWFkKCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOwor
ICAgIEFTU0VSVChjb250ZXh0LT50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCiAgICAgSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFj
ayB0aW1lckFkZGVkVGFzayA9IFdURjo6Y3JlYXRlU2hhcmVkVGFzazxKU0M6OkpTUnVuTG9vcFRp
bWVyOjpUaW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CiAgICAgICAgIC8vIFdlIGRvbid0
IGFjdHVhbGx5IGRvIGFueXRoaW5nIGhlcmUsIHdlIGp1c3Qgd2FudCB0byBsb29wIGFyb3VuZCBy
dW5Jbk1vZGUKQEAgLTIyMSw3ICsyMjEsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtl
clJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29ucwogdm9p
ZCBXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVChjb250ZXh0LT50aHJlYWQo
KS50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQtPnRo
cmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1fbWVz
c2FnZVF1ZXVlLmtpbGxlZCgpKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA0OWU1YzRiYmJmNTJiZGNhODE1N2MxYzA3ZmIxOTZl
OGRlYmVjOTZiLi43YzQyZTI5M2RhMzQ2NGI1Yzk3ZGE1NDYxOTIwNDQ1NzQ1NzBmOGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3Mg
V29ya2VyVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlclRocmVhZD4g
ewogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGV2YWx1YXRlQ2FsbGJhY2spOwogICAgIHZvaWQgc3RvcChXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiB0ZXJtaW5hdGVkQ2FsbGJhY2spOwogCi0gICAgVGhyZWFkSWRlbnRpZmll
ciB0aHJlYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkID8gbV90aHJlYWQtPmlkKCkgOiAw
OyB9CisgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsg
fQogICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7IH0KICAg
ICBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBjb25zdCB7IHJldHVybiBt
X3dvcmtlckxvYWRlclByb3h5OyB9CiAgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVi
dWdnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94eTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCmluZGV4IDE1ZDBmZWNjNzNmM2Y1OTFkYmY5YzIwZjA3MWE1YWNjNGRhMTA2
MTQuLmIyNWZjZmE0ODAyNDIwMjVlYzYxNmE1NGMwYmJlNDA2YmUzMmJhNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LAogU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6flNlcnZpY2VXb3JrZXJDb250YWluZXIoKQogewogI2lmbmRlZiBO
REVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsK
ICNlbmRpZgogfQogCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJgog
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYihSZWY8U2VydmljZVdvcmtl
ckpvYj4mJiBqb2IpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhy
ZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0
KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQobV9zd0Nvbm5l
Y3Rpb24pOwpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c3RhcnRNZXNzYWdlcygpCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdp
dGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBFeGNlcHRpb24mIGV4Y2Vw
dGlvbikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0g
Y3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2Im
IGpvYiwgY29uc3QKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9G
aXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgp
ID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJh
dGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQoaWRlbnRpZmllcikpCkBAIC0zMjAsNyArMzIwLDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVG
b3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWcKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiBkYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQg
c2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0
aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgYXV0
byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewpAQCAtMzYwLDcgKzM2
MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0
cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvYiYg
am9iLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQogewogI2lmbmRlZiBOREVCVUcKLSAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAg
ICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewpAQCAtMzgx
LDcgKzM4MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRo
VW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQog
ewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50
VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6
Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3Jr
ZXJDb250YWluZXIgJXAgc3RhcnRpbmcgc2NyaXB0IGZldGNoIGZvciBqb2IgJXMiLCB0aGlzLCBq
b2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQwMiw3
ICs0MDIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hG
b3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBT
dHJpbmcmIHNjcmlwdCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25U
aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5n
ZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIExPRyhTZXJ2aWNlV29y
a2VyLCAiU2V2aWNlV29ya2VyQ29udGFpbmVyICVwIGZpbmlzaGVkIGZldGNoaW5nIHNjcmlwdCBm
b3Igam9iICVzIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb24KIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNl
V29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRp
b25UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBMT0co
U2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmYWlsZWQgZmV0Y2hpbmcg
c2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBj
b25zdAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JEaWRGaW5pc2goU2VydmljZVdv
cmtlckpvYiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdl
dCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgYXV0byB0YWtlbiA9IG1f
am9iTWFwLnRha2Uoam9iLmlkZW50aWZpZXIoKSk7CkBAIC00NzAsNyArNDcwLDcgQEAgU1dDbGll
bnRDb25uZWN0aW9uJiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjplbnN1cmVTV0NsaWVudENvbm5l
Y3Rpb24oKQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogI2lmbmRlZiBOREVCVUcK
LSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRp
ZgogCiAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuYWRkU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkluU2VydmVyKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtNDgwLDcgKzQ4
MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3Ry
YXRpb24pCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09
IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkgPT0g
VGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBtX3N3Q29ubmVjdGlvbi0+cmVtb3Zl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVy
KCkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVt
b3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzCiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmlyZUNvbnRyb2xsZXJDaGFuZ2VF
dmVudCgpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09
IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkgPT0g
VGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBpZiAobV9pc1N0b3BwZWQpCkBAIC01
MTMsNyArNTEzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKIERvY3Vt
ZW50T3JXb3JrZXJJZGVudGlmaWVyIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVu
dGlmaWVyKCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQg
PT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9
PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggMmQ5YTlmMDQ2YWJiNGFjZWYwMzYxNzk4
ZjYzZjE2MTg4ZDgyN2QwMC4uZWExMmU4YzU5NGRmYjQzM2MzNjQ4ZDM1Y2Y1ZjkxNTYxOWM5YTYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oCkBAIC0xMTksNyArMTE5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtl
ckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJs
aWMgQWMKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKj4gbV9yZWdpc3RyYXRpb25zOwogCiAjaWZuZGVmIE5E
RUJVRwotICAgIFRocmVhZElkZW50aWZpZXIgbV9jcmVhdGlvblRocmVhZCB7IGN1cnJlbnRUaHJl
YWQoKSB9OworICAgIFJlZjxUaHJlYWQ+IG1fY3JlYXRpb25UaHJlYWQgeyBUaHJlYWQ6OmN1cnJl
bnQoKSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggZjczZjkwNzJhMDNjM2MwNWUzMjYxNTQ3
YTg4OTFhZGE5NTcyNDA5OS4uNzk2NjBkZDIxOWIxMjc4ZDYwYjczZmIwNzdjZTk1YTFkYjQ0OTAz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iLmNwcApAQCAtNDcsMTIgKzQ3LDEyIEBAIFNlcnZpY2VXb3JrZXJKb2I6OlNlcnZpY2VX
b3JrZXJKb2IoU2VydmljZVdvcmtlckpvYkNsaWVudCYgY2xpZW50LCBSZWY8RGVmZXJyZWRQCiAK
IFNlcnZpY2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2VySm9iKCkKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29y
a2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkpOwogICAg
IEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwpAQCAtNjEs
NyArNjEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNlcHRpb24oY29u
c3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2
ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSwg
U2hvdWxkTm90aWZ5V2hlblJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsKICAgICBBU1NF
UlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJgogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJl
c29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQp
CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9jcmVhdGlvblRocmVhZC5nZXQoKSk7CiAg
ICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CkBAIC03
OSw3ICs3OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3Ry
YXRpb25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsCiAKIHZvaWQgU2VydmljZVdvcmtl
ckpvYjo6c3RhcnRTY3JpcHRGZXRjaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9j
cmVhdGlvblRocmVhZC5nZXQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBt
X2NsaWVudC0+c3RhcnRTY3JpcHRGZXRjaEZvckpvYigqdGhpcyk7CkBAIC04Nyw3ICs4Nyw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaCgpCiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRo
cmVhZCk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fY3JlYXRpb25UaHJlYWQu
Z2V0KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgLy8gRklYTUU6IFdvcmtl
clNjcmlwdExvYWRlciBpcyB0aGUgd3JvbmcgbG9hZGVyIGNsYXNzIHRvIHVzZSBoZXJlLCBidXQg
dGhlcmUncyBub3RoaW5nIGVsc2UgYmV0dGVyIHJpZ2h0IG5vdy4KQEAgLTk3LDcgKzk3LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmZXRjaFNjcmlwdFdpdGhDb250ZXh0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpCiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkpOwog
ICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogICAgIEFTU0VSVChtX3NjcmlwdExvYWRlcik7CiAK
QEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJKb2I6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsKICAgICBBU1NFUlQobV9zY3JpcHRMb2FkZXIpOwog
ICAgIAogICAgIGlmICghbV9zY3JpcHRMb2FkZXItPmZhaWxlZCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKaW5kZXggYzMwYTRmYjg0
ODk3Mzg5YzE1YjYyN2YxZGY5ZGVmZTI4OTE3OWU0Yy4uOWM0MjhlNzcyMDAzNDI5OTFhZjMxNzNh
MjllMDQwMTI5NWQ1MjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYi5oCkBAIC05MCw3ICs5MCw3IEBAIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJKb2IgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckpvYj4sIHB1
YmxpYyBXCiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX2xhc3RSZXNwb25zZTsKIAogI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fY3JlYXRpb25UaHJlYWQgeyBjdXJy
ZW50VGhyZWFkKCkgfTsKKyAgICBSZWY8VGhyZWFkPiBtX2NyZWF0aW9uVGhyZWFkIHsgVGhyZWFk
OjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGEzN2Q2MTUxNmE2
MjgwMGY1YTQzMWI4OTFjNzI3MzRmMDkwMzViY2MuLmFkYzc4NWVmNWZjNGY4ZjUzZGMyMjU5NWE1
ZmFjOWE5NzNlOTUxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTM0MCwxMyArMzQwLDEzIEBAIGNsYXNz
IFBlbmRpbmdDYWxsYmFja3MgewogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogc3RhdGljIGludCBnbG9iYWxEZXNjcmlwdG9yID0gMDsKLXN0YXRpYyBUaHJlYWRJZGVudGlm
aWVyIGxpYnhtbExvYWRlclRocmVhZCA9IDA7CitzdGF0aWMgVGhyZWFkKiBsaWJ4bWxMb2FkZXJU
aHJlYWQgeyBudWxscHRyIH07CiAKIHN0YXRpYyBpbnQgbWF0Y2hGdW5jKGNvbnN0IGNoYXIqKQog
ewogICAgIC8vIE9ubHkgbWF0Y2ggbG9hZHMgaW5pdGlhdGVkIGR1ZSB0byB1c2VzIG9mIGxpYnht
bDIgZnJvbSB3aXRoaW4gWE1MRG9jdW1lbnRQYXJzZXIgdG8gYXZvaWQKICAgICAvLyBpbnRlcmZl
cmluZyB3aXRoIGNsaWVudCBhcHBsaWNhdGlvbnMgdGhhdCBhbHNvIHVzZSBsaWJ4bWwyLiAgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNTMKLSAgICByZXR1cm4gWE1M
RG9jdW1lbnRQYXJzZXJTY29wZTo6Y3VycmVudENhY2hlZFJlc291cmNlTG9hZGVyICYmIGN1cnJl
bnRUaHJlYWQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJlYWQ7CisgICAgcmV0dXJuIFhNTERvY3VtZW50
UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlciAmJiAmVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkOwogfQogCiBjbGFzcyBPZmZzZXRCdWZmZXIgewpA
QCAtNDMyLDcgKzQzMiw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNv
bnN0IFVSTCYgdXJsKQogc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKIHsK
ICAgICBBU1NFUlQoWE1MRG9jdW1lbnRQYXJzZXJTY29wZTo6Y3VycmVudENhY2hlZFJlc291cmNl
TG9hZGVyKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGxpYnhtbExvYWRlclRocmVh
ZCk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJlYWQp
OwogCiAgICAgVVJMIHVybChVUkwoKSwgdXJpKTsKIApAQCAtNDk1LDE3ICs0OTUsMjAgQEAgc3Rh
dGljIHZvaWQgZXJyb3JGdW5jKHZvaWQqLCBjb25zdCBjaGFyKiwgLi4uKQogfQogI2VuZGlmCiAK
LXN0YXRpYyBib29sIGRpZEluaXQgPSBmYWxzZTsKLQotUmVmPFhNTFBhcnNlckNvbnRleHQ+IFhN
TFBhcnNlckNvbnRleHQ6OmNyZWF0ZVN0cmluZ1BhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhhbmRs
ZXJzLCB2b2lkKiB1c2VyRGF0YSkKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVYTUxQYXJzZXIoKQog
ewotICAgIGlmICghZGlkSW5pdCkgeworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIFsmXSB7CiAgICAgICAgIHhtbEluaXRQYXJzZXIoKTsK
ICAgICAgICAgeG1sUmVnaXN0ZXJJbnB1dENhbGxiYWNrcyhtYXRjaEZ1bmMsIG9wZW5GdW5jLCBy
ZWFkRnVuYywgY2xvc2VGdW5jKTsKICAgICAgICAgeG1sUmVnaXN0ZXJPdXRwdXRDYWxsYmFja3Mo
bWF0Y2hGdW5jLCBvcGVuRnVuYywgd3JpdGVGdW5jLCBjbG9zZUZ1bmMpOwotICAgICAgICBsaWJ4
bWxMb2FkZXJUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Ci0gICAgICAgIGRpZEluaXQgPSB0cnVl
OwotICAgIH0KKyAgICAgICAgbGlieG1sTG9hZGVyVGhyZWFkID0gJlRocmVhZDo6Y3VycmVudCgp
OworICAgIH0pOworfQorCitSZWY8WE1MUGFyc2VyQ29udGV4dD4gWE1MUGFyc2VyQ29udGV4dDo6
Y3JlYXRlU3RyaW5nUGFyc2VyKHhtbFNBWEhhbmRsZXJQdHIgaGFuZGxlcnMsIHZvaWQqIHVzZXJE
YXRhKQoreworICAgIGluaXRpYWxpemVYTUxQYXJzZXIoKTsKIAogICAgIHhtbFBhcnNlckN0eHRQ
dHIgcGFyc2VyID0geG1sQ3JlYXRlUHVzaFBhcnNlckN0eHQoaGFuZGxlcnMsIDAsIDAsIDAsIDAp
OwogICAgIHBhcnNlci0+X3ByaXZhdGUgPSB1c2VyRGF0YTsKQEAgLTUyMiwxMyArNTI1LDcgQEAg
UmVmPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZVN0cmluZ1BhcnNl
cih4bWxTQVhIYW5kbGVyUHRyIGhhbmQKIC8vIENodW5rIHNob3VsZCBiZSBlbmNvZGVkIGluIFVU
Ri04CiBSZWZQdHI8WE1MUGFyc2VyQ29udGV4dD4gWE1MUGFyc2VyQ29udGV4dDo6Y3JlYXRlTWVt
b3J5UGFyc2VyKHhtbFNBWEhhbmRsZXJQdHIgaGFuZGxlcnMsIHZvaWQqIHVzZXJEYXRhLCBjb25z
dCBDU3RyaW5nJiBjaHVuaykKIHsKLSAgICBpZiAoIWRpZEluaXQpIHsKLSAgICAgICAgeG1sSW5p
dFBhcnNlcigpOwotICAgICAgICB4bWxSZWdpc3RlcklucHV0Q2FsbGJhY2tzKG1hdGNoRnVuYywg
b3BlbkZ1bmMsIHJlYWRGdW5jLCBjbG9zZUZ1bmMpOwotICAgICAgICB4bWxSZWdpc3Rlck91dHB1
dENhbGxiYWNrcyhtYXRjaEZ1bmMsIG9wZW5GdW5jLCB3cml0ZUZ1bmMsIGNsb3NlRnVuYyk7Ci0g
ICAgICAgIGxpYnhtbExvYWRlclRocmVhZCA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAgZGlk
SW5pdCA9IHRydWU7Ci0gICAgfQorICAgIGluaXRpYWxpemVYTUxQYXJzZXIoKTsKIAogICAgIC8v
IGFwcGVuZEZyYWdtZW50U291cmNlKCkgY2hlY2tzIHRoYXQgdGhlIGxlbmd0aCBkb2Vzbid0IG92
ZXJmbG93IGFuIGludC4KICAgICB4bWxQYXJzZXJDdHh0UHRyIHBhcnNlciA9IHhtbENyZWF0ZU1l
bW9yeVBhcnNlckN0eHQoY2h1bmsuZGF0YSgpLCBjaHVuay5sZW5ndGgoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBjMzc3
NTgyNTRiNGQ0ZjhmMDFjZTlhMzhlNmYwZGU4YjUyNTg5OTZhLi4wN2VlZGNiNjNjNDhlZTZiY2Ix
NjZkOTJiYjhhNjdkYTE4NGIwYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNkZWZpbmUgQVNT
RVJUX05PVF9TWU5DX1RIUkVBRCgpIEFTU0VSVCghbV9zeW5jVGhyZWFkUnVubmluZyB8fCAhSVNf
SUNPTl9TWU5DX1RIUkVBRCgpKQogCiAvLyBGb3IgbWV0aG9kcyB0aGF0IGFyZSBtZWFudCB0byBz
dXBwb3J0IHRoZSBzeW5jIHRocmVhZCBPTkxZCi0jZGVmaW5lIElTX0lDT05fU1lOQ19USFJFQUQo
KSAobV9zeW5jVGhyZWFkLT5pZCgpID09IGN1cnJlbnRUaHJlYWQoKSkKKyNkZWZpbmUgSVNfSUNP
Tl9TWU5DX1RIUkVBRCgpIChtX3N5bmNUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKQogI2Rl
ZmluZSBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpIEFTU0VSVChJU19JQ09OX1NZTkNfVEhSRUFE
KCkpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaAppbmRleCAyYjdiMmY1YzdjYTAxYzRlMzVkYTQzNGIzMzE0ZTY4Zjdk
YmFjZmI3Li41MWYyZDI3MjA1ZGUwNTA2ZDBjNDcwYjk5ZjkzYzkxODM2MTE1YWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtOTQsMTMgKzk0LDEzIEBA
IGNsYXNzIEdlbmVyaWNDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0Jhc2UgewogCiAgICAgdmly
dHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBtX29yaWdpblRocmVhZC5nZXQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jYWxsYmFj
ayk7CiAgICAgfQogCiAgICAgdm9pZCBwZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoVC4u
LiByZXR1cm5WYWx1ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9vcmlnaW5UaHJlYWRJRCk7CisgICAgICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X29yaWdpblRocmVhZC5nZXQoKSk7CiAKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE3LDcgKzExNyw3IEBAIGNsYXNzIEdlbmVyaWNDYWxsYmFjayA6
IHB1YmxpYyBDYWxsYmFja0Jhc2UgewogCiAgICAgdm9pZCBpbnZhbGlkYXRlKEVycm9yIGVycm9y
ID0gRXJyb3I6OlVua25vd24pIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV9vcmlnaW5UaHJlYWQuZ2V0KCkpOwogCiAgICAgICAgIGlmICghbV9jYWxsYmFj
aykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBHZW5lcmlj
Q2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKICAgICBzdGQ6Om9wdGlvbmFsPENhbGxi
YWNrRnVuY3Rpb24+IG1fY2FsbGJhY2s7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRl
bnRpZmllciBtX29yaWdpblRocmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRo
cmVhZD4gbV9vcmlnaW5UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDFh
YWRkZTVjNDkxMzYzMGFlYzkwODA0Mzg2NDRjMWVmMjEyOWE2NS4uZmE5ZmFmNWNiNzY4ZjBmZjcy
Njc1NDU2OWY4ZDAxY2Q1YjBhOTNjMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRuJ3QgaGF2
ZSBib3RoIFRocmVhZCBhbmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW06CisgICAgICAgIChydW5UaHJlYWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorCiAyMDE3LTEyLTAxICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IGF1dG8taW5z
dGFsbCBweXRlc3QgaW5zdGVhZCBvZiBpbXBvcnRpbmcgaXQgZnJvbSB3cHQgdG9vbHMgZGlyZWN0
b3J5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMzI3
ZjIwYjFkZjA0Y2ViYjg4ZjE0MmY1YzlhOWE2NjYyNWVkYmYwZC4uZWZkN2E2YmQyNWVkNGViYWM0
YjlmZDhjOTBjZjYyZWM3NDFkMDk1NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQpAQCAtMTA2NywxMSArMTA2NywxMSBAQCBzdGF0aWMgdm9pZCBzZXREZWZh
dWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogCiBzdGF0aWMgdm9pZCBydW5UaHJl
YWQoKQogewotICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIHByZXZpb3VzSWQgPSAwOwotICAg
IFRocmVhZElkZW50aWZpZXIgY3VycmVudElkID0gY3VycmVudFRocmVhZCgpOworICAgIHN0YXRp
YyBUaHJlYWQqIHByZXZpb3VzID0gbnVsbHB0cjsKKyAgICBUaHJlYWQmIGN1cnJlbnQgPSBUaHJl
YWQ6OmN1cnJlbnQoKTsKICAgICAvLyBWZXJpZnkgMiBzdWNjZXNzaXZlIHRocmVhZHMgZG8gbm90
IGdldCB0aGUgc2FtZSBJZC4KLSAgICBBU1NFUlQocHJldmlvdXNJZCAhPSBjdXJyZW50SWQpOwot
ICAgIHByZXZpb3VzSWQgPSBjdXJyZW50SWQ7CisgICAgQVNTRVJUKHByZXZpb3VzICE9ICZjdXJy
ZW50KTsKKyAgICBwcmV2aW91cyA9ICZjdXJyZW50OwogfQogCiBzdGF0aWMgdm9pZCogcnVuUHRo
cmVhZCh2b2lkKikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bh
cmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5j
cHAKaW5kZXggYmE4ZGQ1NmE1YjMwYTI0ZWY1ZmRjZTNiZDMwMWQwNmY1NGFkNGU4OC4uZjk0NDBk
MDlmZTFlMTJhODA2NTQwYjQyZTIxMDljOTFhNGM3N2I2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAgLTUxLDcgKzUxLDYgQEAgc3RydWN0IFNp
bmdsZUxhdGNoVGVzdCB7CiAgICAgICAgICAgICAgICAgVGhyZWFkOjpjcmVhdGUoCiAgICAgICAg
ICAgICAgICAgICAgICJQYXJraW5nIFRlc3QgVGhyZWFkIiwKICAgICAgICAgICAgICAgICAgICAg
WyZdICgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9ORSgwdSwgY3VycmVudFRo
cmVhZCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRvd24oKTsKIAogICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihsb2NrKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328292</attachid>
            <date>2017-12-03 07:32:59 -0800</date>
            <delta_ts>2017-12-03 08:44:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180308-20171204003257.patch</filename>
            <type>text/plain</type>
            <size>205084</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDI4ZTNiNzZhZGVjZWZkZGQyMjBmNjEzMGY4ZjM5ZGEzOThjMmU0Li4xNTE5ZDQyNTRkNmVhODAw
ZmMwMDA5NjliMThkYWNlZjM2NWFkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVh
ZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5l
VGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25TY29wZS5j
cHA6CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjp1bmV4cGVjdGVkRXhjZXB0aW9uTWVz
c2FnZSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpTQzo6SlNMb2Nr
OjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dpbmdUaHJlYWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpWTTo6Y2xlYXJFeGNlcHRpb24pOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5j
cHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6cHJpbnRWZXJpZmljYXRpb25IZWFkZXIp
OgorCiAyMDE3LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBKYXZhU2NyaXB0Q29yZTogbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGluIE1hdGggZnVu
Y3Rpb25zIHRoYXQgdGFrZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA5YmU0YzQ1Y2Q0
NmQxODYyOTU2OWI3YzdhNTBjYWVkZTJhODk3YjAuLmM0YjMwZmE0ZTc1MDk1YTkwOWE0ZjI4OTQ5
NjgzNDU0Njk1ZmRhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTctMTItMDMgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgV1RGIHNob3VsZG4ndCBo
YXZlIGJvdGggVGhyZWFkIGFuZCBUaHJlYWRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGQgdXNlIGEgcG9pbnRlciBvZiBX
VEY6OlRocmVhZCBpbnN0ZWFkIG9mIFRocmVhZElkZW50aWZpZXIuCisKKyAgICAgICAgT25lIHBy
b2JsZW0gaXMgdGhhdCBXaW5kb3dzIHN1cHBvcnQgbGlicmFyeSB1c2VzIFdURjo6Y3JlYXRlVGhy
ZWFkLAorICAgICAgICB3aGljaCByZXR1cm5zIFRocmVhZElkZW50aWZpZXIuIFNvIHdlIGNhbm5v
dCBkcm9wIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaW4gV2luZG93cyBlbnZpcm9ubWVudC4g
VGhpcyBwYXRjaCBrZWVwcyBUaHJlYWRJZGVudGlmaWVyIGluIFdpbmRvd3MuCisKKyAgICAgICAg
KiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KToKKyAgICAgICAgKFdURjo6aXNNYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6Y2FuQWNjZXNz
VGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgor
ICAgICAgICAqIHd0Zi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6
cGFya0NvbmRpdGlvbmFsbHlJbXBsKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJr
T25lKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJrT25lSW1wbCk6CisgICAgICAg
IChXVEY6OlBhcmtpbmdMb3Q6OnVucGFya0NvdW50KToKKyAgICAgICAgKiB3dGYvUmVjdXJzaXZl
TG9ja0FkYXB0ZXIuaDoKKyAgICAgICAgKFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OmxvY2sp
OgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6dW5sb2NrKToKKyAgICAgICAg
KFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OnRyeUxvY2spOgorICAgICAgICAqIHd0Zi9UaHJl
YWRpbmcuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmR1bXAgY29uc3QpOgorICAgICAgICAq
IHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppZCBjb25zdCk6CisgICAg
ICAgIChXVEY6OlRocmVhZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaHJlYWQpOiBEZWxldGVkLgorICAgICAg
ICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbik6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6ZGV0YWNoKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNw
ZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFu
ZGxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50SUQpOiBEZWxldGVkLgorICAgICAg
ICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OndhaXRGb3JD
b21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkOjpjdXJyZW50RHlpbmcpOgorICAgICAgICAqIHd0Zi9tYWMvTWFpblRocmVhZE1h
Yy5tbToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQpOgorICAg
ICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkUGxhdGZvcm0pOgorICAgICAgICAoV1RGOjpj
YW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQpOgorICAgICAgICAoV1RGOjppbml0aWFs
aXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
Ojppbml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcik6IERlbGV0ZWQuCisKIDIwMTctMTItMDIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZhY3RvciBvdXQg
dGhlICJkYXRhYmFzZVRhc2tRdWV1ZSIgcGFydHMgb2YgSURCU2VydmVyIGludG8gc29tZXRoaW5n
IHJldXNhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJlYjc0ZWIwYWRhMzU0NDdiNzFiNjQzZmQ1ZjA4YmUy
MTYwM2I0Y2MuLmI1YjRmY2JkOGQxZjNjNzViMWY1YzBiMzEzNjY2ZDA0NzI2ZjliOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNTMgQEAKKzIwMTctMTItMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgV1RGIHNob3VsZG4ndCBoYXZlIGJvdGggVGhy
ZWFkIGFuZCBUaHJlYWRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkFj
dGl2ZURPTU9iamVjdDo6b3JpZ2luVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkFjdGl2ZURPTU9iamVjdDo6cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpjYWxsRnVuY3Rpb25Pbk9yaWdpblRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6Om9yaWdpblRocmVhZElE
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpJREJDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjp+SURCQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6c291cmNlc0RlbGV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
Ojp0cmFuc2FjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmFkdmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6dW5jaGVja2VkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJD
dXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c2V0
R2V0UmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6OnZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpy
ZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6Om1heWJlQ2xvc2VJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OndpbGxDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OndpbGxBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
OjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpk
aWRDb21taXRPckFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRpZENy
ZWF0ZUluZGV4SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGlkRGVsZXRl
SW5kZXhJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6SURCSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6On5JREJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bmFtZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6c2V0TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmtleVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OnVuaXF1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bXVsdGlFbnRyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6cm9sbGJhY2tJbmZvRm9yVmVyc2lvbkNoYW5nZUFi
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4Ojpkb0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsS2V5
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bWFya0FzRGVsZXRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omdl
dEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpnZXRBbGxLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpt
YXJrQXNEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpyb2xsYmFj
a0ZvclZlcnNpb25DaGFuZ2VBYm9ydCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T3BlbkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojp+
SURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojpv
bkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbkRpZEZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1
ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPcGVuREJSZXF1ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VDb21wbGV0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvbkRlbGV0ZURhdGFiYXNlU3VjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RCbG9ja2VkKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVxdWVzdDo6c2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OnRyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2VJbmRleElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVxdWVzdGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnJlcXVlc3RlZEluZGV4UmVj
b3JkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpldmVudFRhcmdl
dEludGVyZmFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjphY3RpdmVE
T01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZW5xdWV1ZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzdWx0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OndpbGxJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6Y29tcGxldGVSZXF1ZXN0QW5kRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0OjpvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3Vj
Y2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp+SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRiKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjplcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0
RHVlVG9GYWlsZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp0
cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVybmFsQWJv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRD
YW5jZWxSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aXNGaW5pc2hlZE9yRmluaXNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjphZGRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpyZW1vdmVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzY2hl
ZHVsZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1
bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVDb21wbGV0ZWRPcGVyYXRpb25UaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZmluaXNoQWJvcnRPckNvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246Om5vdGlmeURpZEFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpkaWRBYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ29t
bWl0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVPYmplY3RTdG9yZU9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4T25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFJlbmFtZUluZGV4T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJl
Y29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJ
bmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmdldEFsbFJl
Y29yZHNPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
QWxsUmVjb3Jkc09uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0R2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldENvdW50T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZVJlY29yZE9uU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVSZWNvcmRPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVP
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJPYmpl
Y3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0UHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RT
dG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWREZWxl
dGVPYmplY3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVsZXRl
SW5kZXhPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkRGVs
ZXRlSW5kZXhPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b3Bl
cmF0aW9uQ29tcGxldGVkT25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmVzdGFibGlzaE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjphY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVhY3RpdmF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OnJlbW92ZUl0ZW1zTWF0Y2hpbmdD
dXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb246On5UcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRl
T25UaGlzVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OmRvQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6b3JpZ2luVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9yaWdp
blRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp0cnlMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6dW5sb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aXNBdWRp
b1RocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzR3JhcGhP
d25lciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c2V0QXVkaW9UaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjphdWRpb1RocmVhZCBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJm
b3JtQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzOjpEYXRhYmFzZURldGFpbHMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzOjp0aHJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VEZXRhaWxzOjp0aHJlYWRJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VDbG9zZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhy
ZWFkOjpnZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmdldFRo
cmVhZElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhh
bmRsZUNsb3NlZERhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OmRvQ2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ6Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0
YTo6SlNDYWxsYmFja0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6On5K
U0NhbGxiYWNrRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAg
ICAgKiBwYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVh
ZDo6aXNDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnByb3ZpZGVTdXBwbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpyZW1vdmVTdXBwbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpyZXF1aXJlU3VwcGxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6U3VwcGxlbWVudGFibGUpOgorICAgICAgICAq
IHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c2V0
TmV4dEZpcmVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9z
aXRpbmdUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjpnZXRBdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YXBwZW5kVG9VbnVzZWRCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3YXBC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tOgorICAgICAgICAoUnVuV2ViVGhyZWFkKToKKyAgICAgICAgKFN0YXJ0V2ViVGhy
ZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzcWxpdGUzSGFuZGxlIGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmlzQ29udGV4dFRocmVhZCBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQcm94eSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5M
b29wOjpydW5DbGVhbnVwVGFza3MpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnRocmVhZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpv
Yik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRX
aXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVu
cmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdp
c3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2VySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAg
ICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWF0Y2hGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVYTUxQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MUGFy
c2VyQ29udGV4dDo6Y3JlYXRlU3RyaW5nUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFBh
cnNlckNvbnRleHQ6OmNyZWF0ZU1lbW9yeVBhcnNlcik6CisKIDIwMTctMTItMDIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgcmVnaXN0cmF0aW9uIGFj
dGl2YXRpb24gYW5kIGNsZWFyaW5nIGZyb20gU1dTZXJ2ZXJKb2JRdWV1ZSB0byBTV1NlcnZlclJl
Z2lzdHJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NDM3NTAyYmNkZmQwN2JlYTIzNDZkYThlNWYyNDQxZjdh
MjVmNThkLi41NTZlN2I4OWEwNWJhYTJlYjY5Nzc4M2E3NzU0OWNjY2E2MDAzZDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRuJ3QgaGF2ZSBib3RoIFRocmVhZCBh
bmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6OkdlbmVy
aWNDYWxsYmFjazo6fkdlbmVyaWNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWND
YWxsYmFjazo6cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKToKKwogMjAxNy0xMi0wMiAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldGFsbApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXgg
MWRlOGNhYTg5ZDQxODA2ODFiNzI3NjhjNzJlZjM5NWE1NTIxYjMxNi4uODI0NjI3MmFjOGE4ZWVh
NTk5ZTMzZjk3ZmM5MzdjZmNlNGI2YzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0xNjAsOCArMTYwLDggQEAgYm9vbCBN
YWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiBsb2NrZXIsIHZvaWQKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgdGhyZWFkcyB3
aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgVGhyZWFkR3JvdXAuIFRodXMsIHdlIGRvIG5vdCBkbyBh
bnl0aGluZyBoZXJlIGV4Y2VwdCBmb3IgcmVwb3J0aW5nLgogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0LmVycm9yKCkgIT0gS0VSTl9TVUNDRVNTKTsKICAgICAgICAgICAgICAgICAg
ICAgV1RGUmVwb3J0RXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9O
LAotICAgICAgICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9u
IGVuY291bnRlcmVkIGFuIGludmFsaWQgdGhyZWFkIChlcnIgMHgleCk6IFRocmVhZCBbJWQvJWQ6
ICVwXSBpZCAldS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9yKCksIGlu
ZGV4LCB0aHJlYWRzLnNpemUoKSwgdGhyZWFkLnB0cigpLCB0aHJlYWQtPmlkKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9uIGVuY291bnRl
cmVkIGFuIGludmFsaWQgdGhyZWFkIChlcnIgMHgleCk6IFRocmVhZCBbJWQvJWQ6ICVwXS4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9yKCksIGluZGV4LCB0aHJlYWRzLnNp
emUoKSwgdGhyZWFkLnB0cigpKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDIxZTkwMmQ0OTU1ZjhiY2JmNzI4MGY0ZjFiOWRhMzk3NzcxM2I1M2IuLjdhMTVlMjI5
ZWUwYTJjODE5NjQzNzg4ZThiMTZjYTMzMDk4YjRiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTkxLDggKzE5MSw4IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBk
YXRhTG9nRigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQp
OiAlZDogJWRcbiIsCi0gICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0Yo
IjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
XG4iLAorICAgICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
LApAQCAtMjE1LDggKzIxNSw4IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjCiAgICAgfSB1Owog
ICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgZGF0YUxvZ0YoCi0g
ICAgICAgICI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6
ICVkOiAlZDogJTA4eDolMDh4OiAlc1xuIiwKLSAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAg
ICAgICAiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAl
ZDogJWQ6ICUwOHg6JTA4eDogJXNcbiIsCisgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgIGV4ZWMsCiAgICAgICAgIHN0YXRpY19j
YXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKSwKQEAgLTIzMiw3ICsyMzIsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYwogCiBMTElO
VF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRhTG9nRigiPCVkPiAl
cCAvICVwOiBpbiBwcm9sb2d1ZSBvZiAiLCBjdXJyZW50VGhyZWFkKCksIGV4ZWMtPmNvZGVCbG9j
aygpLCBleGVjKTsKKyAgICBkYXRhTG9nRigiPCVwPiAlcCAvICVwOiBpbiBwcm9sb2d1ZSBvZiAi
LCAmVGhyZWFkOjpjdXJyZW50KCksIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKICAgICBkYXRh
TG9nKCpleGVjLT5jb2RlQmxvY2soKSwgIlxuIik7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0K
QEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlYwogICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5k
KTsKLSAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBpbiAlcyBvZiAiLCBjdXJyZW50VGhyZWFk
KCksIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAl
cDogaW4gJXMgb2YgIiwgJlRocmVhZDo6Y3VycmVudCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1l
bnQpOwogICAgIGRhdGFMb2coKmNvZGVCbG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlvbiAl
cCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNh
bGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhlY3V0
YWJsZSwgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBj
b2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAgLTI3
NSw4ICsyNzUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9j
b25zdHJ1Y3QpCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZSkKIHsKICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSk7Ci0gICAg
ZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBcbiIs
Ci0gICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAl
cDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBcbiIsCisgICAgICAgICAgICAmVGhyZWFk
OjpjdXJyZW50KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgICAg
IGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCkBAIC0yOTQsOCArMjk0LDggQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxf
dHJhY2UpCiB7Ci0gICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwg
Y2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCi0gICAgICAgICAgICBjdXJy
ZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNp
YWwgY2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAgICAgICAm
VGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAg
ICAgICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVj
LT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAKaW5kZXggNjkwYmMxMjI5ZjIx
NDBhMDhkYmE3N2I3ZTU1YmEyYzIxZjhjMjdiZi4uN2QxYzA2YTk1NDFiMTUwMTMwMjQ2OGFjYmIw
MWY4Njc0NDg5YWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvblNjb3BlLmNwcApAQCAtNTUsMTQgKzU1LDE0IEBAIENTdHJpbmcgRXhjZXB0aW9uU2Nv
cGU6OnVuZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlKCkKIHsKICAgICBTdHJpbmdQcmludFN0cmVh
bSBvdXQ7CiAKLSAgICBvdXQucHJpbnRsbigiVW5leHBlY3RlZCBleGNlcHRpb24gb2JzZXJ2ZWQg
b24gdGhyZWFkICIsIGN1cnJlbnRUaHJlYWQoKSwgIiBhdDoiKTsKKyAgICBvdXQucHJpbnRsbigi
VW5leHBlY3RlZCBleGNlcHRpb24gb2JzZXJ2ZWQgb24gdGhyZWFkICIsIFRocmVhZDo6Y3VycmVu
dCgpLCAiIGF0OiIpOwogICAgIGF1dG8gY3VycmVudFN0YWNrID0gU3RhY2tUcmFjZTo6Y2FwdHVy
ZVN0YWNrVHJhY2UoT3B0aW9uczo6dW5leHBlY3RlZEV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdCgp
LCAxKTsKICAgICBjdXJyZW50U3RhY2stPmR1bXAob3V0LCAiICAgICIpOwogCiAgICAgaWYgKCFt
X3ZtLm5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdygpKQogICAgICAgICByZXR1cm4gQ1N0cmlu
ZygpOwogICAgIAotICAgIG91dC5wcmludGxuKCJUaGUgZXhjZXB0aW9uIHdhcyB0aHJvd24gZnJv
bSB0aHJlYWQgIiwgbV92bS50aHJvd2luZ1RocmVhZCgpLCAiIGF0OiIpOworICAgIG91dC5wcmlu
dGxuKCJUaGUgZXhjZXB0aW9uIHdhcyB0aHJvd24gZnJvbSB0aHJlYWQgIiwgKm1fdm0udGhyb3dp
bmdUaHJlYWQoKSwgIiBhdDoiKTsKICAgICBtX3ZtLm5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJv
dygpLT5kdW1wKG91dCwgIiAgICAiKTsKIAogICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IGRlYTA1MDI4Y2Q3MzVlYjYz
OTE3NDcwYzE1MjJiMTgyNDVkZTU3NTUuLmJlZGYyYjU3MjgwNjc3NDY0N2RlMjFiN2MzMThmZmEz
OGVlMzc2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC05OCw3
ICs5OCw3IEBAIGNsYXNzIEpTTG9jayA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKU0xv
Y2s+IHsKICAgICAgICAgICAgIHJldHVybiBtX293bmVyVGhyZWFkOwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KLSAgICBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCkgeyByZXR1cm4gbV9oYXNPd25lclRocmVhZCAmJiBtX293bmVyVGhyZWFkLT5pZCgpID09IGN1
cnJlbnRUaHJlYWQoKTsgfQorICAgIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB7
IHJldHVybiBtX2hhc093bmVyVGhyZWFkICYmIG1fb3duZXJUaHJlYWQuZ2V0KCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpOyB9CiAKICAgICB2b2lkIHdpbGxEZXN0cm95Vk0oVk0qKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDVhYmRmYmJkODhiYTI4NWYxYTM1OGQ4NzEz
YjY1YTIyZTY1NDkxZTAuLjY4ZmJjZTdiZWZhM2JiMjhiODI1ZjIzY2I1NzNhY2M1YTVhODZiODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY4OSw3ICs2ODksNyBAQCB2
b2lkIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0
aW9uKQogCiAjaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAgICAgbV9u
YXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3cgPSBTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tUcmFj
ZShPcHRpb25zOjp1bmV4cGVjdGVkRXhjZXB0aW9uU3RhY2tUcmFjZUxpbWl0KCkpOwotICAgIG1f
dGhyb3dpbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgbV90aHJvd2luZ1RocmVhZCA9
ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCAzNjY4NzNiMmI3OWQ5ZDUzZmNmOWJhZjM2ZjZjNWUyNTlkM2Y5YjAwLi5hNmMy
ZDUzZmM4MDFkMWNkYWRkZmYxYTFmYWNjNTQ1NDljYWJhY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTcxMSw3ICs3MTEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAj
aWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAgICAgU3RhY2tUcmFjZSog
bmF0aXZlU3RhY2tUcmFjZU9mTGFzdFRocm93KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVTdGFj
a1RyYWNlT2ZMYXN0VGhyb3cuZ2V0KCk7IH0KLSAgICBUaHJlYWRJZGVudGlmaWVyIHRocm93aW5n
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd2luZ1RocmVhZDsgfQorICAgIFRocmVhZCog
dGhyb3dpbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgpOyB9
CiAjZW5kaWYKIAogI2lmIFVTRShDRikKQEAgLTc1NCw3ICs3NTQsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgICAg
ICBtX25lZWRFeGNlcHRpb25DaGVjayA9IGZhbHNlOwogICAgICAgICBtX25hdGl2ZVN0YWNrVHJh
Y2VPZkxhc3RUaHJvdyA9IG51bGxwdHI7Ci0gICAgICAgIG1fdGhyb3dpbmdUaHJlYWQgPSAwOwor
ICAgICAgICBtX3Rocm93aW5nVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgogICAgICAgICBtX2V4
Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgfQpAQCAtODA2LDcgKzgwNiw3IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgbXV0YWJsZSBib29sIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIHsgZmFsc2Ug
fTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tUcmFjZT4gbV9uYXRpdmVTdGFja1RyYWNlT2ZM
YXN0VGhyb3c7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IG1fbmF0aXZlU3RhY2tU
cmFjZU9mTGFzdFNpbXVsYXRlZFRocm93OwotICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJvd2lu
Z1RocmVhZDsKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Rocm93aW5nVGhyZWFkOwogI2VuZGlmCiAK
ICAgICBib29sIG1fZmFpbE5leHROZXdDb2RlQmxvY2sgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCA5YTJkMmFjYmEzZjQ3MDEy
YTAyMTNhNWRiMDZmOWM2OGI2ZDFhOTYwLi5jZDkxZWUxYTRlMDMwZThlOGNhYTE1Y2E3ZjllYWFh
YTQxMDJjZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZl
cmlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVy
LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpwcmludFZlcmlmaWNh
dGlvbkhlYWRlcigpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUo
KSk7CiAgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlID0gY3VycmVudEN5Y2xlKCkuc2NvcGU7CiAg
ICAgTW9ub3RvbmljVGltZSBnY0N5Y2xlVGltZXN0YW1wID0gY3VycmVudEN5Y2xlKCkudGltZXN0
YW1wOwotICAgIGRhdGFMb2coIlZlcmlmeWluZyBoZWFwIGluIFtwIiwgZ2V0Q3VycmVudFByb2Nl
c3NJRCgpLCAiLCB0IiwgY3VycmVudFRocmVhZCgpLCAiXSB2bSAiLAorICAgIGRhdGFMb2coIlZl
cmlmeWluZyBoZWFwIGluIFtwIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiLCAiLCBUaHJlYWQ6
OmN1cnJlbnQoKSwgIl0gdm0gIiwKICAgICAgICAgUmF3UG9pbnRlcihtX2hlYXAtPnZtKCkpLCAi
IG9uICIsIHNjb3BlLCAiIEdDIEAgIiwgZ2NDeWNsZVRpbWVzdGFtcCwgIlxuIik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYv
TWFpblRocmVhZC5jcHAKaW5kZXggMmM0MTYyN2Q2ZTc5NDBkNDhjOTVkYzczYWNlM2ZiYjI2MTM4
NmJkMy4uNGMyMjNlYTNjMjQ0ZWMyNjE3ZDRiYmJkMzkwNmZiNzAzOGM5Y2E0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWFp
blRocmVhZC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHN0YXRpYyBi
b29sIGNhbGxiYWNrc1BhdXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgb25seSBhY2Nl
c3NlZCBmcm9tIG1haW4gdGhyZWFkLgogI2lmICFQTEFURk9STShDT0NPQSkKLXN0YXRpYyBUaHJl
YWRJZGVudGlmaWVyIG1haW5UaHJlYWRJZGVudGlmaWVyOworc3RhdGljIFRocmVhZCogbWFpblRo
cmVhZCB7IG51bGxwdHIgfTsKICNlbmRpZgogCiBzdGF0aWMgU3RhdGljTG9jayBtYWluVGhyZWFk
RnVuY3Rpb25RdWV1ZU11dGV4OwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGluaXRpYWxpemVNYWlu
VGhyZWFkKCkKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplS2V5LCBbXSB7CiAgICAgICAg
IGluaXRpYWxpemVUaHJlYWRpbmcoKTsKICNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG1h
aW5UaHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBtYWluVGhyZWFk
ID0gJlRocmVhZDo6Y3VycmVudCgpOwogI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVNYWluVGhy
ZWFkUGxhdGZvcm0oKTsKICAgICAgICAgaW5pdGlhbGl6ZUdDVGhyZWFkcygpOwpAQCAtNzIsNyAr
NzIsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCkKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiBib29sIGlzTWFpblRocmVhZCgpCiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBt
YWluVGhyZWFkSWRlbnRpZmllcjsKKyAgICByZXR1cm4gJlRocmVhZDo6Y3VycmVudCgpID09IG1h
aW5UaHJlYWQ7CiB9CiAjZW5kaWYKIApAQCAtOTgsOSArOTgsOSBAQCB2b2lkIGluaXRpYWxpemVX
ZWJUaHJlYWQoKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgIVVTRShXRUJfVEhS
RUFEKQotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRp
ZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFRo
cmVhZCYgdGhyZWFkKQogewotICAgIHJldHVybiB0aHJlYWRJZCA9PSBjdXJyZW50VGhyZWFkKCk7
CisgICAgcmV0dXJuIHRocmVhZCA9PSBUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmgKaW5kZXggYzk1ZjkyZmJkZjNhNGJkMzU4NzlkYmRlZWEwZDE1MWE0YzAyOTAy
Yi4uZWQxZDQ5NWZlYmQ3MmY1ZTgwM2FjNWRiNDY0MTFkNzc4ZTI0MmVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3Ry
ZWFtOworY2xhc3MgVGhyZWFkOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CkBA
IC01NCwxNCArNTUsMTMgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWFpblRocmVhZENh
bGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
TWFpblRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5BY2Nlc3NUaHJlYWRM
b2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkJik7CiAKICNpZiBV
U0UoV0VCX1RIUkVBRCkKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV2ViVGhyZWFkKCk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1VJVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0aWFsaXplV2ViVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0
aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRJZGVudGlmaWVyKCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogdm9pZCBpbml0aWFsaXpl
V2ViVGhyZWFkUGxhdGZvcm0oKTsKICNlbHNlCiBpbmxpbmUgYm9vbCBpc1dlYlRocmVhZCgpIHsg
cmV0dXJuIGlzTWFpblRocmVhZCgpOyB9CkBAIC0xMTMsOCArMTEzLDcgQEAgdXNpbmcgV1RGOjpj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQ7CiAjZW5kaWYKICNpZiBV
U0UoV0VCX1RIUkVBRCkKIHVzaW5nIFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZDsKLXVzaW5nIFdU
Rjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyOwotdXNpbmcgV1RGOjpp
bml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcjsKK3VzaW5nIFdURjo6aW5pdGlhbGl6ZUFwcGxp
Y2F0aW9uVUlUaHJlYWQ7CiAjZW5kaWYKIAogI2VuZGlmIC8vIE1haW5UaHJlYWRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJr
aW5nTG90LmNwcAppbmRleCBmOGZlZDg4YjFmN2M5OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNjZTFj
Li5iMTRkN2EyY2RlZDhmNWVkM2QzNDAyZjc4ODBkMzcxNjI2ODllOGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5n
TG90LmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICB2b2lkIGVucXVl
dWUoVGhyZWFkRGF0YSogZGF0YSkKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVucXVldWVpbmcgIiwg
UmF3UG9pbnRlcihkYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2ludGVyKGRhdGEtPmFk
ZHJlc3MpLCAiIG9udG8gIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAgICAgICAgICAg
ZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyAiLCBSYXdQ
b2ludGVyKGRhdGEpLCAiIHdpdGggYWRkcmVzcyA9ICIsIFJhd1BvaW50ZXIoZGF0YS0+YWRkcmVz
cyksICIgb250byAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIEFTU0VSVChk
YXRhLT5hZGRyZXNzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLT5uZXh0SW5RdWV1ZSk7CiAgICAg
ICAgIApAQCAtOTksMTEgKzk5LDExIEBAIHN0cnVjdCBCdWNrZXQgewogICAgIHZvaWQgZ2VuZXJp
Y0RlcXVldWUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRl
cXVldWVpbmcgZnJvbSBidWNrZXQgYXQgIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAg
ICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZGVxdWV1ZWlu
ZyBmcm9tIGJ1Y2tldCBhdCAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIXF1ZXVlSGVhZCkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVtcHR5Llxu
IikpOworICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCks
ICI6IGVtcHR5LlxuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0
MywxNCArMTQzLDE0IEBAIHN0cnVjdCBCdWNrZXQgewogICAgICAgICB3aGlsZSAoc2hvdWxkQ29u
dGludWUpIHsKICAgICAgICAgICAgIFRocmVhZERhdGEqIGN1cnJlbnQgPSAqY3VycmVudFB0cjsK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJp
bmcoY3VycmVudFRocmVhZCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCks
ICJcbiIpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVu
dCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJcbiIpKTsKICAgICAg
ICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IERlcXVldWVSZXN1bHQgcmVzdWx0ID0gZnVuY3RvcihjdXJyZW50LCB0aW1lVG9CZUZhaXIpOwog
ICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJl
c3VsdDo6SWdub3JlOgogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3VycmVudFB0ciA9
ICIsIFJhd1BvaW50ZXIoY3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRl
cigqY3VycmVudFB0ciksICJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0
cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3VycmVudFB0ciA9ICIsIFJhd1BvaW50ZXIoY3Vy
cmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigqY3VycmVudFB0ciksICJc
biIpKTsKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAg
ICAgY3VycmVudFB0ciA9ICYoKmN1cnJlbnRQdHIpLT5uZXh0SW5RdWV1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJlc3VsdDo6UmVt
b3ZlQW5kQ29udGludWU6CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBkZXF1ZXVlaW5n
ICIsIFJhd1BvaW50ZXIoY3VycmVudCksICIgZnJvbSAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4i
KSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50
KCksICI6IGRlcXVldWVpbmcgIiwgUmF3UG9pbnRlcihjdXJyZW50KSwgIiBmcm9tICIsIFJhd1Bv
aW50ZXIodGhpcyksICJcbiIpKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBxdWV1
ZVRhaWwpCiAgICAgICAgICAgICAgICAgICAgIHF1ZXVlVGFpbCA9IHByZXZpb3VzOwogICAgICAg
ICAgICAgICAgIGRpZERlcXVldWUgPSB0cnVlOwpAQCAtMjcxLDcgKzI3MSw3IEBAIEhhc2h0YWJs
ZSogZW5zdXJlSGFzaHRhYmxlKCkKICAgICAgICAgICAgIGN1cnJlbnRIYXNodGFibGUgPSBIYXNo
dGFibGU6OmNyZWF0ZShtYXhMb2FkRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChoYXNodGFibGUu
Y29tcGFyZUV4Y2hhbmdlV2VhayhudWxscHRyLCBjdXJyZW50SGFzaHRhYmxlKSkgewogICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3Ry
aW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBpbml0aWFsIGhhc2h0YWJsZSAiLCBSYXdQ
b2ludGVyKGN1cnJlbnRIYXNodGFibGUpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IGNyZWF0ZWQgaW5pdGlhbCBoYXNo
dGFibGUgIiwgUmF3UG9pbnRlcihjdXJyZW50SGFzaHRhYmxlKSwgIlxuIikpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBjdXJyZW50SGFzaHRhYmxlOwogICAgICAgICAgICAgfQogCkBAIC0zNDYs
NyArMzQ2LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51bVRocmVhZHMp
CiAgICAgSGFzaHRhYmxlKiBvbGRIYXNodGFibGUgPSBoYXNodGFibGUubG9hZCgpOwogICAgIGlm
IChvbGRIYXNodGFibGUgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihvbGRIYXNodGFibGUtPnNpemUp
IC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihudW1UaHJlYWRzKSA+PSBtYXhMb2FkRmFjdG9yKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50
VGhyZWFkKCksICI6IG5vIG5lZWQgdG8gcmVoYXNoIGJlY2F1c2UgIiwgb2xkSGFzaHRhYmxlLT5z
aXplLCAiIC8gIiwgbnVtVGhyZWFkcywgIiA+PSAiLCBtYXhMb2FkRmFjdG9yLCAiXG4iKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBubyBuZWVk
IHRvIHJlaGFzaCBiZWNhdXNlICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVh
ZHMsICIgPj0gIiwgbWF4TG9hZEZhY3RvciwgIlxuIikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVk
IG51bVRocmVhZHMpCiAgICAgb2xkSGFzaHRhYmxlID0gaGFzaHRhYmxlLmxvYWQoKTsKICAgICBp
ZiAob2xkSGFzaHRhYmxlICYmIHN0YXRpY19jYXN0PGRvdWJsZT4ob2xkSGFzaHRhYmxlLT5zaXpl
KSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obnVtVGhyZWFkcykgPj0gbWF4TG9hZEZhY3Rvcikgewog
ICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVu
dFRocmVhZCgpLCAiOiBhZnRlciBsb2NraW5nLCBubyBuZWVkIHRvIHJlaGFzaCBiZWNhdXNlICIs
IG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMsICIgPj0gIiwgbWF4TG9hZEZh
Y3RvciwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJl
bnQoKSwgIjogYWZ0ZXIgbG9ja2luZywgbm8gbmVlZCB0byByZWhhc2ggYmVjYXVzZSAiLCBvbGRI
YXNodGFibGUtPnNpemUsICIgLyAiLCBudW1UaHJlYWRzLCAiID49ICIsIG1heExvYWRGYWN0b3Is
ICJcbiIpKTsKICAgICAgICAgdW5sb2NrSGFzaHRhYmxlKGJ1Y2tldHNUb1VubG9jayk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIGVuc3VyZUhhc2h0
YWJsZVNpemUodW5zaWduZWQgbnVtVGhyZWFkcykKICAgICAKICAgICBIYXNodGFibGUqIG5ld0hh
c2h0YWJsZSA9IEhhc2h0YWJsZTo6Y3JlYXRlKG5ld1NpemUpOwogICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBuZXcg
aGFzaHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKKyAgICAgICAg
ZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3JlYXRlZCBuZXcgaGFzaHRh
YmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKICAgICBmb3IgKFRocmVh
ZERhdGEqIHRocmVhZERhdGEgOiB0aHJlYWREYXRhcykgewogICAgICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiByZWhhc2hp
bmcgdGhyZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3Mg
PSAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAg
ICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiByZWhhc2hpbmcgdGhyZWFk
IGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQ
b2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CiAgICAgICAgIHVuc2lnbmVkIGhh
c2ggPSBoYXNoQWRkcmVzcyh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBoYXNoICUgbmV3SGFzaHRhYmxlLT5zaXplOwogICAgICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBpbmRleCA9
ICIsIGluZGV4LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6
Y3VycmVudCgpLCAiOiBpbmRleCA9ICIsIGluZGV4LCAiXG4iKSk7CiAgICAgICAgIEJ1Y2tldCog
YnVja2V0ID0gbmV3SGFzaHRhYmxlLT5kYXRhW2luZGV4XS5sb2FkKCk7CiAgICAgICAgIGlmICgh
YnVja2V0KSB7CiAgICAgICAgICAgICBpZiAocmV1c2FibGVCdWNrZXRzLmlzRW1wdHkoKSkKQEAg
LTQ4NSw3ICs0ODUsNyBAQCBib29sIGVucXVldWUoY29uc3Qgdm9pZCogYWRkcmVzcywgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFk
KCksICI6IGVucXVldWVpbmcgb250byBidWNrZXQgIiwgUmF3UG9pbnRlcihidWNrZXQpLCAiIHdp
dGggaW5kZXggIiwgaW5kZXgsICIgZm9yIGFkZHJlc3MgIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwg
IiB3aXRoIGhhc2ggIiwgaGFzaCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyBvbnRvIGJ1Y2tldCAiLCBSYXdQb2lu
dGVyKGJ1Y2tldCksICIgd2l0aCBpbmRleCAiLCBpbmRleCwgIiBmb3IgYWRkcmVzcyAiLCBSYXdQ
b2ludGVyKGFkZHJlc3MpLCAiIHdpdGggaGFzaCAiLCBoYXNoLCAiXG4iKSk7CiAgICAgICAgIGJ1
Y2tldC0+bG9jay5sb2NrKCk7CiAKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaGFzaHRh
YmxlIGNvdWxkIGhhdmUgcmVoYXNoZWQgdW5kZXIgdXMuCkBAIC00OTgsNyArNDk4LDcgQEAgYm9v
bCBlbnF1ZXVlKGNvbnN0IHZvaWQqIGFkZHJlc3MsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAg
ICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICBpZiAodGhyZWFkRGF0YSkgewogICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50
VGhyZWFkKCksICI6IHByb2NlZWRpbmcgdG8gZW5xdWV1ZSAiLCBSYXdQb2ludGVyKHRocmVhZERh
dGEpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1
cnJlbnQoKSwgIjogcHJvY2VlZGluZyB0byBlbnF1ZXVlICIsIFJhd1BvaW50ZXIodGhyZWFkRGF0
YSksICJcbiIpKTsKICAgICAgICAgICAgIGJ1Y2tldC0+ZW5xdWV1ZSh0aHJlYWREYXRhKTsKICAg
ICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNTY3LDcgKzU2Nyw3
IEBAIE5FVkVSX0lOTElORSBQYXJraW5nTG90OjpQYXJrUmVzdWx0IFBhcmtpbmdMb3Q6OnBhcmtD
b25kaXRpb25hbGx5SW1wbCgKICAgICBjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIHRp
bWVvdXQpCiB7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3Vy
cmVudFRocmVhZCgpLCAiOiBwYXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5n
KFRocmVhZDo6Y3VycmVudCgpLCAiOiBwYXJraW5nLlxuIikpOwogICAgIAogICAgIFRocmVhZERh
dGEqIG1lID0gbXlUaHJlYWREYXRhKCk7CiAgICAgbWUtPnRva2VuID0gMDsKQEAgLTY2MSw3ICs2
NjEsNyBAQCBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6UGFya1Jlc3VsdCBQYXJraW5nTG90Ojpw
YXJrQ29uZGl0aW9uYWxseUltcGwoCiBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6VW5wYXJrUmVz
dWx0IFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKQogewogICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjog
dW5wYXJraW5nIG9uZS5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1
cnJlbnQoKSwgIjogdW5wYXJraW5nIG9uZS5cbiIpKTsKICAgICAKICAgICBVbnBhcmtSZXN1bHQg
cmVzdWx0OwogCkBAIC03MDYsNyArNzA2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgUGFya2luZ0xv
dDo6dW5wYXJrT25lSW1wbCgKICAgICBjb25zdCBTY29wZWRMYW1iZGE8aW50cHRyX3QoUGFya2lu
Z0xvdDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJraW5nIG9uZSB0
aGUgaGFyZCB3YXkuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJy
ZW50KCksICI6IHVucGFya2luZyBvbmUgdGhlIGhhcmQgd2F5LlxuIikpOwogICAgIAogICAgIFJl
ZlB0cjxUaHJlYWREYXRhPiB0aHJlYWREYXRhOwogICAgIGJvb2wgdGltZVRvQmVGYWlyID0gZmFs
c2U7CkBAIC03NTEsNyArNzUxLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6
OnVucGFya0NvdW50KGNvbnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICAgICAg
cmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJp
bmcoY3VycmVudFRocmVhZCgpLCAiOiB1bnBhcmtpbmcgY291bnQgPSAiLCBjb3VudCwgIiBmcm9t
ICIsIFJhd1BvaW50ZXIoYWRkcmVzcyksICIuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJp
bmcoVGhyZWFkOjpjdXJyZW50KCksICI6IHVucGFya2luZyBjb3VudCA9ICIsIGNvdW50LCAiIGZy
b20gIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpKTsKICAgICAKICAgICBWZWN0b3I8UmVm
UHRyPFRocmVhZERhdGE+LCA4PiB0aHJlYWREYXRhczsKICAgICBkZXF1ZXVlKApAQCAtNzYxLDcg
Kzc2MSw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChj
b25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3VuCiAgICAgICAgIEJ1Y2tldE1vZGU6Okln
bm9yZUVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQsIGJvb2wpIHsKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmco
Y3VycmVudFRocmVhZCgpLCAiOiBPYnNlcnZpbmcgZWxlbWVudCB3aXRoIGFkZHJlc3MgPSAiLCBS
YXdQb2ludGVyKGVsZW1lbnQtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0
YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogT2JzZXJ2aW5nIGVsZW1lbnQgd2l0
aCBhZGRyZXNzID0gIiwgUmF3UG9pbnRlcihlbGVtZW50LT5hZGRyZXNzKSwgIlxuIikpOwogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPmFkZHJlc3MgIT0gYWRkcmVzcykKICAgICAgICAgICAgICAg
ICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICAgICAgdGhyZWFkRGF0YXMu
YXBwZW5kKGVsZW1lbnQpOwpAQCAtNzczLDcgKzc3Myw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25l
ZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBj
b3VuCiAKICAgICBmb3IgKFJlZlB0cjxUaHJlYWREYXRhPiYgdGhyZWFkRGF0YSA6IHRocmVhZERh
dGFzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhjdXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEu
Z2V0KCkpLCAiIHdpdGggYWRkcmVzcyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3Mp
LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgp
LCAiOiB1bnBhcmtpbmcgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLmdldCgpKSwgIiB3aXRoIGFk
ZHJlc3MgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLT5hZGRyZXNzKSwgIlxuIikpOwogICAgICAg
ICBBU1NFUlQodGhyZWFkRGF0YS0+YWRkcmVzcyk7CiAgICAgICAgIHsKICAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcih0aHJlYWREYXRhLT5wYXJraW5nTG9jayk7CkBAIC03ODMsNyArNzgz
LDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVucGFya0NvdW50KGNvbnN0
IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICB9CiAKICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRvbmUgdW5wYXJr
aW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAi
OiBkb25lIHVucGFya2luZy5cbiIpKTsKICAgICAKICAgICByZXR1cm4gdGhyZWFkRGF0YXMuc2l6
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIu
aCBiL1NvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmgKaW5kZXggOTdhMjQzYjkw
YmNhYzAwYjJkN2VlY2RmMjdlMDQyNWZjNTJkNjdhNy4uYmVmOWNiYzJlMzQ3MGVkYjY5OTQzMjg0
NDViZDllODAxN2I2MjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9j
a0FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oCkBA
IC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAKICAgICB2
b2lkIGxvY2soKQogICAgIHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRU
aHJlYWQoKTsKLSAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBt
ZSA9IFRocmVhZDo6Y3VycmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAg
ICAgICAgICAgIG1fcmVjdXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZWN1cnNpdmVMb2NrQWRhcHRlciB7CiAgICAg
ICAgIG1fbG9jay5sb2NrKCk7CiAgICAgICAgIEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFT
U0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAg
bV9vd25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1cnNpb25Db3VudCA9IDE7CiAgICAgfQogICAg
IApAQCAtNTUsMTQgKzU1LDE0IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICB7
CiAgICAgICAgIGlmICgtLW1fcmVjdXJzaW9uQ291bnQpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIG1fb3duZXIgPSAwOworICAgICAgICBtX293bmVyID0gbnVsbHB0cjsKICAgICAgICAg
bV9sb2NrLnVubG9jaygpOwogICAgIH0KICAgICAKICAgICBib29sIHRyeUxvY2soKQogICAgIHsK
LSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAg
aWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9IFRocmVhZDo6Y3VycmVu
dCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAgICAgICAgIG1fcmVjdXJz
aW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC03Miw3
ICs3Miw3IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0g
ICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9vd25lciA9ICZtZTsKICAgICAgICAgbV9y
ZWN1cnNpb25Db3VudCA9IDE7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTgzLDcg
KzgzLDcgQEAgY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgewogICAgIH0KICAgICAKIHByaXZh
dGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX293bmVyIHsgMCB9OworICAgIFRocmVhZCogbV9v
d25lciB7IG51bGxwdHIgfTsgLy8gVXNlIFRocmVhZCogaW5zdGVhZCBvZiBSZWZQdHI8VGhyZWFk
PiBzaW5jZSBvd25lciB0aHJlYWQgaXMgYWx3YXlzIGFsaXZlIHdoaWxlIG1fb253ZXIgaXMgZXQu
CiAgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsKICAgICBMb2NrVHlwZSBtX2xv
Y2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMGJlNWExMGVkMGY3MjVmOGQzZTE3ZTFjZjE5
YWIyMDlhOTAwYTgyOS4uYzU2ZjE1NmRkOWNiZWM0OTk5Njk3YzZkNTQ5ZTg3NTZmNzNiMjlmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgcW9zX2NsYXNzX3QgVGhyZWFk
OjphZGp1c3RlZFFPU0NsYXNzKHFvc19jbGFzc190IG9yaWdpbmFsQ2xhc3MpCiAKIHZvaWQgVGhy
ZWFkOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1faWQp
OworICAgIG91dC5wcmludCgiVGhyZWFkOiIsIFJhd1BvaW50ZXIodGhpcykpOwogfQogCiAjaWYg
IUhBVkUoRkFTVF9UTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGVlMTMwM2ExOTFiMDlkNGVjOWRkYzg3
Y2NjODgxNTQyOTdmYTIzMDYuLjlkNTk1Mzc5NmVkNTgyNjg0NzY3OTBjMjAxNGFmZTkwNmM4OTRl
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCkBAIC04MCw3ICs4MCw5IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFk
R3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogICAgIGZyaWVuZCBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgT1MoV0lO
RE9XUykKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbihUaHJlYWRJZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5UaHJlYWQoKTsKIApAQCAtOTEsMTIgKzkzLDE2IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAvLyBSZXR1cm5zIFRocmVhZCBv
YmplY3QuCiAgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCisjaWYgT1MoV0lORE9XUykK
ICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBp
ZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4g
QXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJ
ZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQogICAgIC8vIHRoYXQgdGhlIHRocmVhZCBpbmZvcm1h
dGlvbiBpcyBhbGl2ZS4gV2hpbGUgVGhyZWFkOjpjdXJyZW50KCkgaXMgbm90IHNhZmUgaWYgaXQg
aXMgY2FsbGVkCiAgICAgLy8gZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3RoZXIgVExTIGRh
dGEsIGN1cnJlbnRJRCgpIGFsd2F5cyByZXR1cm5zIG1lYW5pbmdmdWwgdGhyZWFkIElELgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsK
IAorICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisjZW5k
aWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNoYW5nZVByaW9yaXR5KGludCk7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaCgpOwpAQCAtMTM3LDE2ICsxNDMsMTQgQEAgY2xhc3Mg
VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIAotICAg
IFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0KICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgVGhyZWFkJiB0aHJlYWQpCiAgICAgewotICAgICAgICByZXR1cm4g
aWQoKSA9PSB0aHJlYWQuaWQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMgPT0gJnRocmVhZDsKICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGhyZWFkJiB0aHJlYWQpCiAgICAgewot
ICAgICAgICByZXR1cm4gaWQoKSAhPSB0aHJlYWQuaWQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMg
IT0gJnRocmVhZDsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1U
aHJlYWRpbmcoKTsKQEAgLTI4MCw3ICsyODQsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAKICAgICAvLyBXb3JkTG9jayAmIExvY2sgcmVs
eSBvbiBUaHJlYWRTcGVjaWZpYy4gQnV0IFRocmVhZCBvYmplY3QgY2FuIGJlIGRlc3Ryb3llZCBl
dmVuIGFmdGVyIFRocmVhZFNwZWNpZmljIHRoaW5ncyBhcmUgZGVzdHJveWVkLgogICAgIHN0ZDo6
bXV0ZXggbV9tdXRleDsKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAwIH07CiAgICAgSm9p
bmFibGVTdGF0ZSBtX2pvaW5hYmxlU3RhdGUgeyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9pc1No
dXR0aW5nRG93biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwpAQCAt
Mjg4LDcgKzI5MSw5IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWQ+IHsKICAgICBTdGFja0JvdW5kcyBtX3N0YWNrIHsgU3RhY2tCb3VuZHM6OmVtcHR5
Qm91bmRzKCkgfTsKICAgICBWZWN0b3I8c3RkOjp3ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhy
ZWFkR3JvdXBzOwogICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxlOwotI2lmIE9TKERB
UldJTikKKyNpZiBPUyhXSU5ET1dTKQorICAgIFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsK
KyNlbGlmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwogI2Vs
aWYgVVNFKFBUSFJFQURTKQogICAgIFBsYXRmb3JtUmVnaXN0ZXJzKiBtX3BsYXRmb3JtUmVnaXN0
ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMzA3LDExICszMTIsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgdm9pZCogbV9zYXZlZExhc3RT
dGFja1RvcDsKIH07CiAKLWlubGluZSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQot
ewotICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnRJRCgpOwotfQotCiBpbmxpbmUgVGhyZWFkKiBU
aHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQogewogI2lmICFIQVZFKEZBU1RfVExTKQpAQCAtMzQ1
LDExICszNDUsMTAgQEAgaW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6
VGhyZWFkOwotdXNpbmcgV1RGOjpjdXJyZW50VGhyZWFkOwogCiAjaWYgT1MoV0lORE9XUykKK3Vz
aW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwogdXNp
bmcgV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oCmluZGV4IDZlODhhYTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZhZGMz
MGM2ZDIuLjRhY2UyOGYxZjU5Zjg4Njk3MDkxMDA4YTBhMGIxMjAxMGM5NzYyYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKLXVzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFRocmVh
ZEZ1bmN0aW9uID0gdm9pZCAoKikodm9pZCogYXJndW1lbnQpOwogCiAjaWYgVVNFKFBUSFJFQURT
KQpAQCAtNTMsNiArNTIsNyBAQCB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRf
dDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0Zm9y
bUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90OwogI2VsaWYgT1MoV0lORE9XUykKK3VzaW5nIFRo
cmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0g
SEFORExFOwogc3RydWN0IFBsYXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04gbV9p
bnRlcm5hbE11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDgzYjlk
NTA5OTUyNWIwNmI2MGU5MTEwM2RkZjUyNjQ5YmE5MDgwM2MuLjJjNTYyZTY2OWQwYTE3MzU1ODdi
NjY0MzIzZWFmMTM2ODhkMTYyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAK
QEAgLTI4MCw5ICsyODAsOSBAQCBpbnQgVGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbigpCiAgICAg
aW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pvaW4oaGFuZGxlLCAwKTsKIAogICAgIGlmIChqb2lu
UmVzdWx0ID09IEVERUFETEspCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAl
dSB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAg
ICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlp
bmcgdG8gcXVpdCIsIHRoaXMpOwogICAgIGVsc2UgaWYgKGpvaW5SZXN1bHQpCi0gICAgICAgIExP
R19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIs
IG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGpv
aW5lZC5cbiIsIHRoaXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tl
cihtX211dGV4KTsKICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAg
LTMwMCw3ICszMDAsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwogICAgIGludCBkZXRhY2hSZXN1bHQgPSBw
dGhyZWFkX2RldGFjaChtX2hhbmRsZSk7CiAgICAgaWYgKGRldGFjaFJlc3VsdCkKLSAgICAgICAg
TE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyB1bmFibGUgdG8gYmUgZGV0YWNoZWRc
biIsIG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJl
IGRldGFjaGVkXG4iLCB0aGlzKTsKIAogICAgIGlmICghaGFzRXhpdGVkKCkpCiAgICAgICAgIGRp
ZEJlY29tZURldGFjaGVkKCk7CkBAIC0zMTcsMTEgKzMxNyw2IEBAIFRocmVhZCYgVGhyZWFkOjpp
bml0aWFsaXplQ3VycmVudFRMUygpCiAgICAgcmV0dXJuIGluaXRpYWxpemVUTFMoV1RGTW92ZSh0
aHJlYWQpKTsKIH0KIAotVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCi17Ci0g
ICAgcmV0dXJuIGN1cnJlbnQoKS5pZCgpOwotfQotCiBib29sIFRocmVhZDo6c2lnbmFsKGludCBz
aWduYWxOdW1iZXIpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlciht
X211dGV4KTsKQEAgLTMzMyw3ICszMjgsNyBAQCBib29sIFRocmVhZDo6c2lnbmFsKGludCBzaWdu
YWxOdW1iZXIpCiAKIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9pZCwgUGxh
dGZvcm1TdXNwZW5kRXJyb3I+CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGlk
KCkgIT0gY3VycmVudFRocmVhZCgpLCAiV2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUg
Y3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FH
RSh0aGlzICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1c3BlbmRp
bmcgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICAvLyBEdXJpbmcgc3VzcGVuZCwg
c3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9tIHRoZSBvdGhlciB0
aHJlYWRzLgogICAgIC8vIFdlIHVzZSBnbG9iYWwgbG9jayBpbnN0ZWFkIG9mIHBlciB0aHJlYWQg
bG9jay4KICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNhc2UsIHRoZXJlIGFyZSB0aHJl
YWRzIEEgYW5kIEIuCkBAIC00NTEsMTMgKzQ0Niw5IEBAIHZvaWQgVGhyZWFkOjplc3RhYmxpc2hQ
bGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCBoYW5kbGUpCiB7CiAgICAgc3RkOjpsb2Nr
X2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBtX2hhbmRsZSA9IGhhbmRs
ZTsKLSAgICBpZiAoIW1faWQpIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6YXRvbWljPFRocmVhZElk
ZW50aWZpZXI+IHByb3ZpZGVyIHsgMCB9OwotICAgICAgICBtX2lkID0gKytwcm92aWRlcjsKICNp
ZiBPUyhEQVJXSU4pCi0gICAgICAgIG1fcGxhdGZvcm1UaHJlYWQgPSBwdGhyZWFkX21hY2hfdGhy
ZWFkX25wKGhhbmRsZSk7CisgICAgbV9wbGF0Zm9ybVRocmVhZCA9IHB0aHJlYWRfbWFjaF90aHJl
YWRfbnAoaGFuZGxlKTsKICNlbmRpZgotICAgIH0KIH0KIAogI2lmICFIQVZFKEZBU1RfVExTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggYmVjMGQzNDNkYWU1ZWVkNDFmOTUxYjNlOTZiZGZm
ZjA1NjU3ZDgxNy4uYTgxNTkwNDA2OTY3ZDZlODU2NjkxNTM3ZTIwY2M1ZTgxZTFiOWMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgaW50IFRocmVhZDo6d2Fp
dEZvckNvbXBsZXRpb24oKQogCiAgICAgRFdPUkQgam9pblJlc3VsdCA9IFdhaXRGb3JTaW5nbGVP
YmplY3QoaGFuZGxlLCBJTkZJTklURSk7CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gV0FJVF9GQUlM
RUQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQgdG8g
YmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0dfRVJST1Io
IlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIHRo
aXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsK
ICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTIxNiw3ICsyMTYs
NyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKIAogYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBF
eHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsKLSAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX01FU1NBR0UoaWQoKSAhPSBjdXJyZW50VGhyZWFkKCksICJXZSBkbyBub3Qgc3VwcG9y
dCBzdXNwZW5kaW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7CisgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMgIT0gJlRocmVhZDo6Y3VycmVudCgpLCAiV2UgZG8gbm90
IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOwogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKICAgICBEV09SRCByZXN1bHQgPSBT
dXNwZW5kVGhyZWFkKG1faGFuZGxlKTsKICAgICBpZiAocmVzdWx0ICE9IChEV09SRCktMSkKQEAg
LTI5Myw3ICsyOTMsNyBAQCBUaHJlYWQqIFRocmVhZDo6Y3VycmVudER5aW5nKCkKICAgICBBU1NF
UlQoc19rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKICAgICAvLyBBZnRlciBGTFMg
aXMgZGVzdHJveWVkLCB0aGlzIG1hcCBvZmZlcnMgdGhlIHZhbHVlIHVudGlsIHRoZSBzZWNvbmQg
dGhyZWFkIGV4aXQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6
Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgcmV0dXJuIHRocmVhZE1hcCgp
LmdldChjdXJyZW50VGhyZWFkKCkpOworICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoY3VycmVu
dElEKCkpOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2RlIG9uY2Ug
PHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJl
YWRNYWMubW0KaW5kZXggMzFkODE0YmY3YTdiOTY1Nzk1MmU4NWY4ZGZkNjQ2MDg4ZTNlZDcyNS4u
MTQyMTU5MGJjZTdkMzVlYWEzMDdhZjY4Yjk3MGU5NWM2MmJkOTRkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KKysrIGIvU291cmNlL1dURi93dGYvbWFj
L01haW5UaHJlYWRNYWMubW0KQEAgLTY2LDggKzY2LDggQEAgc3RhdGljIHB0aHJlYWRfdCBtYWlu
VGhyZWFkUHRocmVhZDsKIHN0YXRpYyBOU1RocmVhZCogbWFpblRocmVhZE5TVGhyZWFkOwogCiAj
aWYgVVNFKFdFQl9USFJFQUQpCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzQXBwbGljYXRpb25V
SVRocmVhZElkZW50aWZpZXI7Ci1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzV2ViVGhyZWFkSWRl
bnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIHNBcHBsaWNhdGlvblVJVGhyZWFkOworc3RhdGljIFRo
cmVhZCogc1dlYlRocmVhZDsKICNlbmRpZgogCiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxh
dGZvcm0oKQpAQCAtMTczLDE2ICsxNzMsMTAgQEAgYm9vbCBpc1dlYlRocmVhZCgpCiAgICAgcmV0
dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5UaHJlYWRQdGhyZWFkKTsKIH0K
IAotdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKQordm9pZCBp
bml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpCiB7CiAgICAgQVNTRVJUKHB0aHJlYWRfbWFp
bl9ucCgpKTsKLSAgICBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhy
ZWFkKCk7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZVdlYlRocmVhZElkZW50aWZpZXIoKQotewotICAg
IEFTU0VSVCghcHRocmVhZF9tYWluX25wKCkpOwotICAgIHNXZWJUaHJlYWRJZGVudGlmaWVyID0g
Y3VycmVudFRocmVhZCgpOworICAgIHNBcHBsaWNhdGlvblVJVGhyZWFkID0gJlRocmVhZDo6Y3Vy
cmVudCgpOwogfQogCiB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCkBAIC0xOTIs
MTYgKzE4NiwxOCBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCiAgICAgbWFp
blRocmVhZEVzdGFibGlzaGVkQXNQdGhyZWFkTWFpbiA9IGZhbHNlOwogICAgIG1haW5UaHJlYWRQ
dGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CiAgICAgbWFpblRocmVhZE5TVGhyZWFkID0gW1tOU1Ro
cmVhZCBjdXJyZW50VGhyZWFkXSByZXRhaW5dOworCisgICAgc1dlYlRocmVhZCA9ICZUaHJlYWQ6
OmN1cnJlbnQoKTsKIH0KIAotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQo
VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRh
Rm9yVGhyZWFkKFRocmVhZCYgdGhyZWFkKQogewotICAgIFRocmVhZElkZW50aWZpZXIgY3VycmVu
dFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIGlmICh0aHJlYWRJZCA9PSBjdXJyZW50
VGhyZWFkSWQpCisgICAgVGhyZWFkJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CisgICAgaWYgKHRocmVhZCA9PSBjdXJyZW50VGhyZWFkKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGlmICh0aHJlYWRJZCA9PSBzV2ViVGhyZWFkSWRlbnRpZmllciB8fCB0aHJlYWRJZCA9
PSBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiAoY3VycmVu
dFRocmVhZElkID09IHNXZWJUaHJlYWRJZGVudGlmaWVyIHx8IGN1cnJlbnRUaHJlYWRJZCA9PSBz
QXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpICYmIHdlYlRocmVhZElzVW5pbml0aWFsaXpl
ZE9yTG9ja2VkT3JEaXNhYmxlZCgpOworICAgIGlmICgmdGhyZWFkID09IHNXZWJUaHJlYWQgfHwg
JnRocmVhZCA9PSBzQXBwbGljYXRpb25VSVRocmVhZCkKKyAgICAgICAgcmV0dXJuICgmY3VycmVu
dFRocmVhZCA9PSBzV2ViVGhyZWFkIHx8ICZjdXJyZW50VGhyZWFkID09IHNBcHBsaWNhdGlvblVJ
VGhyZWFkKSAmJiB3ZWJUaHJlYWRJc1VuaW5pdGlhbGl6ZWRPckxvY2tlZE9yRGlzYWJsZWQoKTsK
IAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTNmMzEyMTU2YzY0OGZmMjUy
YTg2Y2I0ZWRlZGE2NGM4MWU5N2YwMi4uNWRlNjlhODJkNDhlMDQ5NTFjYTA4ZjZjYTYzZTM5ZWZh
MWY0NmRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTM1LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQkFjdGl2ZURPTU9iamVjdCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogcHVibGljOgotICAgIFRocmVhZElkZW50aWZpZXIgb3JpZ2luVGhyZWFkSUQoKSBjb25zdCB7
IHJldHVybiBtX29yaWdpblRocmVhZElEOyB9CisgICAgVGhyZWFkJiBvcmlnaW5UaHJlYWQoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZC5nZXQoKTsgfQogCiAgICAgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCkgZmluYWwgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9v
cmlnaW5UaHJlYWQuZ2V0KCkpOwogCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dExvY2spOwogICAgICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHRE
ZXN0cm95ZWQoKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0IDog
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gUGFyYW1ldGVycywgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZvaWQgcGVyZm9y
bUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoVCYgb2JqZWN0LCB2b2lkIChUOjoqbWV0aG9kKShQYXJh
bWV0ZXJzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKG9yaWdpblRocmVhZElEKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZElEKCkpOworICAgICAg
ICBBU1NFUlQob3JpZ2luVGhyZWFkKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZCgpKTsKIAotICAg
ICAgICBpZiAob2JqZWN0Lm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7Cisg
ICAgICAgIGlmIChvYmplY3Qub3JpZ2luVGhyZWFkKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpIHsK
ICAgICAgICAgICAgIChvYmplY3QuKm1ldGhvZCkoYXJndW1lbnRzLi4uKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBJREJBY3RpdmVET01P
YmplY3QgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIAogICAgIHZvaWQgY2FsbEZ1bmN0aW9u
T25PcmlnaW5UaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIHsK
LSAgICAgICAgaWYgKG9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7CisgICAg
ICAgIGlmIChvcmlnaW5UaHJlYWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSkgewogICAgICAgICAg
ICAgZnVuY3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODcsNyAr
ODcsNyBAQCBjbGFzcyBJREJBY3RpdmVET01PYmplY3QgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX29yaWdpblRocmVh
ZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9vcmlnaW5UaHJlYWQg
eyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogICAgIExvY2sgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
TG9jazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCmluZGV4IDYyZmExNTFjYWIwOTdiZjQ5ZGUzMTExYzczOTBjNGExZTdlMDRjZWYuLmZj
MDZiMzEzMDMzM2U3ODQ2M2VkNjNjNGU5NDBjNTU2NDg5MmEwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtNjEsNyArNjEsNyBAQCBJ
REJDdXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQk9iamVj
dFN0b3JlJiBvYmplY3RTdG9yZSwgYwogICAgICwgbV9pbmZvKGluZm8pCiAgICAgLCBtX3NvdXJj
ZSgmb2JqZWN0U3RvcmUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3Rp
dmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUo
KS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgc3VzcGVu
ZElmTmVlZGVkKCk7CiB9CkBAIC03MSwxOSArNzEsMTkgQEAgSURCQ3Vyc29yOjpJREJDdXJzb3Io
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQkN1
cnMKICAgICAsIG1faW5mbyhpbmZvKQogICAgICwgbV9zb3VyY2UoJmluZGV4KQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKTsKIAogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBJREJDdXJz
b3I6On5JREJDdXJzb3IoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0
aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3Jl
KCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIH0KIAogYm9vbCBJ
REJDdXJzb3I6OnNvdXJjZXNEZWxldGVkKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBlZmZl
Y3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSk7CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZSwKICAgICAgICAgW10gKGNv
bnN0IFJlZlB0cjxJREJPYmplY3RTdG9yZT4mIG9iamVjdFN0b3JlKSB7IHJldHVybiBvYmplY3RT
dG9yZS0+aXNEZWxldGVkKCk7IH0sCkBAIC0xMDEsMTQgKzEwMSwxNCBAQCBJREJPYmplY3RTdG9y
ZSYgSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpIGNvbnN0CiAKIElEQlRyYW5zYWN0
aW9uJiBJREJDdXJzb3I6OnRyYW5zYWN0aW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBl
ZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSk7CiAgICAgcmV0dXJuIGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKTsK
IH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJD
dXJzb3I6OnVwZGF0ZSIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZl
T2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCku
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChzb3Vy
Y2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ3VwZGF0ZScgb24gJ0lEQkN1cnNv
cic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVl
biBkZWxldGVkLiIpIH07CkBAIC0xNDksNyArMTQ5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogRXhjZXB0aW9uT3I8dm9pZD4gSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmFkdmFuY2UiKTsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkBAIC0yMzQsNyArMjM0LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlY1N0YXRl
LCBKU1ZhbHVlIGtleVYKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGludWVGdW5j
dGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1
cnNvcjo6Y29udGludWVGdW5jdGlvbiAodG8ga2V5ICVzKSIsIGtleS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVP
YmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3Jl
cXVlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpA
QCAtMjY4LDcgKzI2OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAKIHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNr
ZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgY291bnQpCiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRy
YW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgKyttX291dHN0YW5kaW5nUmVxdWVzdENv
dW50OwogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJh
dGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBjb3VudCkKIAogdm9pZCBJ
REJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBj
b25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2
ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsK
IAogICAgICsrbV9vdXRzdGFuZGluZ1JlcXVlc3RDb3VudDsKIApAQCAtMjg5LDcgKzI4OSw3IEBA
IHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURhdGEm
IGtleSwgY29uc3QgSURCS2V5RGF0YSYKIEV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJREJSZXF1
ZXN0Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgaWYgKHNvdXJjZXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8g
ZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURCQ3Vyc29yJzogVGhlIGN1cnNvcidzIHNvdXJjZSBvciBl
ZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTMyMCw3ICsz
MjAsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZQogdm9pZCBJREJDdXJzb3I6OnNldEdldFJl
c3VsdChJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50
IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygw
LCAxMDApLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0
b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGF1
dG8qIGNvbnRleHQgPSByZXF1ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAo
IWNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKaW5kZXggOGY2ZTc3NWRhMmRjNzJmMTYwNTg0YTViYzgyZGFlNjdlNjE5MjQ0My4u
YTAwOGRkZjYzZjhkNDdmNTcwOTU5NzJkNzU4NWQyNWNmYTU0ZDQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgSURCQ2xpZW50OjpJREJDb25uZWN0aQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNl
KCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAoIW1fY2xvc2VkSW5TZXJ2ZXIpCiAgICAgICAgIG1fY29ubmVjdGlvblByb3h5LT5kYXRhYmFz
ZUNvbm5lY3Rpb25DbG9zZWQoKnRoaXMpOwpAQCAtNzQsNyArNzQsNyBAQCBJREJEYXRhYmFzZTo6
fklEQkRhdGFiYXNlKCkKIAogYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkg
fHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKIAogICAgIGlmIChtX2Nsb3NlZEluU2Vy
dmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NywxOSArODcsMTkgQEAgYm9vbCBJREJE
YXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogY29uc3QgU3RyaW5nIElEQkRh
dGFiYXNlOjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9CiAKIHVpbnQ2NF90IElEQkRh
dGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKIFJlZlB0cjxE
T01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
ICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVOYW1lcygpKQpAQCAtMTEw
LDcgKzExMCw3IEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3Rv
cmVOYW1lcygpIGNvbnN0CiAKIHZvaWQgSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKElE
Qk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV92ZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgIEFTU0VSVChtX2luZm8uaGFzT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmUuaW5mbygpLm5hbWUoKSkpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJ
REJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3Jl
LCBjb25zdCBTdHJpbmcmIG4KIAogdm9pZCBJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoSURCSW5k
ZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbik7CiAgICAgQVNTRVJUKG1faW5mby5oYXNPYmplY3RTdG9yZShpbmRleC5vYmplY3RTdG9y
ZSgpLmluZm8oKS5uYW1lKCkpKTsKICAgICBBU1NFUlQobV9pbmZvLmluZm9Gb3JFeGlzdGluZ09i
amVjdFN0b3JlKGluZGV4Lm9iamVjdFN0b3JlKCkuaW5mbygpLm5hbWUoKSktPmhhc0luZGV4KGlu
ZGV4LmluZm8oKS5uYW1lKCkpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCT2JqZWN0U3RvcmU+PiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUgLSAoJXMgJXMpIiwgbV9pbmZvLm5hbWUoKS51dGY4KCkuZGF0YSgpLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIGlmICghbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24pCkBAIC0xNjUsNyArMTY1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlRy
YW5zYWN0aW9uPj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFN0cmluZ09yVmVjdG9yT2ZTdHJp
bmcKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uIik7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9j
bG9zZVBlbmRpbmcpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAndHJhbnNhY3Rpb24nIG9uICdJREJE
YXRhYmFzZSc6IFRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3NpbmcuIikgfTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBB
U0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdkZWxldGVPYmplY3RTdG9yZScgb24gJ0lE
QkRhdGFiYXNlJzogVGhlIGRhdGFiYXNlIGlzIG5vdCBydW5uaW5nIGEgdmVyc2lvbiBjaGFuZ2Ug
dHJhbnNhY3Rpb24uIikgfTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpj
bG9zZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjbG9zZSAtICUiIFBS
SXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghbV9jbG9zZVBlbmRpbmcpIHsK
ICAgICAgICAgbV9jbG9zZVBlbmRpbmcgPSB0cnVlOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoY29uc3QgSURCRXJyb3ImIGVycm9y
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y29ubmVjdGlvblRvU2VydmVy
TG9zdCAtICUiIFBSSXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fY2xvc2VQZW5k
aW5nID0gdHJ1ZTsKICAgICBtX2Nsb3NlZEluU2VydmVyID0gdHJ1ZTsKQEAgLTI4NCw3ICsyODQs
NyBAQCB2b2lkIElEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIoKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyIC0gJSIgUFJJdTY0LCBt
X2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fY2xvc2VkSW5TZXJ2ZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTMwMSwxMyArMzAxLDEzIEBAIHZvaWQgSURCRGF0YWJhc2U6Om1heWJlQ2xv
c2VJblNlcnZlcigpCiAKIGNvbnN0IGNoYXIqIElEQkRhdGFiYXNlOjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7
CiAgICAgcmV0dXJuICJJREJEYXRhYmFzZSI7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHZhbHVlIHdpbGwg
c29tZXRpbWVzIGJlIGZhbHNlIHdoZW4gZGF0YWJhc2Ugb3BlcmF0aW9ucyBhcmUgYWN0dWFsbHkg
aW4gcHJvZ3Jlc3MuCiAgICAgLy8gU3VjaCBkYXRhYmFzZSBvcGVyYXRpb25zIGRvIG5vdCB5ZXQg
ZXhpc3QuCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6c3RvcCgpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpzdG9wIC0gJSIgUFJJdTY0LCBtX2RhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKIApAQCAtMzQx
LDcgKzM0MSw3IEBAIFJlZjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0CiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiAlcyIsIGluZm8u
aWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQoaW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rp
b25Nb2RlOjpWZXJzaW9uY2hhbmdlKTsKICAgICBBU1NFUlQoIW1fY2xvc2VQZW5kaW5nKTsKQEAg
LTM1OSw3ICszNTksNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uKElE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0
YWJhc2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fdmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNsaWVudCB0byBoYXZl
IGFib3J0ZWQgYSB0cmFuc2FjdGlvbiBiZWZvcmUgdGhlIHNlcnZlciByZXBsaWVzIGJhY2sgdGhh
dCBpdCBoYXMgc3RhcnRlZC4KICAgICBpZiAobV9hYm9ydGluZ1RyYW5zYWN0aW9ucy5jb250YWlu
cyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSkKQEAgLTM3Miw3ICszNzIsNyBAQCB2
b2lkIElEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbENvbW1p
dFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAKICAgICBhdXRvIHJlZlRyYW5zYWN0aW9uID0gbV9hY3RpdmVUcmFuc2Fj
dGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQo
cmVmVHJhbnNhY3Rpb24pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRp
ZENvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZENvbW1pdFRyYW5zYWN0aW9uICVzIiwgdHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gJnRyYW5zYWN0aW9uKQogICAgICAgICBt
X2luZm8uc2V0VmVyc2lvbih0cmFuc2FjdGlvbi5pbmZvKCkubmV3VmVyc2lvbigpKTsKQEAgLTM5
NSw3ICszOTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFi
YXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byByZWZUcmFuc2FjdGlvbiA9IG1f
YWN0aXZlVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7
CiAgICAgaWYgKCFyZWZUcmFuc2FjdGlvbikKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIElEQkRh
dGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24g
JXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsK
IAogICAgIGlmICh0cmFuc2FjdGlvbi5pc1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAgICBBU1NF
UlQodHJhbnNhY3Rpb24ub3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CkBAIC00MzEsNyArNDMxLDcg
QEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6
OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uID09ICZ0cmFuc2FjdGlvbikKICAgICAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24gPSBudWxscHRyOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlCiAgICAgdWludDY0X3QgY3VycmVudFZlcnNpb24gPSBtX2luZm8udmVyc2lvbigpOwogICAg
IExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCAtIGN1
cnJlbnQgdmVyc2lvbiAlIiBQUkl1NjQgIiwgcmVxdWVzdGVkIHZlcnNpb24gJSIgUFJJdTY0ICIs
IGNvbm5lY3Rpb24gJSIgUFJJdTY0ICIgKCVwKSIsIGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0ZWRW
ZXJzaW9uLCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMpOwogCi0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgfHwgbV9jbG9zZVBlbmRpbmcpIHsKICAgICAgICAgY29ubmVjdGlvblBy
b3h5KCkuZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIElEQkRh
dGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZQogdm9pZCBJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50ICgl
IiBQUkl1NjQgIikgKCVwKSIsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcyk7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lk
IElEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIAogdm9pZCBJREJEYXRh
YmFzZTo6ZGlkQ3JlYXRlSW5kZXhJbmZvKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZSA9IG1faW5mby5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvLm9iamVjdFN0
b3JlSWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUpOwpAQCAtNDk3LDcgKzQ5
Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpZENyZWF0ZUluZGV4SW5mbyhjb25zdCBJREJJbmRl
eEluZm8mIGluZm8pCiAKIHZvaWQgSURCRGF0YWJhc2U6OmRpZERlbGV0ZUluZGV4SW5mbyhjb25z
dCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBv
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2lu
VGhyZWFkKCkpOwogCiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0ZvckV4aXN0
aW5nT2JqZWN0U3RvcmUoaW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJU
KG9iamVjdFN0b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcAppbmRleCA0OTdkZWMxYTQwZmQwZDdjNmY1MTEyOWI1MTgxZGYyZjFlODczM2MwLi45
ZTM1ZjkwZWQ4ZDQ0NTRhNjAzMTVkNGQwOTQ5OTM1ZWIwZWY2ZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC00OCwxNCArNDgsMTQgQEAg
SURCSW5kZXg6OklEQkluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IElEQkluZGV4SW5mbyYgaW5mbywgSUQKICAgICAsIG1fb3JpZ2luYWxJbmZvKGluZm8pCiAgICAg
LCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIHN1c3BlbmRJZk5l
ZWRlZCgpOwogfQogCiBJREJJbmRleDo6fklEQkluZGV4KCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiB9CiAKIGNvbnN0
IGNoYXIqIElEQkluZGV4OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTc1LDEzICs3
NSwxMyBAQCBib29sIElEQkluZGV4OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBjb25z
dCBTdHJpbmcmIElEQkluZGV4OjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1f
aW5mby5uYW1lKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkluZGV4OjpzZXROYW1lKGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2Jq
ZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHNldCBwcm9wZXJ0eSAnbmFtZScgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IGhhcyBiZWVu
IGRlbGV0ZWQuIikgfTsKQEAgLTEwOSwzMSArMTA5LDMxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElE
QkluZGV4OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogSURCT2JqZWN0U3RvcmUmIElE
QkluZGV4OjpvYmplY3RTdG9yZSgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX29iamVjdFN0b3Jl
OwogfQogCiBjb25zdCBJREJLZXlQYXRoJiBJREJJbmRleDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkpOwogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCiBib29sIElEQkluZGV4Ojp1
bmlxdWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RT
dG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9pbmZvLnVuaXF1ZSgpOwogfQog
CiBib29sIElEQkluZGV4OjptdWx0aUVudHJ5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJu
IG1faW5mby5tdWx0aUVudHJ5KCk7CiB9CiAKIHZvaWQgSURCSW5kZXg6OnJvbGxiYWNrSW5mb0Zv
clZlcnNpb25DaGFuZ2VBYm9ydCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gT25seSByb2xsYmFjayB0
byB0aGUgb3JpZ2luYWwgaW5mbyBpZiB0aGlzIGluZGV4IHN0aWxsIGV4aXN0cyBpbiB0aGUgcm9s
bGVkLWJhY2sgZGF0YWJhc2UgaW5mby4KICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX29i
amVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5pbmZvKCkuaW5mb0ZvckV4aXN0aW5n
T2JqZWN0U3RvcmUobV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTE1Miw3
ICsxNTIsNyBAQCB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJv
cnQoKQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNv
ciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS5pc0RlbGV0
ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJ
SUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdvcGVuQ3Vyc29yJyBvbiAnSURCSW5kZXgnOiBU
aGUgaW5kZXggb3IgaXRzIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0x
NzMsNyArMTczLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3Bl
bkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmEKIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpT
VmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGF1dG8ga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKGtleVJhbmdl
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFs
dWUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3Io
RXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5LZXlD
dXJzb3IiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNE
ZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1cnNvcicgb24gJ0lEQklu
ZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9
OwpAQCAtMjI3LDcgKzIyNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmNvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9k
ZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0
ZSAnY291bnQnIG9uICdJREJJbmRleCc6IFRoZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0b3JlIGhh
cyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUg
a2V5KQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldChFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZXhlY3V0ZSAnZ2V0JyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggb3IgaXRzIG9i
amVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yOTcsNyArMjk3LDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0S2V5KEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJ
bmRleDo6ZG9HZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3Jl
LmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQkluZGV4
JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpA
QCAtMzE1LDcgKzMxNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6
OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLCiBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
aWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMzM4LDcgKzMzOCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSlNWYWx1ZSBrZXksCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpn
ZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCSW5kZXg6OmdldEFsbEtleXMiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1f
b2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsS2V5
cycgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4g
ZGVsZXRlZC4iKSB9OwpAQCAtMzYwLDcgKzM2MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUK
IAogdm9pZCBJREJJbmRleDo6bWFya0FzRGVsZXRlZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9y
ZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgQVNTRVJU
KCFtX2RlbGV0ZWQpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMDhhNzg0YmEy
NDIyMzBlNjM1MzcyNTYwMDEzMWJlNjFiMzJiYmQwZC4uZDQ1MGQ3ODM3NTNmM2MzNmFjMGQ1Njhl
MDRlZTRlYmUzMTk3MjQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjEsMTQgKzYxLDE0IEBAIElEQk9iamVjdFN0
b3JlOjpJREJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBJREJPYmplY3RTCiAgICAgLCBtX29yaWdpbmFsSW5mbyhpbmZvKQogICAgICwgbV90cmFuc2Fj
dGlvbih0cmFuc2FjdGlvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsK
IAogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBJREJPYmplY3RTdG9yZTo6fklEQk9iamVj
dFN0b3JlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIH0KIAogY29u
c3QgY2hhciogSURCT2JqZWN0U3RvcmU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAt
ODgsMTMgKzg4LDEzIEBAIGJvb2wgSURCT2JqZWN0U3RvcmU6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiAKIGNvbnN0IFN0cmluZyYgSURCT2JqZWN0U3RvcmU6Om5hbWUoKSBjb25zdAogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2luZm8ubmFt
ZSgpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAK
ICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHNldCBwcm9wZXJ0eSAnbmFtZScgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBA
IC0xMTksMTMgKzExOSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9pbmZvLmtleVBhdGgoKTsKIH0KIAogUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFu
c2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIFJlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAKQEAgLTE0MCwy
MCArMTQwLDIwIEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhO
YW1lcygpIGNvbnN0CiAKIElEQlRyYW5zYWN0aW9uJiBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rp
b24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBt
X3RyYW5zYWN0aW9uOwogfQogCiBib29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4g
bV9pbmZvLmF1dG9JbmNyZW1lbnQoKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRy
PElEQktleVJhbmdlPiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWls
ZWQgdG8gZXhlY3V0ZSAnb3BlbkN1cnNvcicgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVj
dCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3Rh
dGUmIGV4ZWNTdGF0ZSwgSlMKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4
ZWN1dGUgJ29wZW5LZXlDdXJzb3InIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBvYmplY3Qgc3Rv
cmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjAxLDcgKzIwMSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhlY1N0YXRl
JiBleGVjU3RhdGUsCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
OjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5KQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dl
dCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVk
LiIpIH07CkBAIC0yMTksNyArMjE5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGsKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIGtleVJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJPYmplY3RTdG9yZTo6Z2V0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBA
IC0yMzcsNyArMjM3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW4KIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpn
ZXRLZXkiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICht
X2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCT2JqZWN0U3Rv
cmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI1NSw3ICsy
NTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRL
ZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlS
YW5nZSoga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpn
ZXRLZXkiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICht
X2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCT2JqZWN0U3Rv
cmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI5Nyw3ICsy
OTcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpwdXRP
ckFkZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpw
dXRPckFkZCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0
byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKTsK
ICAgICBpZiAoIWNvbnRleHQpCkBAIC0zNjksNyArMzY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVj
U3RhdGUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvRGVs
ZXRlKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbiIpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9u
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gVGhlIElEQiBzcGVjIGZvciBz
ZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQgdHJhbnNhY3Rpb24gcmVs
YXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8vIHRoZSBleGNlcHRpb24g
Zm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNDAzLDcgKzQwMyw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9i
amVjdFN0b3JlOjpjbGVhcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCT2JqZWN0U3RvcmU6OmNsZWFyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICAvLyBUaGUgSURCIHNwZWMgZm9yIHNldmVyYWwgSURCT2JqZWN0U3Rv
cmUgbWV0aG9kcyBzdGF0ZXMgdGhhdCB0cmFuc2FjdGlvbiByZWxhdGVkIGV4Y2VwdGlvbnMgc2hv
dWxkIGZpcmUgYmVmb3JlCiAgICAgLy8gdGhlIGV4Y2VwdGlvbiBmb3IgYW4gb2JqZWN0IHN0b3Jl
IGJlaW5nIGRlbGV0ZWQuCkBAIC00MjUsNyArNDI1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoRXhlY1N0YXRlJiBleGVjU3RhdGUpCiBFeGNl
cHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhlY1N0
YXRlJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYga2V5UGF0aCwgY29uc3QgSW5k
ZXhQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXggJXMgKGtleVBhdGg6ICVzLCB1bmlxdWU6ICVpLCBtdWx0aUVu
dHJ5OiAlaSkiLCBuYW1lLnV0ZjgoKS5kYXRhKCksIGxvZ2dpbmdTdHJpbmcoa2V5UGF0aCkudXRm
OCgpLmRhdGEoKSwgcGFyYW1ldGVycy51bmlxdWUsIHBhcmFtZXRlcnMubXVsdGlFbnRyeSk7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rp
b24uaXNWZXJzaW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRlSW5kZXgn
IG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBkYXRhYmFzZSBpcyBub3QgcnVubmluZyBhIHZlcnNp
b24gY2hhbmdlIHRyYW5zYWN0aW9uLiIpIH07CkBAIC00NjYsNyArNDY2LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSYs
IGNvbnN0IFN0cmluZyYKIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3Jl
OjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCT2JqZWN0U3RvcmU6OmluZGV4Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSk7CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07IC8vIEZJWE1FOiBJcyB0aGlzIGNvZGUg
dGVzdGVkPyBJcyBpdGV2ZW4gcmVhY2hhYmxlPwpAQCAtNDk4LDcgKzQ5OCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGlu
ZGV4TmFtZSkKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpkZWxldGVJbmRleCAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4
ZWN1dGUgJ2RlbGV0ZUluZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3Jl
IGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTU1MSw3ICs1NTEsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpjb3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSURCS2V5UgogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
Ojpkb0NvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gVGhl
IElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQg
dHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8v
IHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNTcz
LDcgKzU3Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6
OmRvQ291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0CiBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBz
dG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC01OTYsNyArNTk2LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKU1ZhbHUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyIpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRl
ICdnZXRBbGxLZXlzJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBi
ZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTYxOCwxMyArNjE4LDEzIEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3Rh
dGUsIEpTCiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6Om1hcmtBc0RlbGV0ZWQoKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9u
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CiB9CiAK
IHZvaWQgSURCT2JqZWN0U3RvcmU6OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0KCkKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFu
c2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIFN0cmluZyBjdXJyZW50
TmFtZSA9IG1faW5mby5uYW1lKCk7CiAgICAgbV9pbmZvID0gbV9vcmlnaW5hbEluZm87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwCmluZGV4IDc4ZGE5NzAyMmE3Y2U0OWI1MTAzZjQ4ZGJlZGM2NDExOGQzNjA5NjIuLmI0Zjc5
MzFjOTdkOTViMGU1NzAyODdmY2U0NjVmODYyNzU1NWY0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC02Mywx
MiArNjMsMTIgQEAgSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJDbGllbnQ6OkkKIAogSURCT3BlbkRCUmVxdWVzdDo6
fklEQk9wZW5EQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRo
cmVhZCgpKTsKIH0KIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvbkVycm9yKGNvbnN0IElEQlJl
c3VsdERhdGEmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFk
KCkpOwogCiAgICAgbV9kb21FcnJvciA9IGRhdGEuZXJyb3IoKS50b0RPTUV4Y2VwdGlvbigpOwog
ICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIHRydWUsIHRydWUsICp0aGlzKSk7CkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRh
KQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkRpZEZp
bmlzaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAg
ICAgLy8gMy4zLjcgInZlcnNpb25jaGFuZ2UiIHRyYW5zYWN0aW9uIHN0ZXBzCiAgICAgLy8gV2hl
biB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQsIGFmdGVyIGZpcmluZyBjb21wbGV0ZS9hYm9y
dCBvbiB0aGUgdHJhbnNhY3Rpb24sIGltbWVkaWF0ZWx5IHNldCByZXF1ZXN0J3MgdHJhbnNhY3Rp
b24gcHJvcGVydHkgdG8gbnVsbC4KQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCgpCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdl
Q29tbWl0KCkgLSAlcyIsIHJlc291cmNlSWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQoaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIG1fdHJhbnNhY3Rpb24tPmFk
ZFJlcXVlc3QoKnRoaXMpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VDb21wbGV0aW9uKCkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJzaW9uQ2hhbmdl
Q29tcGxldGlvbigpIC0gJXMiLCByZXNvdXJjZUlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIAogICAgIElEQkVycm9yIGlk
YkVycm9yKEFib3J0RXJyb3IpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSURCT3BlbkRCUmVx
dWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6ZGlzcGF0Y2hF
dmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhy
ZWFkKCkpOwogCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKQEAg
LTEzMyw3ICsxMzMsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyhjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPcGVu
REJSZXF1ZXN0OjpvblN1Y2Nlc3MoKSIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgc2V0UmVzdWx0KElEQkRhdGFiYXNlOjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5KCksIHJlc3VsdERhdGEpKTsKICAg
ICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25lOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgUmVmPElEQkRhdGFiYXNlPiBkYXRhYmFzZSA9IElEQkRhdGFi
YXNlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5KCks
IHJlc3VsdERhdGEpOwogICAgIFJlZjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBkYXRh
YmFzZS0+c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24ocmVzdWx0RGF0YS50cmFuc2FjdGlv
bkluZm8oKSwgKnRoaXMpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVz
dDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAKIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6b25EZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAKICAgICB1aW50NjRfdCBvbGRWZXJzaW9uID0gcmVzdWx0RGF0YS5kYXRhYmFz
ZUluZm8oKS52ZXJzaW9uKCk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIElEQk9wZW5EQlJl
cXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZCIpOwog
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gSWYg
YW4gT3BlbiByZXF1ZXN0IHdhcyBjb21wbGV0ZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIG5hdmlnYXRl
ZCwgbGVhdmluZyB0aGlzIHJlcXVlc3QKICAgICAvLyB3aXRoIGEgc3RvcHBlZCBzY3JpcHQgZXhl
Y3V0aW9uIGNvbnRleHQsIHdlIG5lZWQgdG8gbWVzc2FnZSBiYWNrIHRvIHRoZSBzZXJ2ZXIgc28g
aXQKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RDb21w
bGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0
OjpyZXF1ZXN0QmxvY2tlZCh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9u
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIExP
RyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0QmxvY2tlZCIpOwogICAgIGVu
cXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBuZXdW
ZXJzaW9uLCBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGNkYzliYWY1MzllZGZmMjE0
MTVmOTQ0ZDgxODc4NWRjMjRhNjgyNTcuLjYyMTYyNTkwOTQyY2YxOWVkYmYwMzVmOTAyYTdmZjg5
NjUxZDVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWQKIAog
SURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9y
aWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX3Jlc3VsdCkgewogICAgICAgICBXVEY6OnN3aXRj
aE9uKG1fcmVzdWx0LnZhbHVlKCksCkBAIC0xNjMsNyArMTYzLDcgQEAgRXhjZXB0aW9uT3I8c3Rk
OjpvcHRpb25hbDxJREJSZXF1ZXN0OjpSZXN1bHQ+PiBJREJSZXF1ZXN0OjpyZXN1bHQoKSBjb25z
dAogCiBFeGNlcHRpb25PcjxET01FeGNlcHRpb24qPiBJREJSZXF1ZXN0OjplcnJvcigpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYg
KCFpc0RvbmUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byByZWFkIHRoZSAnZXJyb3InIHByb3BlcnR5IGZyb20g
J0lEQlJlcXVlc3QnOiBUaGUgcmVxdWVzdCBoYXMgbm90IGZpbmlzaGVkLiIpIH07CkBAIC0xNzMs
NyArMTczLDcgQEAgRXhjZXB0aW9uT3I8RE9NRXhjZXB0aW9uKj4gSURCUmVxdWVzdDo6ZXJyb3Io
KSBjb25zdAogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJREJDdXJzb3ImIGN1cnNvcikK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KCFtX2N1cnNvclJlcXVlc3ROb3RpZmllcik7CiAKICAgICBtX3NvdXJjZSA9IFNvdXJjZSB7ICZj
dXJzb3IgfTsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJ
REJDdXJzb3ImIGN1cnNvcikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb24pOwog
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5pc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKCF0
cmFuc2FjdGlvbi5pc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CkBAIC0xOTUsMTMgKzE5NSwxMyBA
QCB2b2lkIElEQlJlcXVlc3Q6OnNldFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiAKIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4gSURC
UmVxdWVzdDo6dHJhbnNhY3Rpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9zaG91bGRFeHBvc2VUcmFuc2FjdGlvblRv
RE9NID8gbV90cmFuc2FjdGlvbiA6IG51bGxwdHI7CiB9CiAKIHVpbnQ2NF90IElEQlJlcXVlc3Q6
OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0yMTUsNyArMjE1LDcgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNl
T2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3QKIAogdWludDY0X3QgSURCUmVxdWVzdDo6c291
cmNlSW5kZXhJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBv
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fc291cmNlKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTIyOSwxNCArMjI5LDE0IEBAIHVpbnQ2NF90IElEQlJlcXVlc3Q6OnNvdXJjZUluZGV4SWRl
bnRpZmllcigpIGNvbnN0CiAKIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVSZWNvcmRUeXBlIElEQlJl
cXVlc3Q6OnJlcXVlc3RlZE9iamVjdFN0b3JlUmVjb3JkVHlwZSgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIG1fcmVxdWVz
dGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBlOwogfQogCiBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlw
ZSBJREJSZXF1ZXN0OjpyZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGUoKSBjb25zdAogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zb3VyY2Up
OwogICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJJbmRleD4+KG1f
c291cmNlLnZhbHVlKCkpKTsKIApAQCAtMjQ1LDMzICsyNDUsMzMgQEAgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgSURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29uc3QK
IAogRXZlbnRUYXJnZXRJbnRlcmZhY2UgSURCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAog
ICAgIHJldHVybiBJREJSZXF1ZXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCiBjb25z
dCBjaGFyKiBJREJSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICByZXR1cm4gIklEQlJl
cXVlc3QiOwogfQogCiBib29sIElEQlJlcXVlc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3Bl
bnNpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gb3JpZ2luVGhyZWFkKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKICAgICByZXR1cm4gbV9o
YXNQZW5kaW5nQWN0aXZpdHk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c3RvcCgpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9jb250
ZXh0U3RvcHBlZCk7CiAKICAgICBjYW5jZWxGb3JTdG9wKCk7CkBAIC0yODgsNyArMjg4LDcgQEAg
dm9pZCBJREJSZXF1ZXN0OjpjYW5jZWxGb3JTdG9wKCkKIAogdm9pZCBJREJSZXF1ZXN0OjplbnF1
ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8fCBt
X2NvbnRleHRTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICszMDAsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50IC0gJXMgKCVwKSIsIGV2ZW50LnR5
cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9oYXNQZW5kaW5nQWN0aXZpdHkp
OwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5k
bGVyIik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAobV90cmFuc2FjdGlvbiAmJiBtX2lkYkVycm9yLmNvZGUoKSAhPSBBYm9ydEVycm9yKQog
ICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydER1ZVRvRmFpbGVkUmVxdWVzdChET01FeGNlcHRp
b246OmNyZWF0ZShBYm9ydEVycm9yLCBBU0NJSUxpdGVyYWwoIklEQlRyYW5zYWN0aW9uIHdpbGwg
YWJvcnQgZHVlIHRvIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBhbiBldmVudCBoYW5kbGVyIikpKTsK
QEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5F
dmVudEhhbmRsZXIoKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBJREJLZXlE
YXRhJiBrZXlEYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYga2V5RGF0YXMpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0zOTMsNyArMzkzLDcg
QEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQktleURhdGE+JiBr
ZXlEYXRhcykKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQlZh
bHVlPiYgdmFsdWVzKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IFZlY3RvcjxJREJWYWx1ZT4mIHZhbHVlcykKIAogdm9pZCBJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHQodWludDY0X3QgbnVtYmVyKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9y
aWdpblRocmVhZCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgSURCUmVx
dWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRS
ZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBJREJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lIik7CiAKQEAgLTQ0NCw3ICs0
NDQsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKGNvbnN0
IElEQlZhbHVlJiB2YWx1ZSkKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVmaW5l
ZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
YXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVm
aW5lZCgpCiAKIElEQkN1cnNvciogSURCUmVxdWVzdDo6cmVzdWx0Q3Vyc29yKCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fcmVzdWx0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBJREJDdXJzb3Iq
IElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcigpCiAKIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJh
dGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChpc0RvbmUoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOwpAQCAtNDkw
LDcgKzQ5MCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29y
JiBjdXJzb3IpCiAKIHZvaWQgSURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKIAogICAgIG1f
cmVzdWx0ID0gc3RkOjpudWxsb3B0OwpAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogCiB2b2lkIElEQlJlcXVlc3Q6OmNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZlbnQoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25l
OwogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6b25FcnJvciIpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pZGJFcnJvci5pc051
bGwoKSk7CiAKICAgICBtX2RvbUVycm9yID0gbV9pZGJFcnJvci50b0RPTUV4Y2VwdGlvbigpOwpA
QCAtNTM0LDE0ICs1MzQsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6
b25TdWNjZXNzIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KFJlZjxJ
REJEYXRhYmFzZT4mJiBkYXRhYmFzZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAKICAgICBtX3Jlc3VsdCA9IFJlc3VsdCB7IFJlZlB0cjxJREJEYXRhYmFz
ZT4geyBXVEZNb3ZlKGRhdGFiYXNlKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYzFlMWRlZjU1ZWI2MWMy
ODZjYTNmYWVhMWQ5ODQwNTc4Y2RiMTM2Ni4uYzQ0NjY5ZWRlMmY0OTIzZDEwMTkzNmI1MzNkODEw
ZTMyYjQ0NTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtODAsNyArODAsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURC
VHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mCiAKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0
aW9uIC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KTsKIAogICAgIGlmIChtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lv
bmNoYW5nZSkgewogICAgICAgICBBU1NFUlQobV9vcGVuREJSZXF1ZXN0KTsKQEAgLTEwNiw3ICsx
MDYsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFi
YXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAKIElEQlRyYW5zYWN0aW9uOjp+SURCVHJh
bnNhY3Rpb24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIH0KIAogSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkmIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uUHJveHkoKQpAQCAtMTE2LDcgKzExNiw3IEBA
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBJREJUcmFuc2FjdGlvbjo6Y29ubmVjdGlv
blByb3h5KCkKIAogUmVmPERPTVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9y
ZU5hbWVzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBu
YW1lcyA9IGlzVmVyc2lvbkNoYW5nZSgpID8gbV9kYXRhYmFzZS0+aW5mbygpLm9iamVjdFN0b3Jl
TmFtZXMoKSA6IG1faW5mby5vYmplY3RTdG9yZXMoKTsKIApAQCAtMTMwLDIwICsxMzAsMjAgQEAg
UmVmPERPTVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3QKIAogSURCRGF0YWJhc2UqIElEQlRyYW5zYWN0aW9uOjpkYigpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAg
IHJldHVybiBtX2RhdGFiYXNlLnB0cigpOwogfQogCiBET01FeGNlcHRpb24qIElEQlRyYW5zYWN0
aW9uOjplcnJvcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2RvbUVycm9yLmdl
dCgpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSIpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAog
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBvYmplYwogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVl
c3QoRE9NRXhjZXB0aW9uJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OmFib3J0RHVlVG9GYWlsZWRSZXF1ZXN0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKGlz
RmluaXNoZWRPckZpbmlzaGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xOTQsNyArMTk0LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9NRXhjZXB0
aW9uJiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6dHJhbnNpdGlvbmVkVG9GaW5pc2hp
bmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlIHN0YXRlKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAg
IEFTU0VSVCghaXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsK
QEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjp0cmFuc2l0aW9uZWRUb0Zp
bmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGUgc3RhdGUpCiBFeGNlcHRpb25Pcjx2
b2lkPiBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJU
cmFuc2FjdGlvbjo6YWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hlZE9yRmlu
aXNoaW5nKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnYWJvcnQnIG9uICdJREJUcmFuc2FjdGlv
bic6IFRoZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKSB9OwpAQCAtMjE3
LDcgKzIxNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQlRyYW5zYWN0aW9uOjphYm9ydCgpCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjppbnRlcm5hbEFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KCFpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CiAKICAgICBtX2RhdGFiYXNlLT53aWxsQWJvcnRU
cmFuc2FjdGlvbigqdGhpcyk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6YWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzIik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1w
dHkoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5hYm9ydFRyYW5zYWN0
aW9uKCp0aGlzKTsKQEAgLTMwOSwyNiArMzA5LDI2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmFi
b3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
CiAKIGNvbnN0IGNoYXIqIElEQlRyYW5zYWN0aW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuICJJREJUcmFuc2FjdGlvbiI7CiB9CiAKIGJvb2wg
SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpIHx8IG1heUJlR0NUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
IHx8IG1heUJlR0NUaHJlYWQoKSk7CiAgICAgcmV0dXJuICFtX2NvbnRleHRTdG9wcGVkICYmIG1f
c3RhdGUgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KIAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpzdG9wIC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpKTsKIAogICAgIC8vIElEQkRhdGFiYXNlOjpzdG9wKCkgY2FsbHMgSURCVHJhbnNh
Y3Rpb246OnN0b3AoKSBmb3IgZWFjaCBvZiBpdHMgYWN0aXZlIHRyYW5zYWN0aW9ucy4KICAgICAv
LyBTaW5jZSB0aGUgb3JkZXIgb2YgY2FsbGluZyBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSBpcyBy
YW5kb20sIHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIHN0b3BwZWQuCkBAIC0zNDcsMTMgKzM0
NywxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIAogYm9vbCBJREJUcmFuc2FjdGlv
bjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9zdGF0ZSA9PSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFjdGl2ZTsKIH0KIAogYm9vbCBJREJUcmFuc2Fj
dGlvbjo6aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBy
ZXR1cm4gbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcK
ICAgICAgICAgfHwgbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFib3J0
aW5nCkBAIC0zNjIsMTMgKzM2MiwxMyBAQCBib29sIElEQlRyYW5zYWN0aW9uOjppc0ZpbmlzaGVk
T3JGaW5pc2hpbmcoKSBjb25zdAogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjphZGRSZXF1ZXN0KElE
QlJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIG1fb3BlblJlcXVlc3RzLmFkZCgm
cmVxdWVzdCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURCUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fb3BlblJlcXVlc3RzLmNv
bnRhaW5zKCZyZXF1ZXN0KSk7CiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsK
IH0KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0
KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJh
dGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24p
CiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJh
dGlvbi0+aWRlbnRpZmllcigpKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgbV9wZW5kaW5nVHJhbnNhY3Rp
b25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKICAgICBtX3RyYW5zYWN0aW9uT3Bl
cmF0aW9uTWFwLnNldChvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgV1RGTW92ZShvcGVyYXRpb24p
KTsKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJh
dGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJgogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcigpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgaWYgKCFtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAg
ICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTM5NSw3ICsz
OTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1l
cigpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGlt
ZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3N0YXJ0ZWRPblNl
cnZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNDI5LDggKzQyOSw4IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246OnBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCkKIAogdm9pZCBJREJUcmFuc2FjdGlv
bjo6b3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSwg
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogewotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcGVyYXRpb24ub3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVh
ZCgpKTsKIAogICAgIG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9u
LCBkYXRhIH0pOwogICAgIHNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKTsKQEAgLTQz
OCw3ICs0MzgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNl
cnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbAogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCkKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAoIW1fY29tcGxldGVkT3BlcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9j
b21wbGV0ZWRPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTQ0Nyw3ICs0NDcs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVy
KCkKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQoKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9u
VGltZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fY29tcGxldGVk
T25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgfHwgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmZpbmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpjb21taXQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFpc0ZpbmlzaGVkT3JG
aW5pc2hpbmcoKSk7CiAKICAgICB0cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRy
YW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSURC
VHJhbnNhY3Rpb246OmNvbW1pdCgpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlciIpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsK
IAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNvbW1pdFRyYW5zYWN0aW9uKCp0
aGlzKTsKIApAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdE9u
U2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKIHZvaWQg
SURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0T3JDb21taXQoKQogewogICAgIEFTU0VSVChtX3N0
YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsK
IAogICAgIG1fc3RhdGUgPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlzaGVkOwog
fQpAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0T3JD
b21taXQoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQoY29uc3QgSURCRXJyb3ImIGVy
cm9yKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQiKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5kaWRTdGFydFRyYW5zYWN0aW9uKCp0aGlzKTsK
IApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KGNvbnN0
IElEQkVycm9yJiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQo
Y29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmRp
ZEFib3J0VHJhbnNhY3Rpb24oKnRoaXMpOwogICAgIG1faWRiRXJyb3IgPSBlcnJvcjsKQEAgLTU2
MCw3ICs1NjAsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpub3RpZnlEaWRBYm9ydChjb25zdCBJ
REJFcnJvciYgZXJyb3IpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydChjb25zdCBJREJF
cnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRB
Ym9ydCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNh
Y3Rpb25TdGF0ZTo6RmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydChjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRDb21taXQoY29uc3QgSURCRXJyb3ImIGVycm9yKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ29tbWl0Iik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogICAgIEFTU0VSVChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6Q29t
bWl0dGluZyk7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTU5MCwyMSArNTkwLDIx
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdChjb25zdCBJREJFcnJvciYgZXJyb3Ip
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBl
bnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmZpcmVPbkFib3J0KCkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmZpcmVPbkFib3J0Iik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hYm9ydEV2
ZW50LCB0cnVlLCBmYWxzZSkpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZl
bnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewogICAgIEFTU0VSVChtX3N0YXRlICE9IEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIHx8IG1fY29udGV4dFN0b3BwZWQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50
KEV2ZW50JiBldmVudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
c3BhdGNoRXZlbnQiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwogICAgIEFTU0VSVChldmVu
dC50YXJnZXQoKSA9PSB0aGlzKTsKQEAgLTY0Nyw3ICs2NDcsNyBAQCBSZWY8SURCT2JqZWN0U3Rv
cmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RT
dG9yZSIpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihtX3JlZmVyZW5jZWRPYmplY3RTdG9yZUxvY2spOwogCkBAIC02NjQsNyArNjY0LDcgQEAgUmVm
PElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3Rv
cmVPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAg
QVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmNyZWF0ZU9iamVjdFN0b3JlKG9wZXJhdGlvbiwgaW5mbyk7CkBAIC02NzMsNyArNjcz
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ3Jl
YXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3Rv
cmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJl
c3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkNyZWF0ZU9iamVjdFN0b3JlU3VjY2Vz
cyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKQEAg
LTY4NSw3ICs2ODUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZShJ
REJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZwogCiAgICAgQVNTRVJUKGlz
VmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBBU1NFUlQobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLmNvbnRhaW5z
KG9iamVjdFN0b3JlLmluZm8oKS5uYW1lKCkpKTsKICAgICBBU1NFUlQoIW1fcmVmZXJlbmNlZE9i
amVjdFN0b3Jlcy5jb250YWlucyhuZXdOYW1lKSk7CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0
b3JlLCBjb25zdCBTdHJpbmcKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3Jl
T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25z
dCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9y
ZU9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAK
ICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5yZW5hbWVPYmplY3RTdG9yZShvcGVy
YXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03MTEsNyArNzExLDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1l
T2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmVP
blNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3Vs
dERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OlJlbmFtZU9iamVjdFN0b3JlU3VjY2VzcyB8
fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKQEAgLTcx
OSw3ICs3MTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpj
cmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcgogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgiKTsKICAgICBBU1NFUlQoaXNWZXJzaW9u
Q2hhbmdlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTczMyw3ICs3MzMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9y
ZSYgb2JqZWN0U3Rvcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNyZWF0
ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgp
KTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNyZWF0ZUluZGV4KG9wZXJh
dGlvbiwgaW5mbyk7CkBAIC03NDIsNyArNzQyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXQK
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAocmVzdWx0
RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6Q3JlYXRlSW5kZXhTdWNjZXNzKQogICAgICAg
ICByZXR1cm47CkBAIC03NjQsNyArNzY0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1l
SW5kZXgoSURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiAKICAgICBBU1NF
UlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVChtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuY29u
dGFpbnMoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFtZSgpKSk7CiAgICAgQVNTRVJUKG1f
cmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5nZXQoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFt
ZSgpKSA9PSAmaW5kZXgub2JqZWN0U3RvcmUoKSk7CkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgoSURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcm
IG5ld05hbWUpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVyKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgdWludDY0X3QmIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgdWludDY0X3QmIGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoaXNWZXJzaW9u
Q2hhbmdlKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkucmVuYW1lSW5k
ZXgob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3
TmFtZSk7CkBAIC03OTAsMTQgKzc5MCwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJ
bmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlcihjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
ZGlkUmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OlJlbmFtZUluZGV4
U3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9
CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhl
Y1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJDdXJz
b3JJbmZvJiBpbmZvKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdE9wZW5DdXJzb3IiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkg
PT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9SZXF1
ZXN0T3BlbkN1cnNvcihzdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIG9iamVjdFN0b3Jl
LCBpbmZvKSk7CkBAIC04MDgsNyArODA4LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG8KIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRl
JiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IiKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkgPT0gSW5kZXhlZERCOjpDdXJz
b3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihzdGF0
ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIGluZGV4LCBpbmZvKSk7CkBAIC04MTksNyArODE5
LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihF
eGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW4KIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBSZWY8SURCQ3Vyc29y
PiYmIGN1cnNvcikKIHsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
QVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogCkBAIC04MzUsNyArODM1LDcg
QEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKEV4
ZWNTdGF0ZSYgc3RhdGUsIFJlZjxJREJDdXIKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZW5DdXJz
b3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNv
bnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNl
LT5jb25uZWN0aW9uUHJveHkoKS5vcGVuQ3Vyc29yKG9wZXJhdGlvbiwgaW5mbyk7CiB9CkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVyKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGkKIHZvaWQgSURCVHJhbnNhY3Rp
b246OmRpZE9wZW5DdXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgY29tcGxldGVD
dXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQpAQCAtODUzLDcgKzg1Myw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjppdGVyYXRlQ3Vyc29yIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VS
VChjdXJzb3IucmVxdWVzdCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBhZGRSZXF1ZXN0KCpjdXJzb3Iu
cmVxdWVzdCgpKTsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0
ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRh
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0
YSYgZGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVD
dXJzb3JPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLml0ZXJhdGVDdXJzb3Iob3BlcmF0aW9uLCBkYXRhKTsKIH0KQEAgLTg3Myw3ICs4NzMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRl
cmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpk
aWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBjb21wbGV0ZUN1cnNv
clJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CkBAIC04ODIsNyArODgyLDcgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNv
cmRzKEpTQzo6RXhlY1N0YXRlJgogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KSk7CiAKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3Jk
cyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5V
U0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTkxOSw3ICs5MTksNyBAQCBSZWY8SURC
UmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2VydmVyIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZ2V0QWxsUmVjb3JkcyhvcGVyYXRp
b24sIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpnZXRBbGxSZWNvcmRzT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRz
T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gSURC
UmVzdWx0VHlwZTo6RXJyb3IpIHsKICAgICAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJl
cXVlc3QsIHJlc3VsdERhdGEpOwpAQCAtOTU0LDcgKzk1NCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmpl
Y3RTdG9yCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVj
b3JkIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghZ2V0UmVjb3JkRGF0
YS5rZXlSYW5nZURhdGEuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0
YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
T2JqZWN0U3RvcgogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0VmFs
dWUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldFZhbHVlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChz
dGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpWYWx1ZSwgcmFuZ2UpOwog
fQpAQCAtOTgwLDcgKzk4MCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEdldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRlCiBSZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
SW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6
SW5kZXhSZWNvcmRUeXBlOjpLZXksIHJhbmdlKTsKIH0KQEAgLTk5MCw3ICs5OTAsNyBAQCBSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZChFeGVjU3RhdGUm
IHN0YXRlLCBJREJJbmRleCYgaQogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdEdldFZhbHVlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCgh
cmFuZ2UuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUoJnN0YXRlKSk7CiAKQEAgLTEwMDgsNyArMTAwOCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4
JiBpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdl
dFJlY29yZERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpnZXRS
ZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmdldFJlY29yZChvcGVyYXRpb24sIGdldFJlY29yZERhdGEpOwogfQpAQCAtMTAxNiw3
ICsxMDE2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW8KIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkaWRHZXRSZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChyZXN1bHREYXRh
LnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgewogICAgICAgICBjb21wbGV0ZU5vbmN1
cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChFeGVjU3RhdGUmIHN0
YXRlLCBJREJPYmplY3RTdG9yZSYgbwogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdENvdW50IChJREJPYmplY3RTdG9yZSkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUo
KSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVF9V
TlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0
ZSwgSURCSW5kZXgmIGluZGV4LAogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdENvdW50IChJREJJbmRleCkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAg
QVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5k
ZXgmIGluZGV4LAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpnZXRD
b3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblBy
b3h5KCkuZ2V0Q291bnQob3BlcmF0aW9uLCBrZXlSYW5nZSk7CiB9CkBAIC0xMDkzLDcgKzEwOTMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRDb3VudE9uU2VydmVyKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
Q291bnRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
Q291bnRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3Vs
dERhdGEucmVzdWx0SW50ZWdlcigpKTsKICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVx
dWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
T2JqZWN0UwogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERlbGV0
ZVJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdlLmlz
TnVsbCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0
ZSkpOwogCkBAIC0xMTE5LDcgKzExMTksNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0Uwogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25T
ZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5k
ZWxldGVSZWNvcmQob3BlcmF0aW9uLCBrZXlSYW5nZSk7CiB9CkBAIC0xMTI3LDcgKzExMjcsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVSZWNvcmRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRl
UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZERl
bGV0ZVJlY29yZE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmVxdWVzdC5zZXRSZXN1bHRU
b1VuZGVmaW5lZCgpOwogICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1
bHREYXRhKTsKQEAgLTExMzcsNyArMTEzNyw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RT
dG9yZSIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRf
VU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTExNTUsNyArMTE1NSw3IEBAIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoRXhl
Y1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVhck9iamVjdFN0
b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBj
b25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuY2xlYXJPYmplY3RTdG9yZShv
cGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiB9CkBAIC0xMTYzLDcgKzExNjMsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgbwogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZU9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpk
aWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICByZXF1ZXN0LnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVl
c3QsIHJlc3VsdERhdGEpOwpAQCAtMTE3NSw3ICsxMTc1LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0
U3RvcmUKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFpc1JlYWRPbmx5KCkp
OwogICAgIEFTU0VSVChvYmplY3RTdG9yZS5pbmZvKCkuYXV0b0luY3JlbWVudCgpIHx8IGtleSk7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwog
CkBAIC0xMTkxLDcgKzExOTEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJl
cXVlc3RQdXRPckFkZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZQogdm9pZCBJREJU
cmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXRpb24sIFJlZlB0cjxJREJLZXk+IGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2Rl
JiBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cHV0T3JBZGRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVh
ZCgpKTsKICAgICBBU1NFUlQoIWlzUmVhZE9ubHkoKSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKIApA
QCAtMTIyNCw3ICsxMjI0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICBvcGVyYXRp
b24uc2V0TmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyKGZhbHNlKTsKIAogICAgIHZhbHVlLT53cml0
ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiA9IFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uPihvcGVyYXRpb24pLCBrZXlEYXRhID0gSURCS2V5RGF0YShrZXkuZ2V0KCkpLmlzb2xh
dGVkQ29weSgpLCBvdmVyd3JpdGVNb2RlXShjb25zdCBJREJWYWx1ZSYgaWRiVmFsdWUpIG11dGFi
bGUgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoaWRiVmFsdWUuZGF0
YSgpLmRhdGEoKSkgewogICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCku
cHV0T3JBZGQocHJvdGVjdGVkT3BlcmF0aW9uLmdldCgpLCBXVEZNb3ZlKGtleURhdGEpLCBpZGJW
YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlcihJREJS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlciIpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZCgpKTsKIAogICAgIGlmIChhdXRvKiByZXN1bHQgPSByZXN1bHREYXRhLnJlc3VsdEtleSgp
KQogICAgICAgICByZXF1ZXN0LnNldFJlc3VsdCgqcmVzdWx0KTsKQEAgLTEyNTUsNyArMTI1NSw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9jayk7CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24mCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5n
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5kZWxl
dGVPYmplY3RTdG9yZShvcGVyYXRpb24sIG9iamVjdFN0b3JlTmFtZSk7CiB9CkBAIC0xMjgyLDE0
ICsxMjgyLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2
ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZU9i
amVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHRE
YXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpEZWxldGVPYmplY3RTdG9y
ZVN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwog
fQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgiKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURC
IGRlbGV0ZSBpbmRleCBvcGVyYXRpb246ICVzICglIiBQUkl1NjQgIikiLCBpbmRleE5hbWUudXRm
OCgpLmRhdGEoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKQEAgLTEzMDAsNyArMTMwMCw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5n
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5kZWxl
dGVJbmRleChvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKIH0K
QEAgLTEzMDgsNyArMTMwOCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25T
ZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0CiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpkaWREZWxldGVJbmRleE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWREZWxl
dGVJbmRleE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0
YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5kZXhTdWNjZXNz
IHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApAQCAt
MTMxNiw4ICsxMzE2LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVk
T25DbGllbnQoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9wZXJhdGlvbi5v
cmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuZ2V0
KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpID09ICZvcGVyYXRpb24pOwogICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jlc3NRdWV1ZS5maXJzdCgpID09ICZvcGVyYXRpb24p
OwogCkBAIC0xMzMwLDE0ICsxMzMwLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlv
bkNvbXBsZXRlZE9uQ2xpZW50KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlcigpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAg
IG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmVzdGFibGlzaFRyYW5zYWN0aW9uKCp0aGlz
KTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAog
ICAgIGlmIChpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0
Nyw3ICsxMzQ3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkZWFjdGl2YXRlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9zdGF0
ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFjdGl2ZSkKICAgICAgICAgbV9zdGF0
ZSA9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6SW5hY3RpdmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwCmluZGV4IDllYjNmMjVhOGQ5MmEwZjM3NzUxNDY5OTllZTg5NzEyNDVjMTEy
MzkuLmJlNGRiNDgwNWUyMzA1NTkwMzU1YjUyM2FiMGM4NzU3MmU0YmY0MjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCkBAIC01MTksMTIgKzUxOSwxMiBAQCB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6Zm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5z
YWN0aW9uTwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPgog
dm9pZCByZW1vdmVJdGVtc01hdGNoaW5nQ3VycmVudFRocmVhZChIYXNoTWFwPEtleVR5cGUsIFZh
bHVlVHlwZT4mIG1hcCkKIHsKLSAgICBhdXRvIGN1cnJlbnRUaHJlYWRJRCA9IGN1cnJlbnRUaHJl
YWQoKTsKKyAgICBhdXRvJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAKICAg
ICBWZWN0b3I8S2V5VHlwZT4ga2V5czsKICAgICBrZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bWFwLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1hcCkgewotICAgICAgICBp
ZiAoaXRlcmF0b3IudmFsdWUtPm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZElEKQor
ICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUtPm9yaWdpblRocmVhZCgpID09IGN1cnJlbnRUaHJl
YWQpCiAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChpdGVyYXRvci5rZXkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBjNzI0NTMxYjJlMWU1OTYyNDVj
NTY5M2I1NjU1NWE5ZjY4ZGMzNmE1Li42MGMwOGQ2ZDM3MTY2NjY2MTU2YzMyZTFmNzIwODRlMThm
YjBhMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNTEsMTIgKzUxLDEyIEBA
IGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhbnNhY3Rp
b25PcGVyYXRpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0g
Y3VycmVudFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLmdldCgpID09
IFRocmVhZDo6Y3VycmVudCgpKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZvcm0oKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAg
ICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsK
ICAgICAgICAgQVNTRVJUKG1fcGVyZm9ybUZ1bmN0aW9uKTsKICAgICAgICAgbV9wZXJmb3JtRnVu
Y3Rpb24oKTsKICAgICAgICAgbV9wZXJmb3JtRnVuY3Rpb24gPSB7IH07CkBAIC02NCw3ICs2NCw3
IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbXBs
ZXRlT25UaGlzVGhyZWFkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewotICAgICAg
ICBBU1NFUlQobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAgICBB
U1NFUlQobV9vcmlnaW5UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAg
ICBtX3RyYW5zYWN0aW9uLT5vcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihkYXRhLCAqdGhpcyk7
CiAgICAgfQogCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIGlmIChtX29yaWdp
blRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSkKKyAgICAgICAgaWYgKG1fb3JpZ2luVGhyZWFk
LmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKQogICAgICAgICAgICAgdHJhbnNpdGlvblRvQ29t
cGxldGVPblRoaXNUaHJlYWQoZGF0YSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV90
cmFuc2FjdGlvbi0+cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoKnRoaXMsICZUcmFuc2Fj
dGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQsIGRhdGEpOwpA
QCAtODMsNyArODMsNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gewogCiAgICAgdm9pZCBkb0Nv
bXBsZXRlKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9v
cmlnaW5UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgICAgIC8vIER1
ZSB0byByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiB0aGUgc2VydmVyIHNlbmRpbmcgYW4gIm9wZXJh
dGlvbiBjb21wbGV0ZSIgbWVzc2FnZSBhbmQgdGhlIGNsaWVudAogICAgICAgICAvLyBmb3JjZWZ1
bGx5IGFib3J0aW5nIGFuIG9wZXJhdGlvbiwgaXQncyB1bmF2b2lkYWJsZSB0aGF0IHRoaXMgbWV0
aG9kIG1pZ2h0IGJlIGNhbGxlZCB0d2ljZS4KQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBUcmFu
c2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gewogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBUaHJlYWRJZGVudGlm
aWVyIG9yaWdpblRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWRJRDsgfQor
ICAgIFRocmVhZCYgb3JpZ2luVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWQu
Z2V0KCk7IH0KIAogICAgIElEQlJlcXVlc3QqIGlkYlJlcXVlc3QoKSB7IHJldHVybiBtX2lkYlJl
cXVlc3QuZ2V0KCk7IH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3Bl
cmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiB7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCkgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbi5nZXQoKTsgfQogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIGluZGV4UmVjb3Jk
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhSZWNvcmRUeXBlOyB9CiAKLSAgICBUaHJlYWRJ
ZGVudGlmaWVyIG1fb3JpZ2luVGhyZWFkSUQgeyBjdXJyZW50VGhyZWFkKCkgfTsKKyAgICBSZWY8
VGhyZWFkPiBtX29yaWdpblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAgICAgUmVmUHRy
PElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKICAgICBib29sIG1fbmV4dFJlcXVlc3RDYW5Hb1Rv
U2VydmVyIHsgdHJ1ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBkOTUwNDdjOTAzMDUxYzBiYzNkNWU2MzhiMjdiNDU4
NTQyNGIwNTMyLi5hMDM4MWExYmQ0NDRmMDBjOGUxODg1MmE2NTllNWUzY2MxNDE1NGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBA
IC0xMDAsOSArMTAwLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0vLyBGSVhNRTogY2hlY2sgdGhlIHByb3BlciB3YXkg
dG8gcmVmZXJlbmNlIGFuIHVuZGVmaW5lZCB0aHJlYWQgSUQKLWNvbnN0IGludCBVbmRlZmluZWRU
aHJlYWRJZGVudGlmaWVyID0gMHhmZmZmZmZmZjsKLQogY29uc3QgdW5zaWduZWQgTWF4UGVyaW9k
aWNXYXZlTGVuZ3RoID0gNDA5NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM2LDcgKzEz
Myw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6
Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCi0gICAgLCBtX2dyYXBoT3du
ZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKKyAgICAsIG1fZ3JhcGhPd25lclRo
cmVhZChudWxscHRyKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTIsNyArMTQ5
LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0
cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgq
dGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQotICAgICwgbV9ncmFwaE93bmVyVGhyZWFkKFVuZGVmaW5lZFRocmVhZElk
ZW50aWZpZXIpCisgICAgLCBtX2dyYXBoT3duZXJUaHJlYWQobnVsbHB0cikKIHsKICAgICBjb25z
dHJ1Y3RDb21tb24oKTsKIApAQCAtNjk2LDIzICs2OTMsMjMgQEAgdm9pZCBBdWRpb0NvbnRleHQ6
OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAgIC8vIERvbid0IGFsbG93IHJlZ3VsYXIg
bG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBUaHJlYWRJZGVudGlmaWVyIHRoaXNUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7
CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAKLSAgICBpZiAo
dGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICBpZiAoJnRoaXNUaHJlYWQg
PT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUg
bG9jay4KICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KICAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRleC5s
b2NrKCk7Ci0gICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IHRoaXNUaHJlYWQ7CisgICAgICAg
IG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOwogICAgICAgICBtdXN0UmVsZWFzZUxv
Y2sgPSB0cnVlOwogICAgIH0KIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYg
bXVzdFJlbGVhc2VMb2NrKQogewotICAgIFRocmVhZElkZW50aWZpZXIgdGhpc1RocmVhZCA9IGN1
cnJlbnRUaHJlYWQoKTsKLSAgICBib29sIGlzQXVkaW9UaHJlYWQgPSB0aGlzVGhyZWFkID09IGF1
ZGlvVGhyZWFkKCk7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9UaHJlYWQoKTsK
IAogICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9jayBvbiBtYWluIHRo
cmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgogICAgIEFTU0VSVChpc0F1ZGlvVGhy
ZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKQEAgLTcyNSw3ICs3MjIsNyBAQCBib29s
IEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCiAgICAgCiAgICAg
Ym9vbCBoYXNMb2NrOwogICAgIAotICAgIGlmICh0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRo
cmVhZCkgeworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKICAg
ICAgICAgLy8gVGhyZWFkIGFscmVhZHkgaGFzIHRoZSBsb2NrLgogICAgICAgICBoYXNMb2NrID0g
dHJ1ZTsKICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CkBAIC03MzQsNyArNzMxLDcg
QEAgYm9vbCBBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAg
ICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoaGFzTG9jaykKLSAgICAgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IHRo
aXNUaHJlYWQ7CisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVhZDsK
IAogICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOwogICAgIH0KQEAgLTc0NCwyMCAr
NzQxLDIwIEBAIGJvb2wgQXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykKIAogdm9pZCBBdWRpb0NvbnRleHQ6OnVubG9jaygpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQpOworICAgIEFTU0VSVCgmVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV9ncmFwaE93bmVyVGhyZWFkKTsKIAotICAgIG1fZ3JhcGhPd25lclRocmVhZCA9
IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXI7CisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVs
bHB0cjsKICAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOwogfQogCiBib29sIEF1ZGlv
Q29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2F1ZGlvVGhyZWFkOworICAgIHJldHVybiAmVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9hdWRpb1RocmVhZDsKIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OmlzR3JhcGhPd25lcigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQ7
CisgICAgcmV0dXJuICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQ7CiB9
CiAKIHZvaWQgQXVkaW9Db250ZXh0OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSog
bm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CmluZGV4IDQ3NGU2ODdhYmM4MDA5OGE3ZWZjMzk0ZDI1NDg3YzQ4ZGZlMGUzZTQuLmQ2M2Q0NDE2
MDgzYmM4YzRhY2RlMjU4M2FkMTVkMmM5MDkwZGYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTc4LDggKzE3OCw4IEBAIGNsYXNz
IEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBdWRpb0NvCiAgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2lu
ZzoKICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkSWRlbnRpZmll
ciB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9IHRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0
aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQotICAgIFRocmVhZElkZW50aWZpZXIgYXVk
aW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9CisgICAgdm9pZCBzZXRB
dWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAv
LyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIFRo
cmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFRocmVhZCo+KG1f
YXVkaW9UaHJlYWQpOyB9CiAgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3Q7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0
ZWQgYW5kIHRoZW4gc2h1dGRvd24uCkBAIC0zODEsOCArMzgxLDEwIEBAIGNsYXNzIEF1ZGlvQ29u
dGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxBdWRpb0NvCiAKICAgICAvLyBHcmFwaCBsb2NraW5nLgogICAgIExvY2sgbV9jb250ZXh0R3Jh
cGhNdXRleDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fYXVkaW9UaHJlYWQgeyAw
IH07Ci0gICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmllciBtX2dyYXBoT3duZXJUaHJlYWQ7IC8v
IGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBp
dCwgb3RoZXJ3aXNlID09IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIKKyAgICAvLyBGSVhNRTog
VXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICB2b2xhdGlsZSBUaHJlYWQqIG1fYXVk
aW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgdm9sYXRpbGUgVGhyZWFkKiBtX2dyYXBoT3duZXJU
aHJlYWQ7IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hp
Y2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IG51bGxwdHIuCiAKICAgICBBc3luY0F1ZGlvRGVjb2Rl
ciBtX2F1ZGlvRGVjb2RlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA1MTEyODE4NTE4NGYzY2Ni
NWE1ZDBmOGU5MDAzNzYxZTlhMzUwYzdjLi42Mjk3NjZjM2I4ZTc1Y2FlMDExMWEzN2EzM2M4ZmZi
ZTI4ZjFiOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpyZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRpb25C
dXMsIHNpemVfdCBudQogICAgIC8vIFRoaXMgd2lsbCB0YWtlIGNhcmUgb2YgYWxsIEF1ZGlvTm9k
ZXMgYmVjYXVzZSB0aGV5IGFsbCBwcm9jZXNzIHdpdGhpbiB0aGlzIHNjb3BlLgogICAgIERlbm9y
bWFsRGlzYWJsZXIgZGVub3JtYWxEaXNhYmxlcjsKICAgICAKLSAgICBjb250ZXh0KCkuc2V0QXVk
aW9UaHJlYWQoY3VycmVudFRocmVhZCgpKTsKKyAgICBjb250ZXh0KCkuc2V0QXVkaW9UaHJlYWQo
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIAogICAgIGlmICghY29udGV4dCgpLmlzSW5pdGlhbGl6
ZWQoKSkgewogICAgICAgICBkZXN0aW5hdGlvbkJ1cy0+emVybygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCA3ODNmOTIxZjEyN2E1
YTM0ZWNlYjU4YWM2ZDVhYThkZjMzNmIyMWRhLi40MjA4ZWFlMWFmNjRkNmQyNWM2YzRmNjI5Yjdk
ZGUzODg2ZTBjYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkK
IAogdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IGRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpKTsKIAogICAg
IHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRl
eCk7CkBAIC03NjgsNyArNzY4LDcgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbigpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250
ZXh0VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKSk7Ci0gICAgaWYg
KGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZElEKCkpCisgICAg
aWYgKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpKQog
ICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9k
YXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKaW5kZXggYTRlOTlhZDBiZGZmOTA2YjA2YjNkN2ZiOGM0
N2QzMWNjOTRhODQyNS4uY2JhZTEzNzE1M2Q4ZWFmYWI3NTljMGEwNzQ1YzRkMzE0ZjljMDgzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURl
dGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
RGV0YWlscy5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAgICAg
ICAgICwgbV9jcmVhdGlvblRpbWUoMCkKICAgICAgICAgLCBtX21vZGlmaWNhdGlvblRpbWUoMCkK
ICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV90aHJlYWRJRChUaHJlYWQ6OmN1cnJlbnRJRCgp
KQorICAgICAgICAsIG1fdGhyZWFkKCZUaHJlYWQ6OmN1cnJlbnQoKSkKICNlbmRpZgogICAgIHsK
ICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAgICAgICAg
ICwgbV9jcmVhdGlvblRpbWUoY3JlYXRpb25UaW1lKQogICAgICAgICAsIG1fbW9kaWZpY2F0aW9u
VGltZShtb2RpZmljYXRpb25UaW1lKQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3RocmVh
ZElEKFRocmVhZDo6Y3VycmVudElEKCkpCisgICAgICAgICwgbV90aHJlYWQoJlRocmVhZDo6Y3Vy
cmVudCgpKQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRGF0
YWJhc2VEZXRhaWxzIHsKICAgICBkb3VibGUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jcmVhdGlvblRpbWU7IH0KICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQogI2lmbmRlZiBOREVCVUcKLSAgICBUaHJlYWRJ
ZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRJRDsgfQorICAgIFRo
cmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gKm1fdGhyZWFkOyB9CiAjZW5kaWYKIAogcHJp
dmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICBkb3Vi
bGUgbV9jcmVhdGlvblRpbWU7CiAgICAgZG91YmxlIG1fbW9kaWZpY2F0aW9uVGltZTsKICNpZm5k
ZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFJlZlB0cjxU
aHJlYWQ+IG1fdGhyZWFkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNDhlMGM0NzY3
OGM4ZjI2NTU0OGQ5NzUxMWE1OTkwNzE5NmFhOTkyNy4uN2YxYzgxZTE5MzQyMTFkMTBhZjI0NDRm
NjU0NTJlMTRkMjZjMjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIERhdGFi
YXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0
IFN0cmluZyYgbmFtZSwgU2VjCiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrIHsg
bV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWRE
YXRhYmFzZSA6IG1fcHJvcG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3Nl
ZERhdGFiYXNlLT5kZXRhaWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+
b3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocHJvcG9z
ZWREYXRhYmFzZS0+ZGV0YWlscygpLnRocmVhZElEKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSB8
fCBpc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Bvc2VkRGF0YWJh
c2UtPmRldGFpbHMoKS50aHJlYWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSB8fCBpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAxMTUyNGNkY2QyYWIz
NDJmYjA5ZmU2MTlhYjQ2ZjU3OTIzY2U2OWVmLi5lNGY1MTZlNzIzYTcxYWViOGY3OGYwZGIzMzRi
MTJmZmUxNTNiZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRGF0YWJh
c2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKICAgICAvLyBDbGVhbiB1cCB0aGUgbGlzdCBvZiBh
bGwgcGVuZGluZyB0cmFuc2FjdGlvbnMgb24gdGhpcyBkYXRhYmFzZSB0aHJlYWQKICAgICBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3ItPnNodXRkb3duKCk7CiAKLSAgICBMT0coU3RvcmFnZUFQSSwg
IkFib3V0IHRvIGRldGFjaCB0aHJlYWQgJWkgYW5kIGNsZWFyIHRoZSByZWYgdG8gRGF0YWJhc2VU
aHJlYWQgJXAsIHdoaWNoIGN1cnJlbnRseSBoYXMgJWkgcmVmKHMpIiwgbV90aHJlYWQtPmlkKCks
IHRoaXMsIHJlZkNvdW50KCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAiQWJvdXQgdG8gZGV0YWNo
IHRocmVhZCAlcCBhbmQgY2xlYXIgdGhlIHJlZiB0byBEYXRhYmFzZVRocmVhZCAlcCwgd2hpY2gg
Y3VycmVudGx5IGhhcyAlaSByZWYocykiLCBtX3RocmVhZC5nZXQoKSwgdGhpcywgcmVmQ291bnQo
KSk7CiAKICAgICAvLyBDbG9zZSB0aGUgZGF0YWJhc2VzIHRoYXQgd2UgcmFuIHRyYW5zYWN0aW9u
cyBvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgYW55IHRyYW5zYWN0aW9ucyBhcmUgc3RpbGwgb3Bl
biwgdGhleSBhcmUgcm9sbGVkIGJhY2sgYW5kIHdlIGRvbid0IGxlYXZlIHRoZSBkYXRhYmFzZSBp
biBhbgogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQgc3RhdGUuCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlJiBk
YXRhYmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7
CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBB
U1NFUlQoJlRocmVhZDo6Y3VycmVudCgpID09IG1fdGhyZWFkKTsKICAgICBBU1NFUlQoIW1fb3Bl
bkRhdGFiYXNlU2V0LmNvbnRhaW5zKCZkYXRhYmFzZSkpOwogICAgIG1fb3BlbkRhdGFiYXNlU2V0
LmFkZCgmZGF0YWJhc2UpOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRGF0YWJhc2VUaHJl
YWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBMb2Nr
SG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CiAKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBBU1NFUlQoJlRocmVhZDo6Y3VycmVu
dCgpID09IG1fdGhyZWFkKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29wZW5E
YXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKICAgICBtX29wZW5EYXRhYmFzZVNldC5y
ZW1vdmUoJmRhdGFiYXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCAzNDAwOWQxYjIyYzQ0YzJlMDNlZWNiYjdm
NDRlNGM3YzhkN2RhZDU4Li5hOGM1NzBiNmYzYWM0YjNhN2RkNDFjZjFiMTI3NzJiZWJkOGM0N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIERhdGFiYXNlVGhyZWFkIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNlVGhyZWFkPiB7CiAKICAgICB2b2lkIHJlY29y
ZERhdGFiYXNlT3BlbihEYXRhYmFzZSYpOwogICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9zZWQo
RGF0YWJhc2UmKTsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGdldFRocmVhZElEKCkgeyByZXR1cm4g
bV90aHJlYWQgPyBtX3RocmVhZC0+aWQoKSA6IDA7IH0KKyAgICBUaHJlYWQqIGdldFRocmVhZCgp
IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKICAgICBTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTcxZTBkYjc4MWFjZTlmYzVlNzU0N2Jl
MTNiN2ZlNGIzNzY3MGI5Yi4uMTg3N2YzNGE4YzNiNjFjNjJkOGNjYmU1MjFhNDdmNWIwYzRmNzUz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpj
aGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVy
LmNsZWFyKCk7CiAKICAgICAvLyBUaGUgbmV4dCBzdGVwcyBzaG91bGQgYmUgZXhlY3V0ZWQgb25s
eSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgotICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0g
bV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgpKQorICAgIGlmICgmVGhy
ZWFkOjpjdXJyZW50KCkgIT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0
aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5k
ZXggMmVhOTNkZGYyYjU0NzU4MDY1ZjZkNjExM2EwZWRlYzFjMjNlZTVlYy4uZDRjMTE0YTViOWQ5
NDQ0MzMxYTljNmE4ZjI3NzExZjVmNTk3MTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApA
QCAtMzUzLDcgKzM1Myw3IEBAIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6flNRTFRyYW5zYWN0aW9u
QmFja2VuZCgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFi
YXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2Zyb250ZW5kLmRhdGFiYXNlKCkuZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSk7
CiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKIApAQCAtNDY1
LDcgKzQ2NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRlTmV4dFN0YXRl
QW5kQ2xlYW51cElmTmVlZGVkKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om5vdGlm
eURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2Zyb250ZW5kLmRhdGFi
YXNlKCkuZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSk7CiAKICAgICAvLyBJZiB0aGUgdHJh
bnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVyZSwgc2lu
Y2UgdGhpcwogICAgIC8vIGlzIG91ciBsYXN0IG9wcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGluZyBy
ZWxhdGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCA0OWUxNTM1MzZhNmEzNTRhNmMzNmI1MTQ5MTA4
OTczZGEzOWNiZGRjLi5mMzQzY2M1OTA0ZmMyODdhMjVlMzJkZjg5NjAwM2ExNzNjNmU2YzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTUyLDcg
KzUyLDcgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEgewogICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tE
YXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIDogbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3RocmVhZChj
dXJyZW50VGhyZWFkKCkpCisgICAgICAgICwgbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkpCiAj
ZW5kaWYKICAgICB7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBKU0NhbGxiYWNrRGF0
YSB7CiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFTU0VS
VChtX3RocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKICAgICB9CiAg
ICAgCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tEYXRhIHsKIHByaXZhdGU6CiAg
ICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKICNpZm5kZWYg
TkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZDsKKyAgICBSZWY8VGhyZWFkPiBt
X3RocmVhZDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggMGY3NGU2YzE0MDFkOGJhZGQ0YTQ1NmIxMWNjOWNmOTRi
N2E4MTQ3Ny4uNjM1Nzc2OWQzMmQzMzc4OGY5YWFkOGJhZTUyM2NjNTg3NGQzOTQ2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0xNDYs
NyArMTQ2LDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogewogICAgIC8vIEluIGEgV29ya2VyLCB0aGUgZXhlY3V0aW9uIHNo
b3VsZCBhbHdheXMgaGFwcGVuIG9uIGEgd29ya2VyIHRocmVhZC4KLSAgICBBU1NFUlQod29ya2Vy
R2xvYmFsU2NvcGUudGhyZWFkKCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOworICAg
IEFTU0VSVCh3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxl
ciA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMjE5OWQ0YTFlMTZhYTNiYmU2NGVjNmFj
MTQ5ODljY2VlNDNhYjY0MS4uZjVkYTJiNjg5OTkzNzllZTkxZTE1NDkzZWZiODE0YjU3ZDZiYTFl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hN
ZXNzYWdlUG9ydEV2ZW50cygpCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRN
ZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB7CiAgICAgQVNTRVJUKChpczxE
b2N1bWVudD4oKnRoaXMpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CisgICAgICAgIHx8IChp
czxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZCgpKSk7CiAKICAg
ICBtX21lc3NhZ2VQb3J0cy5hZGQoJm1lc3NhZ2VQb3J0KTsKIH0KQEAgLTE3Miw3ICsxNzIsNyBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdlUG9ydChNZXNzYWdl
UG9ydCYgbWVzc2FnZVBvcnQpCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3ll
ZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKIHsKICAgICBBU1NFUlQoKGlz
PERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKKyAgICAgICAgfHwg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgJlRocmVhZDo6Y3VycmVudCgpID09IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkpKTsKIAog
ICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oCmluZGV4IDY0NmRmZWZjYzBiNmRhNDU3OTQ3
YWFkMmQ4ZTM1YThhZjI4NzAxNDUuLjE2YWVhNjAxZDE0ZTI2Mjg3NDViNjA0MDRiZjc5ZmRiYjZk
Mzk5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92ZXJs
YXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5LmgKQEAg
LTc4LDcgKzc4LDYgQEAgY2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXkgZmluYWwgOiBwdWJsaWMg
UGFnZU92ZXJsYXk6OkNsaWVudCB7CiAgICAgSW50UG9pbnQgbV9kcmFnUG9pbnQ7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQgeyAwIH07CiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
Y29udGFpbmVyTGF5ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IGQyMDRjNzYyMTBiMzM0MDRkZjQ0YzRkYTNm
Y2E3YWNjZDc3YjQyYTIuLjYxZmFjM2FlOGM1MmQzOTFkM2Q5MGI4ZTE3MmEwNGYzOTM4Y2IzY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
LmNwcApAQCAtNDAsOCArNDAsNyBAQCBTY3JvbGxpbmdUaHJlYWQ6OlNjcm9sbGluZ1RocmVhZCgp
CiAKIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKQogewotICAgIFJlZlB0
cjxUaHJlYWQ+IHRocmVhZCA9IFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCkubV90aHJlYWQ7
Ci0gICAgcmV0dXJuIHRocmVhZCAmJiB0aHJlYWQtPmlkKCkgPT0gY3VycmVudFRocmVhZCgpOwor
ICAgIHJldHVybiBTY3JvbGxpbmdUaHJlYWQ6OnNpbmdsZXRvbigpLm1fdGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdXBwbGVtZW50YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVu
dGFibGUuaAppbmRleCAzM2Y2OWEyZDFlZDVlYjgwMGNiZDk1MDA0ZjE4NjJhZTgxOGYxMzI2Li43
OTg0YzVkNjY0MTU2N2FlZTNjMmI2YzgxNDBhNjRiYWEyMjI3NGJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgKQEAgLTk4LDMzICs5OCwzMyBAQCBjbGFzcyBTdXBw
bGVtZW50YWJsZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBwcm92aWRlU3VwcGxlbWVudChjb25zdCBj
aGFyKiBrZXksIHN0ZDo6dW5pcXVlX3B0cjxTdXBwbGVtZW50PFQ+PiBzdXBwbGVtZW50KQogICAg
IHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3Ro
cmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJl
YWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgQVNTRVJUKCFtX3N1cHBsZW1lbnRzLmdldChr
ZXkpKTsKICAgICAgICAgbV9zdXBwbGVtZW50cy5zZXQoa2V5LCBXVEZNb3ZlKHN1cHBsZW1lbnQp
KTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZVN1cHBsZW1lbnQoY29uc3QgY2hhcioga2V5KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZCht
X3RocmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JU
aHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgbV9zdXBwbGVtZW50cy5yZW1vdmUoa2V5
KTsKICAgICB9CiAKICAgICBTdXBwbGVtZW50PFQ+KiByZXF1aXJlU3VwcGxlbWVudChjb25zdCBj
aGFyKiBrZXkpCiAgICAgewotICAgICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRh
Rm9yVGhyZWFkKG1fdGhyZWFkSWQpKTsKKyAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExv
Y2FsRGF0YUZvclRocmVhZChtX3RocmVhZC5nZXQoKSkpOwogICAgICAgICByZXR1cm4gbV9zdXBw
bGVtZW50cy5nZXQoa2V5KTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBwcm90ZWN0
ZWQ6Ci0gICAgU3VwcGxlbWVudGFibGUoKSA6IG1fdGhyZWFkSWQoY3VycmVudFRocmVhZCgpKSB7
IH0KKyAgICBTdXBwbGVtZW50YWJsZSgpIDogbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkpIHsg
fQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBz
dGQ6OnVuaXF1ZV9wdHI8U3VwcGxlbWVudDxUPj4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBTdXBw
bGVtZW50TWFwOwogICAgIFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKICNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElkOworICAgIFJlZjxUaHJl
YWQ+IG1fdGhyZWFkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKaW5k
ZXggOWNjYjQwMjFmNTAzMzc4YTg2MjI0ZTRhNmQ3NTFkYTQ4YTkzMjY3Ny4uODdkNGU2OTBmNjE2
NDBiM2M1ODI4MWFiYzI5YzY0MTllMDFiNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNw
cApAQCAtMTg2LDkgKzE4Niw2IEBAIGlubGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rp
b246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiBhLCBjb25zdCBUaW1lCiAvLyAtLS0tLS0t
LS0tLS0tLS0tCiAKIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSNpZm5kZWYgTkRFQlVHCi0gICAg
OiBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjAzLDcgKzIw
MCw3IEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAKIHZvaWQgVGltZXJCYXNlOjpzdGFydChT
ZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpCiB7Ci0gICAg
QVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAg
IEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkp
KTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZhbDsKICAgICBzZXROZXh0
RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBuZXh0RmlyZUludGVydmFsKTsKQEAgLTIx
MSw3ICsyMDgsNyBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUludGVy
dmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogCiB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiB7
Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkp
OworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQu
Z2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwX3M7CiAgICAgc2V0TmV4dEZpcmVU
aW1lKE1vbm90b25pY1RpbWUgeyB9KTsKQEAgLTM2Miw3ICszNTksNyBAQCB2b2lkIFRpbWVyQmFz
ZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSkKIAogdm9pZCBUaW1l
ckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIG5ld1RpbWUpCiB7Ci0gICAgQVNT
RVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAgIEFT
U0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsK
ICAgICBBU1NFUlQoIW1fd2FzRGVsZXRlZCk7CiAKICAgICBpZiAobV91bmFsaWduZWROZXh0Rmly
ZVRpbWUgIT0gbmV3VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IGUzZmQ3Yjk2Y2Q5
M2JmOWZhMjcwNmRiYzRiNTgwN2I1NzBlZDU2YzUuLjk1NTg3YjI2ZTJmZDBjNzEwYWI1NjQzNzQ3
MjZjYTg3NDk4NTI3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMTAzLDcgKzEwMyw3
IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgVmVjdG9yPFRpbWVyQmFzZSo+KiBtX2NhY2hlZFRo
cmVhZEdsb2JhbFRpbWVySGVhcCB7IG51bGxwdHIgfTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBU
aHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOworICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhy
ZWFkOjpjdXJyZW50KCkgfTsKICAgICBib29sIG1fd2FzRGVsZXRlZCB7IGZhbHNlIH07CiAjZW5k
aWYKIApAQCAtMTQwLDkgKzE0MCw5IEBAIGlubGluZSBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUo
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlzIGluIHRlcm1zIG9mIFVTRShXRUJf
VEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPUykuCiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICBBU1NFUlQobV90aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV90aHJl
YWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vsc2UKLSAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9tYWluX25wKCkgfHwgbV90aHJlYWQgPT0gY3VycmVu
dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9t
YWluX25wKCkgfHwgbV90aHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0Rmly
ZVRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDFmMmI1ZjVkMGJhODUxYjIx
Mzk1NGY4NDg0N2Q5M2E0MmIwYTU5ZjIuLjNlOWQyZThiNWNlOTc0NDA3MjFiMjllNDQ5MDE3ZTky
ZGUzZTllMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEyMjQsOCArMTIyNCw4IEBA
IHN0YXRpYyBib29sIHNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gVGhpcyBjYWNoZSBpcyBub3Qg
dGhyZWFkIHNhZmUgc28gdGhlIGZvbGxvd2luZyBhc3NlcnRpb24gaXMgdGhlcmUgdG8KICAgICAv
LyBtYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY2FsbGVkIGZyb20gdGhlIHNhbWUg
dGhyZWFkLgotICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGluaXRUaHJlYWRJZCA9IGN1cnJl
bnRUaHJlYWQoKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGluaXRUaHJlYWRJZCk7
CisgICAgc3RhdGljIFRocmVhZCogaW5pdFRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyAg
ICBBU1NFUlQoJlRocmVhZDo6Y3VycmVudCgpID09IGluaXRUaHJlYWQpOwogI2VuZGlmCiAKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBrbm93bkZhbWls
aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3Bw
CmluZGV4IDFjY2EwY2NkYTgyMWFhNTJlZDVlMDU0NTFmMWYxZDVmMWNhYzg3Y2IuLmIyM2RhYzI5
YjRkNzQ5ZmNmY2NiMjMzNzYwOTVmZWYyMGI1ZTgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKQEAgLTU4LDkgKzU4LDEwIEBAIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5KCkKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNv
bXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvbXBvc2l0b3IsIFRleHR1cmVNYXBwZXJMYXll
ciogdGFyZ2V0TGF5ZXIpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIG1fY29tcG9zaXRvclRocmVh
ZElEID0gbV9jb21wb3NpdG9yVGhyZWFkSUQgPyBtX2NvbXBvc2l0b3JUaHJlYWRJRCA6IFdURjo6
Y3VycmVudFRocmVhZCgpOworICAgIGlmICghbV9jb21wb3NpdG9yVGhyZWFkKQorICAgICAgICBt
X2NvbXBvc2l0b3JUaHJlYWQgPSAmVGhyZWFkOjpjdXJyZW50KCk7CiAjZW5kaWYKLSAgICBBU1NF
UlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIEFT
U0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NF
UlQoY29tcG9zaXRvcik7CiAgICAgQVNTRVJUKHRhcmdldExheWVyKTsKICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOwpAQCAtODAsNyArODEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBj
bwogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmludmFsaWRhdGUoKQog
ewotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQo
KSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogICAgIEZ1bmN0aW9uPHZvaWQoKT4gdXBkYXRlRnVuY3Rpb247CiAgICAgewogICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwpAQCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cHVzaE5leHRCdWZmZXIoc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmdldEF2YWlsYWJsZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKIHsKICAgICBBU1NF
UlQobV9sb2NrLmlzSGVsZCgpKTsKLSAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWlsYWJsZUJ1ZmZlcjsKIAogICAgIGF1dG8gYnVmZmVycyA9
IFdURk1vdmUobV91c2VkQnVmZmVycyk7CkBAIC0xNDQsNyArMTQ1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3gKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YXBwZW5k
VG9VbnVzZWRCdWZmZXJzKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gYnVmZmVyKQogewogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwotICAgIEFT
U0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIG1f
dXNlZEJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgc2NoZWR1bGVSZWxlYXNl
VW51c2VkQnVmZmVycygpOwogfQpAQCAtMTcyLDcgKzE3Myw3IEBAIHZvaWQgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCkKIAog
dm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpzd2FwQnVmZmVyKCkKIHsKLSAg
ICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIGlmICghbV90YXJnZXRMYXllciB8fCAh
bV9wZW5kaW5nQnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaAppbmRleCBkMDA0Y2M4MGZlODY1Y2I3M2MyZTFkNGM4
Y2JmY2YyNmNjZTI5Yjg2Li5hY2MzMDYwZDBkMmFjODg1MzZlNDMxYmI2MGIwNzUwMDcxMDJlMzcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKQEAg
LTkxLDcgKzkxLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUZXh0dXJlTWFwcGUKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+IG1fcmVs
ZWFzZVVudXNlZEJ1ZmZlcnNUaW1lcjsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fY29tcG9zaXRvclRocmVhZElEIHsgMCB9OworICAgIFJlZlB0cjxUaHJlYWQ+IG1f
Y29tcG9zaXRvclRocmVhZCB7IG51bGxwdHIgfTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21wb3Np
dG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDgwZTQ1NDA4NGM4MGUwNmEyMThiZjdm
MGIwZWFkYzIxNjk5MTMzM2MuLjk1ZmNmMTMxMzUyZTJhMzgxZDlmNGM1N2M1ZTI0ZTBkMDdhOThi
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KQEAgLTY1Niw3ICs2NTYsNiBAQCB2b2lkICpSdW5XZWJUaHJlYWQodm9pZCAqYXJnKQog
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBXZWJUaHJlYWQgYW5kIHRoZSBtYWluIHRo
cmVhZCBzaGFyZSB0aGUgc2FtZSBUaHJlYWRHbG9iYWxEYXRhIG9iamVjdHMuCiAgICAgV2ViQ29y
ZTo6dGhyZWFkR2xvYmFsRGF0YSgpLnNldFdlYkNvcmVUaHJlYWREYXRhKCk7Ci0gICAgaW5pdGlh
bGl6ZVdlYlRocmVhZElkZW50aWZpZXIoKTsKIAogI2lmIEhBVkUoUFRIUkVBRF9TRVROQU1FX05Q
KQogICAgIHB0aHJlYWRfc2V0bmFtZV9ucCgiV2ViVGhyZWFkIik7CkBAIC03NjYsNyArNzY1LDcg
QEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogICAgICAgICBzdGFydHVwQ29uZGl0aW9u
LndhaXQoc3RhcnR1cExvY2spOwogICAgIH0KIAotICAgIGluaXRpYWxpemVBcHBsaWNhdGlvblVJ
VGhyZWFkSWRlbnRpZmllcigpOworICAgIGluaXRpYWxpemVBcHBsaWNhdGlvblVJVGhyZWFkKCk7
CiB9CiAKIHN0YXRpYyBpbnQgV2ViVGltZWRDb25kaXRpb25Mb2NrIChwdGhyZWFkX2NvbmRfdCAq
Y29uZGl0aW9uLCBwdGhyZWFkX211dGV4X3QgKmxvY2ssIENGQWJzb2x1dGVUaW1lIGludGVydmFs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5k
ZXggOTg3YjM0NmFlYjkxNzIzODQ4ZjAzNjc0YTgxYTkxNzJjYTc4MzM2MS4uNDA2Y2ViMWE5MjRm
NWI2YjkyOGM1NDUyMzExOGY4NGUwYjU5NWZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBTUUxp
dGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIGZvcldlYlNRTERh
dGFiYXNlKQogICAgIH0KIAogICAgIGlmIChpc09wZW4oKSkKLSAgICAgICAgbV9vcGVuaW5nVGhy
ZWFkID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBtX29wZW5pbmdUaHJlYWQgPSAmVGhyZWFk
OjpjdXJyZW50KCk7CiAgICAgZWxzZQogICAgICAgICBtX29wZW5FcnJvck1lc3NhZ2UgPSAic3Fs
aXRlX29wZW4gcmV0dXJuZWQgbnVsbCI7CiAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNRTGl0
ZURhdGFiYXNlOjpjbG9zZSgpCiB7CiAgICAgaWYgKG1fZGIpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYmVpbmcgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBkdXJpbmcgSlMgR0MuIDxy
ZGFyOi8vcHJvYmxlbS81NzM5ODE4PgotICAgICAgICAvLyBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fb3BlbmluZ1RocmVhZCk7CisgICAgICAgIC8vIEFTU0VSVCgmVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9vcGVuaW5nVGhyZWFkKTsKICAgICAgICAgc3FsaXRlMyogZGIgPSBtX2RiOwogICAg
ICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlQ2xvc2luZ011
dGV4KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbG9zZSgpCiAg
ICAgICAgIHNxbGl0ZTNfY2xvc2UoZGIpOwogICAgIH0KIAotICAgIG1fb3BlbmluZ1RocmVhZCA9
IDA7CisgICAgbV9vcGVuaW5nVGhyZWFkID0gbnVsbHB0cjsKICAgICBtX29wZW5FcnJvciA9IFNR
TElURV9FUlJPUjsKICAgICBtX29wZW5FcnJvck1lc3NhZ2UgPSBDU3RyaW5nKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDcxNzJlNGUx
MzM2NjNhY2UwZjg5YzU0NGYxZjBmMTA2NjRiYjkwYzAuLjliZTFhZDQ0OGEwOTBiYjFjNzI2YzQw
MzAwOWEyMzMxMjljYmEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgU1FMaXRlRGF0YWJhc2Ugewog
ICAgIHNxbGl0ZTMqIHNxbGl0ZTNIYW5kbGUoKSBjb25zdAogICAgIHsKICNpZiAhUExBVEZPUk0o
SU9TKQotICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8fCBjdXJyZW50VGhyZWFkKCkgPT0gbV9v
cGVuaW5nVGhyZWFkIHx8ICFtX2RiKTsKKyAgICAgICAgQVNTRVJUKG1fc2hhcmFibGUgfHwgJlRo
cmVhZDo6Y3VycmVudCgpID09IG1fb3BlbmluZ1RocmVhZCB8fCAhbV9kYik7CiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuIG1fZGI7CiAgICAgfQpAQCAtMTU3LDcgKzE1Nyw3IEBAIGNsYXNzIFNRTGl0
ZURhdGFiYXNlIHsKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2F1dGhvcml6ZXI7
CiAKICAgICBMb2NrIG1fbG9ja2luZ011dGV4OwotICAgIFRocmVhZElkZW50aWZpZXIgbV9vcGVu
aW5nVGhyZWFkIHsgMCB9OworICAgIFJlZlB0cjxUaHJlYWQ+IG1fb3BlbmluZ1RocmVhZCB7IG51
bGxwdHIgfTsKIAogICAgIExvY2sgbV9kYXRhYmFzZUNsb3NpbmdNdXRleDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4ODYxZWI4MWQ1NmVm
OThhODMzMWUyODQ0Y2YyMDBhOThmOThmMTVhLi5mNjc0ZDRhMjlhMWYyOWEyNGVhMWUyN2Y1ZjJk
ZjJlOGM4NTU0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYwogCiBXb3Jr
ZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IHRocmVhZCgpLnRocmVhZElEKCkpOworICAgIEFTU0VSVCgmVGhyZWFkOjpj
dXJyZW50KCkgPT0gdGhyZWFkKCkudGhyZWFkKCkpOwogCiAgICAgbV9wZXJmb3JtYW5jZSA9IG51
bGxwdHI7CiAgICAgbV9jcnlwdG8gPSBudWxscHRyOwpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQg
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uCiAKIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OmlzQ29udGV4dFRo
cmVhZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWQoKS50
aHJlYWRJRCgpOworICAgIHJldHVybiAmVGhyZWFkOjpjdXJyZW50KCkgPT0gdGhyZWFkKCkudGhy
ZWFkKCk7CiB9CiAKIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAppbmRleCBiNWRkMzhhNTYwYTI0YTVkMjdjMjdjYjU1MGFiMTg2ODE3M2Y3ZDc5Li5l
ZGQ3ZTgzMTEzNWUwNGQ1OWUwYTg3NmQ0NjI4ZjEzZDMyOTBkNWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNTksNyArNTksNyBA
QCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkoV29ya2VyJiB3b3Jr
ZXJPYmplY3QpCiAgICAgLCBtX3dvcmtlck9iamVjdCgmd29ya2VyT2JqZWN0KQogewogICAgIEFT
U0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGlzTWFpblRo
cmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkSUQoKSkpOwor
ICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpICYmICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Km1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkKCkpKTsKIAogICAgIC8v
IE5vYm9keSBvdXRzaWRlIHRoaXMgY2xhc3MgcmVmIGNvdW50cyB0aGlzIG9iamVjdC4gVGhlIG9y
aWdpbmFsIHJlZgogICAgIC8vIGlzIGJhbGFuY2VkIGJ5IHRoZSBkZXJlZiBpbiB3b3JrZXJHbG9i
YWxTY29wZURlc3Ryb3llZEludGVybmFsLgpAQCAtNjksNyArNjksNyBAQCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6fldvcmtlck1lc3NhZ2luZ1Byb3h5KCkKIHsKICAgICBBU1NFUlQoIW1fd29ya2Vy
T2JqZWN0KTsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgp
LnRocmVhZElEKCkpKTsKKyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSAmJiAmVGhyZWFkOjpjdXJyZW50KCkgPT0gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVh
ZCgpKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29s
IGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9u
b3RvbmljVGltZSB0aW1lT3JpZ2luLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxv
b3AuY3BwCmluZGV4IDIzNjFiZjc0NWFhYjU0ZjU5MTM2MDczOTI3NjliNjJhZGIzZTBiY2UuLjU2
ZmFmN2Q1NGVlMjlmY2I4YTMxMjVjZmJlZWI1YTVkNDgwMTA3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckdsb2JhbFNjb3BlKiBj
b250ZXh0LCBjb25zCiBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bklu
TW9kZShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgTW9kZVByZWRpY2F0ZSYgcHJl
ZGljYXRlLCBXYWl0TW9kZSB3YWl0TW9kZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAg
QVNTRVJUKGNvbnRleHQtPnRocmVhZCgpLnRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKTsK
KyAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgdGltZXJBZGRlZFRhc2sgPSBXVEY6OmNyZWF0ZVNoYXJlZFRhc2s8SlNDOjpKU1J1bkxvb3BU
aW1lcjo6VGltZXJOb3RpZmljYXRpb25UeXBlPihbdGhpc10gewogICAgICAgICAvLyBXZSBkb24n
dCBhY3R1YWxseSBkbyBhbnl0aGluZyBoZXJlLCB3ZSBqdXN0IHdhbnQgdG8gbG9vcCBhcm91bmQg
cnVuSW5Nb2RlCkBAIC0yMjEsNyArMjIxLDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3Jr
ZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnMKIHZv
aWQgV29ya2VyUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKFdvcmtlckdsb2JhbFNjb3BlKiBjb250
ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFk
KCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0LT50
aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChtX21l
c3NhZ2VRdWV1ZS5raWxsZWQoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggNDllNWM0YmJiZjUyYmRjYTgxNTdjMWMwN2ZiMTk2
ZThkZWJlYzk2Yi4uN2M0MmUyOTNkYTM0NjRiNWM5N2RhNTQ2MTkyMDQ0NTc0NTcwZjhiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNz
IFdvcmtlclRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+
IHsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0KFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mJiBldmFsdWF0ZUNhbGxiYWNrKTsKICAgICB2b2lkIHN0b3AoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgdGVybWluYXRlZENhbGxiYWNrKTsKIAotICAgIFRocmVhZElkZW50aWZp
ZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZCA/IG1fdGhyZWFkLT5pZCgpIDog
MDsgfQorICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAg
ICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgY29uc3QgeyByZXR1cm4g
bV93b3JrZXJMb2FkZXJQcm94eTsgfQogICAgIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRl
YnVnZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlckRlYnVnZ2VyUHJveHk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcAppbmRleCAxNWQwZmVjYzczZjNmNTkxZGJmOWMyMGYwNzFhNWFjYzRkYTEw
NjE0Li5iMjVmY2ZhNDgwMjQyMDI1ZWM2MTZhNTRjMGJiZTQwNmJlMzJiYTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwKIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6On5TZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKIHsKICNpZm5kZWYg
TkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsK
KyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAjZW5kaWYKIH0KIApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYK
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IoUmVmPFNlcnZpY2VXb3Jr
ZXJKb2I+JiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdl
dCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fc3dDb25u
ZWN0aW9uKTsKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnN0YXJ0TWVzc2FnZXMoKQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRX
aXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgRXhjZXB0aW9uJiBleGNl
cHRpb24pCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09
IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkgPT0g
VGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBpZiAoYXV0byogY29udGV4dCA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9i
JiBqb2IsIGNvbnN0CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1Rv
RmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJl
YWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQo
KSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChhdXRvKiByZWdpc3Ry
YXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQpAQCAtMzIwLDcgKzMyMCw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRl
Rm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVk
IHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJU
KG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGF1
dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKQEAgLTM2MCw3ICsz
NjAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2Im
IGpvYiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAg
QVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAog
ICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKQEAgLTM4
MSw3ICszODEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0
aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKbwogdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikK
IHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVu
dFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2V2aWNlV29y
a2VyQ29udGFpbmVyICVwIHN0YXJ0aW5nIHNjcmlwdCBmZXRjaCBmb3Igam9iICVzIiwgdGhpcywg
am9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC00MDIs
NyArNDAyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNo
Rm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQu
Z2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBMT0coU2VydmljZVdv
cmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmaW5pc2hlZCBmZXRjaGluZyBzY3JpcHQg
Zm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2Vydmlj
ZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0
aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgTE9H
KFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAgZmFpbGVkIGZldGNoaW5n
IHNjcmlwdCBmb3Igam9iICVzIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwg
Y29uc3QKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKFNlcnZpY2VX
b3JrZXJKb2ImIGpvYikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25U
aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5n
ZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGF1dG8gdGFrZW4gPSBt
X2pvYk1hcC50YWtlKGpvYi5pZGVudGlmaWVyKCkpOwpAQCAtNDcwLDcgKzQ3MCw3IEBAIFNXQ2xp
ZW50Q29ubmVjdGlvbiYgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25u
ZWN0aW9uKCkKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICNpZm5kZWYgTkRFQlVH
Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5k
aWYKIAogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLmFkZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKTsKQEAgLTQ4MCw3ICs0
ODAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0
cmF0aW9uKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9
PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09
IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgbV9zd0Nvbm5lY3Rpb24tPnJlbW92
ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihyZWdpc3RyYXRpb24uaWRlbnRpZmll
cigpKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpcwogdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVDb250cm9sbGVyQ2hhbmdl
RXZlbnQoKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9
PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09
IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgaWYgKG1faXNTdG9wcGVkKQpAQCAt
NTEzLDcgKzUxMyw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCgpCiBEb2N1
bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpjb250ZXh0SWRl
bnRpZmllcigpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFk
ID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkg
PT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDJkOWE5ZjA0NmFiYjRhY2VmMDM2MTc5
OGY2M2YxNjE4OGQ4MjdkMDAuLmVhMTJlOGM1OTRkZmI0MzNjMzY0OGQzNWNmNWY5MTU2MTljOWE2
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIEFjCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbio+IG1fcmVnaXN0cmF0aW9uczsKIAogI2lmbmRlZiBO
REVCVUcKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fY3JlYXRpb25UaHJlYWQgeyBjdXJyZW50VGhy
ZWFkKCkgfTsKKyAgICBSZWY8VGhyZWFkPiBtX2NyZWF0aW9uVGhyZWFkIHsgVGhyZWFkOjpjdXJy
ZW50KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IGY3M2Y5MDcyYTAzYzNjMDVlMzI2MTU0
N2E4ODkxYWRhOTU3MjQwOTkuLjc5NjYwZGQyMTliMTI3OGQ2MGI3M2ZiMDc3Y2U5NWExZGI0NDkw
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHAKQEAgLTQ3LDEyICs0NywxMiBAQCBTZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNl
V29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVudCwgUmVmPERlZmVycmVkUAog
CiBTZXJ2aWNlV29ya2VySm9iOjp+U2VydmljZVdvcmtlckpvYigpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gbV9jcmVhdGlvblRocmVhZC5nZXQoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckpvYjo6ZmFpbGVkV2l0aEV4Y2VwdGlvbihjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsKICAg
ICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKQEAgLTYx
LDcgKzYxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNv
bnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29s
dmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRhdGEs
IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9jcmVhdGlvblRocmVhZC5nZXQoKSk7CiAgICAgQVNT
RVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CkBAIC03MCw3ICs3
MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYKIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpy
ZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkpOwog
ICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwpAQCAt
NzksNyArNzksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0KGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bAogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9jcmVhdGlvblRocmVhZCk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
Y3JlYXRpb25UaHJlYWQuZ2V0KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAg
bV9jbGllbnQtPnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoKnRoaXMpOwpAQCAtODcsNyArODcsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goKQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25U
aHJlYWQpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFk
LmdldCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIC8vIEZJWE1FOiBXb3Jr
ZXJTY3JpcHRMb2FkZXIgaXMgdGhlIHdyb25nIGxvYWRlciBjbGFzcyB0byB1c2UgaGVyZSwgYnV0
IHRoZXJlJ3Mgbm90aGluZyBlbHNlIGJldHRlciByaWdodCBub3cuCkBAIC05Nyw3ICs5Nyw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsK
ICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKICAgICBBU1NFUlQobV9zY3JpcHRMb2FkZXIpOwog
CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKIAogdm9pZCBTZXJ2
aWNlV29ya2VySm9iOjpub3RpZnlGaW5pc2hlZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9jcmVhdGlvblRocmVhZC5nZXQoKSk7CiAgICAgQVNTRVJUKG1fc2NyaXB0TG9hZGVyKTsK
ICAgICAKICAgICBpZiAoIW1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IGMzMGE0ZmI4
NDg5NzM4OWMxNWI2MjdmMWRmOWRlZmUyODkxNzllNGMuLjljNDI4ZTc3MjAwMzQyOTkxYWYzMTcz
YTI5ZTA0MDEyOTVkNTI5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2IuaApAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBTZXJ2aWNlV29y
a2VySm9iIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJKb2I+LCBw
dWJsaWMgVwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9sYXN0UmVzcG9uc2U7CiAKICNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgVGhyZWFkSWRlbnRpZmllciBtX2NyZWF0aW9uVGhyZWFkIHsgY3Vy
cmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVh
ZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhMzdkNjE1MTZh
NjI4MDBmNWE0MzFiODkxYzcyNzM0ZjA5MDM1YmNjLi5hZGM3ODVlZjVmYzRmOGY1M2RjMjI1OTVh
NWZhYzlhOTczZTk1MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0zNDAsMTMgKzM0MCwxMyBAQCBjbGFz
cyBQZW5kaW5nQ2FsbGJhY2tzIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIHN0YXRpYyBpbnQgZ2xvYmFsRGVzY3JpcHRvciA9IDA7Ci1zdGF0aWMgVGhyZWFkSWRlbnRp
ZmllciBsaWJ4bWxMb2FkZXJUaHJlYWQgPSAwOworc3RhdGljIFRocmVhZCogbGlieG1sTG9hZGVy
VGhyZWFkIHsgbnVsbHB0ciB9OwogCiBzdGF0aWMgaW50IG1hdGNoRnVuYyhjb25zdCBjaGFyKikK
IHsKICAgICAvLyBPbmx5IG1hdGNoIGxvYWRzIGluaXRpYXRlZCBkdWUgdG8gdXNlcyBvZiBsaWJ4
bWwyIGZyb20gd2l0aGluIFhNTERvY3VtZW50UGFyc2VyIHRvIGF2b2lkCiAgICAgLy8gaW50ZXJm
ZXJpbmcgd2l0aCBjbGllbnQgYXBwbGljYXRpb25zIHRoYXQgYWxzbyB1c2UgbGlieG1sMi4gIGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzUzCi0gICAgcmV0dXJuIFhN
TERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlciAmJiBjdXJy
ZW50VGhyZWFkKCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkOworICAgIHJldHVybiBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXIgJiYgJlRocmVhZDo6Y3Vy
cmVudCgpID09IGxpYnhtbExvYWRlclRocmVhZDsKIH0KIAogY2xhc3MgT2Zmc2V0QnVmZmVyIHsK
QEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0V4dGVybmFsTG9hZChj
b25zdCBVUkwmIHVybCkKIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiB7
CiAgICAgQVNTRVJUKFhNTERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJj
ZUxvYWRlcik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJl
YWQpOworICAgIEFTU0VSVCgmVGhyZWFkOjpjdXJyZW50KCkgPT0gbGlieG1sTG9hZGVyVGhyZWFk
KTsKIAogICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7CiAKQEAgLTQ5NSwxNyArNDk1LDIwIEBAIHN0
YXRpYyB2b2lkIGVycm9yRnVuYyh2b2lkKiwgY29uc3QgY2hhciosIC4uLikKIH0KICNlbmRpZgog
Ci1zdGF0aWMgYm9vbCBkaWRJbml0ID0gZmFsc2U7Ci0KLVJlZjxYTUxQYXJzZXJDb250ZXh0PiBY
TUxQYXJzZXJDb250ZXh0OjpjcmVhdGVTdHJpbmdQYXJzZXIoeG1sU0FYSGFuZGxlclB0ciBoYW5k
bGVycywgdm9pZCogdXNlckRhdGEpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplWE1MUGFyc2VyKCkK
IHsKLSAgICBpZiAoIWRpZEluaXQpIHsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsK
KyAgICBzdGQ6OmNhbGxfb25jZShmbGFnLCBbJl0gewogICAgICAgICB4bWxJbml0UGFyc2VyKCk7
CiAgICAgICAgIHhtbFJlZ2lzdGVySW5wdXRDYWxsYmFja3MobWF0Y2hGdW5jLCBvcGVuRnVuYywg
cmVhZEZ1bmMsIGNsb3NlRnVuYyk7CiAgICAgICAgIHhtbFJlZ2lzdGVyT3V0cHV0Q2FsbGJhY2tz
KG1hdGNoRnVuYywgb3BlbkZ1bmMsIHdyaXRlRnVuYywgY2xvc2VGdW5jKTsKLSAgICAgICAgbGli
eG1sTG9hZGVyVGhyZWFkID0gY3VycmVudFRocmVhZCgpOwotICAgICAgICBkaWRJbml0ID0gdHJ1
ZTsKLSAgICB9CisgICAgICAgIGxpYnhtbExvYWRlclRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQo
KTsKKyAgICB9KTsKK30KKworUmVmPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6
OmNyZWF0ZVN0cmluZ1BhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhhbmRsZXJzLCB2b2lkKiB1c2Vy
RGF0YSkKK3sKKyAgICBpbml0aWFsaXplWE1MUGFyc2VyKCk7CiAKICAgICB4bWxQYXJzZXJDdHh0
UHRyIHBhcnNlciA9IHhtbENyZWF0ZVB1c2hQYXJzZXJDdHh0KGhhbmRsZXJzLCAwLCAwLCAwLCAw
KTsKICAgICBwYXJzZXItPl9wcml2YXRlID0gdXNlckRhdGE7CkBAIC01MjIsMTMgKzUyNSw3IEBA
IFJlZjxYTUxQYXJzZXJDb250ZXh0PiBYTUxQYXJzZXJDb250ZXh0OjpjcmVhdGVTdHJpbmdQYXJz
ZXIoeG1sU0FYSGFuZGxlclB0ciBoYW5kCiAvLyBDaHVuayBzaG91bGQgYmUgZW5jb2RlZCBpbiBV
VEYtOAogUmVmUHRyPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZU1l
bW9yeVBhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhhbmRsZXJzLCB2b2lkKiB1c2VyRGF0YSwgY29u
c3QgQ1N0cmluZyYgY2h1bmspCiB7Ci0gICAgaWYgKCFkaWRJbml0KSB7Ci0gICAgICAgIHhtbElu
aXRQYXJzZXIoKTsKLSAgICAgICAgeG1sUmVnaXN0ZXJJbnB1dENhbGxiYWNrcyhtYXRjaEZ1bmMs
IG9wZW5GdW5jLCByZWFkRnVuYywgY2xvc2VGdW5jKTsKLSAgICAgICAgeG1sUmVnaXN0ZXJPdXRw
dXRDYWxsYmFja3MobWF0Y2hGdW5jLCBvcGVuRnVuYywgd3JpdGVGdW5jLCBjbG9zZUZ1bmMpOwot
ICAgICAgICBsaWJ4bWxMb2FkZXJUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Ci0gICAgICAgIGRp
ZEluaXQgPSB0cnVlOwotICAgIH0KKyAgICBpbml0aWFsaXplWE1MUGFyc2VyKCk7CiAKICAgICAv
LyBhcHBlbmRGcmFnbWVudFNvdXJjZSgpIGNoZWNrcyB0aGF0IHRoZSBsZW5ndGggZG9lc24ndCBv
dmVyZmxvdyBhbiBpbnQuCiAgICAgeG1sUGFyc2VyQ3R4dFB0ciBwYXJzZXIgPSB4bWxDcmVhdGVN
ZW1vcnlQYXJzZXJDdHh0KGNodW5rLmRhdGEoKSwgY2h1bmsubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggYzM3
NzU4MjU0YjRkNGY4ZjAxY2U5YTM4ZTZmMGRlOGI1MjU4OTk2YS4uMDdlZWRjYjYzYzQ4ZWU2YmNi
MTY2ZDkyYmI4YTY3ZGExODRiMGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjZGVmaW5lIEFT
U0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQoIW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlT
X0lDT05fU1lOQ19USFJFQUQoKSkKIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8g
c3VwcG9ydCB0aGUgc3luYyB0aHJlYWQgT05MWQotI2RlZmluZSBJU19JQ09OX1NZTkNfVEhSRUFE
KCkgKG1fc3luY1RocmVhZC0+aWQoKSA9PSBjdXJyZW50VGhyZWFkKCkpCisjZGVmaW5lIElTX0lD
T05fU1lOQ19USFJFQUQoKSAobV9zeW5jVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICNk
ZWZpbmUgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKSBBU1NFUlQoSVNfSUNPTl9TWU5DX1RIUkVB
RCgpKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMmI3YjJmNWM3Y2EwMWM0ZTM1ZGE0MzRiMzMxNGU2OGY3
ZGJhY2ZiNy4uNTFmMmQyNzIwNWRlMDUwNmQwYzQ3MGI5OWY5M2M5MTgzNjExNWFmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKQEAgLTk0LDEzICs5NCwxMyBA
QCBjbGFzcyBHZW5lcmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKIAogICAgIHZp
cnR1YWwgfkdlbmVyaWNDYWxsYmFjaygpCiAgICAgewotICAgICAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV9vcmlnaW5UaHJlYWQuZ2V0KCkpOwogICAgICAgICBBU1NFUlQoIW1fY2FsbGJh
Y2spOwogICAgIH0KIAogICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKFQu
Li4gcmV0dXJuVmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9vcmlnaW5UaHJlYWQuZ2V0KCkpOwogCiAgICAgICAgIGlmICghbV9jYWxsYmFjaykKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTExNyw3ICsxMTcsNyBAQCBjbGFzcyBHZW5lcmljQ2FsbGJhY2sg
OiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKIAogICAgIHZvaWQgaW52YWxpZGF0ZShFcnJvciBlcnJv
ciA9IEVycm9yOjpVbmtub3duKSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICAgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG1fb3JpZ2luVGhyZWFkLmdldCgpKTsKIAogICAgICAgICBpZiAoIW1fY2FsbGJh
Y2spCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgR2VuZXJp
Y0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiAgICAgc3RkOjpvcHRpb25hbDxDYWxs
YmFja0Z1bmN0aW9uPiBtX2NhbGxiYWNrOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElk
ZW50aWZpZXIgbV9vcmlnaW5UaHJlYWRJRCB7IGN1cnJlbnRUaHJlYWQoKSB9OworICAgIFJlZjxU
aHJlYWQ+IG1fb3JpZ2luVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQx
YWFkZGU1YzQ5MTM2MzBhZWM5MDgwNDM4NjQ0YzFlZjIxMjlhNjUuLmZhOWZhZjVjYjc2OGYwZmY3
MjY3NTQ1NjlmOGQwMWNkNWIwYTkzYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhh
dmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tOgorICAgICAgICAocnVuVGhyZWFkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcDoKKwogMjAxNy0xMi0wMSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBhdXRvLWlu
c3RhbGwgcHl0ZXN0IGluc3RlYWQgb2YgaW1wb3J0aW5nIGl0IGZyb20gd3B0IHRvb2xzIGRpcmVj
dG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDMy
N2YyMGIxZGYwNGNlYmI4OGYxNDJmNWM5YTlhNjY2MjVlZGJmMGQuLmVmZDdhNmJkMjVlZDRlYmFj
NGI5ZmQ4YzkwY2Y2MmVjNzQxZDA5NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KQEAgLTEwNjcsMTEgKzEwNjcsMTEgQEAgc3RhdGljIHZvaWQgc2V0RGVm
YXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKIAogc3RhdGljIHZvaWQgcnVuVGhy
ZWFkKCkKIHsKLSAgICBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBwcmV2aW91c0lkID0gMDsKLSAg
ICBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRJZCA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICBzdGF0
aWMgVGhyZWFkKiBwcmV2aW91cyA9IG51bGxwdHI7CisgICAgVGhyZWFkJiBjdXJyZW50ID0gVGhy
ZWFkOjpjdXJyZW50KCk7CiAgICAgLy8gVmVyaWZ5IDIgc3VjY2Vzc2l2ZSB0aHJlYWRzIGRvIG5v
dCBnZXQgdGhlIHNhbWUgSWQuCi0gICAgQVNTRVJUKHByZXZpb3VzSWQgIT0gY3VycmVudElkKTsK
LSAgICBwcmV2aW91c0lkID0gY3VycmVudElkOworICAgIEFTU0VSVChwcmV2aW91cyAhPSAmY3Vy
cmVudCk7CisgICAgcHJldmlvdXMgPSAmY3VycmVudDsKIH0KIAogc3RhdGljIHZvaWQqIHJ1blB0
aHJlYWQodm9pZCopCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
YXJraW5nTG90LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3Qu
Y3BwCmluZGV4IGJhOGRkNTZhNWIzMGEyNGVmNWZkY2UzYmQzMDFkMDZmNTRhZDRlODguLmY5NDQw
ZDA5ZmUxZTEyYTgwNjU0MGI0MmUyMTA5YzkxYTRjNzdiNmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCkBAIC01MSw3ICs1MSw2IEBAIHN0cnVjdCBT
aW5nbGVMYXRjaFRlc3QgewogICAgICAgICAgICAgICAgIFRocmVhZDo6Y3JlYXRlKAogICAgICAg
ICAgICAgICAgICAgICAiUGFya2luZyBUZXN0IFRocmVhZCIsCiAgICAgICAgICAgICAgICAgICAg
IFsmXSAoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfTkUoMHUsIGN1cnJlbnRU
aHJlYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkb3duKCk7CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobG9jayk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>328293</attachid>
            <date>2017-12-03 08:26:35 -0800</date>
            <delta_ts>2017-12-03 09:26:03 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews114 for mac-elcapitan</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>384472</size>
            <attacher name="EWS Watchlist">ews-watchlist</attacher>
            
              <data encoding="base64">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
5MNqVg2PT0LWlXv37kM4OY+oUq/4gX1qmnvun6ab+eQbPuuhD2dNP3py8bF+3ycwRN+21eRytVg/
OwWub1x4O3nz2X3KR4mTqjU0Fu7ZTWdfn3kxKJh17Xt+u7qNHLmbE6/FRJCGNjm5+L26w9C9q/j4
R+7grDWcuntPZ+gPs1j8pSlwe5u7G3eafUab4WQUWLm9vbxyb4rTN8n0rbm9fXf5/m2Rw4yejHIP
9n4zbSjec1P88+Y0abh/l9L2+f1l+JCfpE5K1qbtMUrR0fe/fszylb1qDc1e1DxWj5iKMsbRcUoj
P/+OJLz5cBMl8qmP1a/sm8NTJ/t7/mvyCMJpm0yEegLsSWumTbzn4n8BUEsDBBQAAgAIAIY+g0u7
abFcMjgAACW8AAAiABwARHVtcFJlbmRlclRyZWUtMjQ2NjUtY3Jhc2gtbG9nLnR4dFVUCQADrB0k
WqwdJFp1eAsAAQT1AQAABBQAAADkW+tv20iS/3z6K/hpYSdDud8PITcA2SRns5MXYiczh8FAoMhW
zIssaigqie+vv2pSkkmKduJs9nDAKoNIo25W/epd1a28qcrMbrczr/+Kdjebt3ad2+qqstb7gzAh
+J+TN2l9PdwKr4v35Wp3Y7cX71+/ePcyvnhy0X9+8jy367pYFraa3c9l8t5W26JcDxmgiSlz613d
bmx/6XclfMG8s1dpXXyy54CuAjbem4FIb27r63LtZOBS/zl5a7ebcr0tFqseuXskfre1lfc8GmLi
CE8mUVrbi6viZgCLICx9THxEPSRnHM8omiKuPR8phCavL70xOV+mmQdLv3sYTTGeCu8M81+wRISe
A+JNWdUnj2E8Cdbl+vam3G29d+86IIVRKg6SyNck5r6MeeQHGhDFJkkwQoTEVEwmEwfdCz6nH613
Wawz64VlWc88LBDytjYr1/l2Mrm83db2xnu+ru2HqqhvnXprm9UNErtOQY35ZGKqdHttc+/qurJp
fgQiJ5P4S2Y3bnffgPHvZh4G0TwwJr689M4un/9yGf/y/ryz31n9aMVf47ev5s9fvQ9ePIeHouit
eyqtPfQF7V+LRZovrF12KLwCpD2O5vXbN5fx/NXrq+fJf00m7196b+0H2Ln1Xtm0AmIHIrOJ7//s
Tdxz8/lV/PvVic/vuWLE0ZLBB//uC5yDkpH3h+cpxX7906v8LxfV5y/e5cv/NK9/GwmXyeSXVblI
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
5/41uER+dO6PB3o0XsX87tl3zpEf/njXuGf1vlFEOQpP/mDe6ZaLcPWZ9h1E1nAHjr9cBi+OD4FB
6eEMO+nBCV636cDtHLNoeCpPRTHorvLnccdYhadoao63hmVfnk/nxqPcm09eDJGUb8/tzWOomIPi
GuW+sMfSRpv41cvT00ffmF+KaCJH0cNnvzwOs/Gbso53H9b02pguXorZYPruCLcKwnBzlgZukM68
maW96Vr7tRpWiv+qDFR3MTVex+1FK184zz1vM3w52U7vpbF80J3dprcoB1pncW7199dsYmyznrnv
lr2RlawiZ9Tty7orTUV/fD5K29nzov86vno7ZzE9ho1dq/Sd5S7ahdlWdUSwbCWbT+vyEVynoW7a
wSrx5knspMP5anEpl6vHdc/9mOvp+yQ05I5lNB4Wxbm3ePCCwUNWKu+DiVONjMVj1puU6/Pq/GC9
zR5niWXv8tRzToHjxM/u5uq5Gx9jgc412sMocMeO7wzaj2hpy5Enmb8cvLruIGuL80Musnkqy5W8
Xp6jYxq3B6Xj+26bldujKGgMfOdh+TvhbrDaudapPQ6SyH1nB4FzOo0yZVr0Zm7VmM+Gm0TtHHqz
4TpVh9flMnpxg/nJO8396VB6cR24WIZB5EZ1dJ3BIIqcsuV5VcsZTJ4a7gmf7sy9o2EvBs673n55
V3bnQfectPTe6nPX+1xPPz5259G8/dKxeo3FNlamT5v9en3dO59X9dSev/dWUnGcdGaGvOhm1fic
Lc1dJ1Gm8lqdFWoZvi7Gk+1hOZ8WS7sxjTL3cfqRBcfeeNd2x2NtcOpqu57+6nfTqQi13VtZdUM/
z4bHuDdZxu9jJ9Heuta6fFbfDlHjs9ypwTZ87I0/psvWWOuse8V1my5n/vTpaj3O2ta6ei5tr2OY
n53u8rHqutH5enrMcmuYv1ZpQw/jWWz3/fdLf384Kp9+qPrtaBO/Zr23dpztTWXYrd43a3H5WBVD
+8le7SbZ0U691ez9reetG5lnSfLlsxxnr9fk2A+2C8875MNdcRKquz5Ou+56394ps5OqWwvhdvxL
9PAdoYK+/ys+/RdQSwMEFAACAAgAKj6DS/EgMR7sCQAAOxIAABUAHABfd3B0X2NlcnRzLzBGMDQ0
Ny5wZW1VVAkAA/8cJFr/HCRadXgLAAEE9QEAAAQUAAAAnVfZcupIEn3nK3icDvdtl3YpI/pBG7tk
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
+XZuXfP12+apoz4UYZi/jrWJt1u1VvU2S188ZRgYsnSc6VVli3S4s81YeZyrm0UlnXbvH5dD39+U
/rg3Yvb7Yph3JqVSDB/660Xr/GTxIOGXMh9rW63qvSUD0xq8TM5WNxnLaYn/Owqn771e8l79Xvb5
Xn1bhoMiGPQGH1PFnbZmpzoPR/VozzuZ3LXy2bzTKx5C5TndONeV6doX37b5k2N6rmPM7QFVqzcN
fHttU190W7b0nHjZZIG1Kati+1RWj6urNo3W46jOzfqsPefWeW2nzcFZ4Hc9e5E5k6Qn6odUJMtW
LEmltM3q4BTz3qSwPc8eNZsnJtY2cB2BMVyW3suUbR37cnGzZX94WaK/5x6ttNKsWZw6vfiSLPuD
qGutl4u6iJSQZZmkJEp8+vIu76hRzqpovXoPd9NrK5yHZaIkx3jfKZJ1X13OtDKSw1XUxb5TZm5n
vzqNZlKZ7J6rcFev3tyv6y1vj8ev/a9eMo0816PdbVvboZNt3lebvGtdmGNPyo5tP1Er+/bz03l4
PEeLauWpS3NwqF151pOOj4OrmMgqO82ycjYfS+dzd/wUxlURHcbG0voYpvZ20KpXg1yd11O/4ywY
3pHNVQq0q1ZlHbnffZPe4ziZ7azFPD652ou1Gpt6uc0OQ0V9TCNvOS5ann56lYLJbnuJTv1R/T4v
rscHlp3fVkoa5L2nk5oedtpJfZtu82V3sOnyyfiYsM3ECWRp7vdaPW2dTcRkmttefa0PR22veULW
Nmy6WNlR0XnXzZFvnCevo3i27l8V9vC0eY5n4SYoKj4arFuP+7hcmK+JYp431SpWHlYDdeHMl+vX
hapOBp3B+DJJp9vnXfH+FM7YWeSacdT3g2fmlcGIPbTwGh73khhNL6tkxY/Tx+S1yNPlLs/+/PMn
F/qh9ysT/htQSwMEFAACAAgAKT6DS/toZK8ZCQAAOhEAABUAHABfd3B0X2NlcnRzL2NhY2VydC5w
ZW1VVAkAA/4cJFr/HCRadXgLAAEE9QEAAAQUAAAArVbZbuLYFn3nK3jsVlSK52FL98FTwIBJGAO8
eTgGJ4AJhjB8/V3b1V1NqUi1dHWtKDrYex7WOp7YH4q8SOODoEYTjx8f4u8nfqZiXxXllppq8w/p
rPz548NI7It43ewfN4nYU9O2NFnVWCaXNM24kSuW2/hw3Iums16W++Kw2lCzWsWKbrzix3DkBNt0
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
AAAABwAAABUAHABfd3B0X2NlcnRzL3NlcmlhbC5vbGRVVAkAA/4cJFr/HCRadXgLAAEE9QEAAAQU
AAAAMEYwNDQ3ClBLAwQKAAAAAAAoPoNLAAAAAAAAAAAAAAAADgAcAGFjY2Vzc19sb2cudHh0VVQJ
AAP7HCRa+xwkWnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABvPoNLAAAAAAAAAAAAAAAADgAcAGFj
Y2Vzc2liaWxpdHkvVVQJAAOBHSRarh0kWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACGPoNLhtPC
ojU4AAAFvQAAPAAcAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1jcmFzaC1zZXRhdHRyaWJ1
dGUtY3Jhc2gtbG9nLnR4dFVUCQADrB0kWjIdJFp1eAsAAQT1AQAABBQAAADkW2tv20aX/rz6Ffz0
wk5Kee4XIVuAHJJ9s80NsZN2URQCRY5ibmRRpagk3l+/Z0hJJinaibN5FwtUKSJVMzznOfdzZpQ3
VZnZ7Xbm9V/R7mbz1q5zW11V1np/EMYV+nPyJq2vh1vhdfG+XO1u7Pbi/esX717GF08u+s9Pnud2
XRfLwlaz+7lM3ttqW5TrIQM0MWVuvavbje0v/a6EL5h39iqti0/2HNBVwMZ7MxDpzW19Xa4bGaT+
c/LWbjflelssVj1y90j8bmsr73k0xMQRnkyitLYXV8XNABZBWPqY+Ih6SM6YnhEyRRh7PlIITV5f
emNyvkwzD5Z+9zCaYjwV3hnmv2CJCD0HxJuyqk8ew3gSrMv17U2523rv3nVACqNUHCSRr0nMfRnz
yA80IIpNkmCECImpmEwmDroXfE4/Wu+yWGfWC8uynnmYIeRtbVau8+1kcnm7re2N93xd2w9VUd86
9dY2qxskdp2CGvPJxFTp9trm3tV1ZdP8CERNJvGXzG7c7r4B49/NPAyieWBMfHnpnV0+/+Uy/uX9
eWe/s/rRir/Gb1/Nn796H7x4Dg9F0Vv3VFp76AvavxaLNF9Yu+xQeAVIexzN67dvLuP5q9dXz5P/
nEzev/Te2g+wc+u9smkFxA5EZhPf/9mbuOfm86v496sTn99zxchmZAkf/LsvcpTBB+8PkF+xX//0
Kv/LRfX5i3f58t/N699GwmUy+WVVLtKVd1Wlzgy75RK87qyyn8Dk1suuq3JdrsoPRQZ79pY5n02Y
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
FN6au7ura/emOH2TTN+au7t3V7++LXKY0ZNR7sHebx4zxXtui3/eniYN9+9S2j79ehXe5yepk5K1
aXuKUnT0/a8fs7y0zRttJhd7UfNUPWEqyhhHxymN0+bfkYS372+jRD71sbqZApLq/T3/NXkC4bRN
JkI9AQ5TLbnn4n8BUEsDBBQAAgAIAEU+g0tCTV5d0gAAAD0BAAA5ABwAYWNjZXNzaWJpbGl0eS9h
Y2Nlc3NpYmlsaXR5LWNyYXNoLXNldGF0dHJpYnV0ZS1zdGRlcnIudHh0VVQJAAMyHSRaMh0kWnV4
CwABBPUBAAAEFAAAAF3NT0vDMBjH8XtexeNFVg8m6b+RgYfhOhiKyhrscaTNU1ZYmpImQ9+9znrY
ev19vg/PuiyLvdy9v8F2vXstNisYHJ47G0a4e4L7JjiHvSf0056CwZFulFe0qEpaYf3SeSqtPf2u
wQx77DU66RCpUc1sejRmwdkyiWAFZ9tpcKGXR4dKLyLCAYB9cc5EqlXMoJLbZ6fGI4knYNhkScvy
m6PkyrDmF/vwE14ePEQk/SuWbduKOBa5EBoOw5Qcaqu/STYLuJoF+U2QJhmHfx69cp78AFBLAwQU
AAIACACGPoNL9x0Ed0Y4AAAxvAAASwAcAGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1jcmFz
aC13aXRoLWR5bmFtaWMtaW5saW5lLWNvbnRlbnQtY3Jhc2gtbG9nLnR4dFVUCQADrB0kWlcdJFp1
eAsAAQT1AQAABBQAAADkW21v20iS/nz8Ffy0sOOh3O/dFHIDkE1y1jt5MSInM4fBQKCols2LLGoo
yonv1181KckkRTt2Nns4YJVBpFE3q556r+pWLssiM5vN2O2+ou3t+oNZzU15VRrj/kGYoPRP5zKt
bvpb4XX+qVhub83m/NP7Nx/fxuevzrvPOxdzs6ryRW7K8eNcnE+m3OTFqs8AObqYG/fqfm26S78r
4QnmnrxLq/zOnAK6Eti4lz2RLu+rm2JlZeDS/9P5YDbrYrXJZ8sOuUck/rgxpXsR9TFxhB0nSitz
fpXf9mARhKWHiYeoi+SYozFGI0KV6yGFkPN+4g7J+TbNXFj63YXNGI+Ee4L5L1giQk8B8booq6PH
MHaCVbG6vy22G/fjxxZIoZWKgyTyfBJzT8Y88gIfEMU6STBChMRUOI5jobvBl/SzcSf5KjNuWBTV
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
tvkxuQhvJtuY2ThZou25HewKhFpzj4B7Ih5kfcMEN3EG72FJP/m+QCRIVIRxfIrvZKc3YV6Rq9Y9
f7ue/O3yZnJfSzkgcbaeD/R17IeP3fNDDbuBTzbS9oq8OfZz+ByumcCkns7niLAzAaIxZKY1P368
eBt3LSYOj0w+rGbV8PgkZF25d+8+hJPziBL7ih/Yp6q55/5puplPvuKzHvpw1vSjJxcf6/d9AkP0
dVtNLleL9bNT4PrGhbeTN5/dp3yUOKlaQ2Phnt109tszLwYFs659zy9Xt5Ejd3PitZgI0tAmJxe/
VncYuncVH//IHRyUo2Y4VfeeztAfLuOv7Jvj+PynU+D2Nnc37jT7jDbDySiwcnt7eeXeFKdvkulb
c3v77vL92yKHGT0Z5R7s/WbaULznpvj7zWnScP8upe3z+8vwIT9JnZSsTdtjlKKj73/9mOUr20wB
M7nYi5rH6hFTUcY4Ok5pSv47SXjz4SZK5FMfq5spIPF1i/f83+QRhNM2mQj1BNiT1kiOeM/FvwFQ
SwMEFAACAAgAWD6DSwhzYf7RAAAAPQEAAEgAHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHkt
Y3Jhc2gtd2l0aC1keW5hbWljLWlubGluZS1jb250ZW50LXN0ZGVyci50eHRVVAkAA1cdJFpXHSRa
dXgLAAEE9QEAAAQUAAAAXc3Ba8IwFMfxe/6Kt8uwO5ik1boKO8isIBtObFiPkjYvWDBNSRPZ/vvp
9KC9/j7fx1sURb4T668NrBbrz3w5h87hqbGhh6c3eK6Dc9h6Qr/tMRjs6VJ6SfOyoCVWH42nwtrj
eQ2m22Gr0AmHSI2sB9PYmBFnsySCOZxso8CFVhwcSjWKCAcA9sOZrmomYwalWL072R9IfAOF9atm
6cNRcmdY8Ytt/RUvD14iMvkvZlrrLI6zNMsU7Ltrsq+s+iXTQcDlIEgfgkky5XDj3kvnyR9QSwME
FAACAAgAbz6DS+dhDrE/OAAAGL0AAEAAHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktbm9k
ZS1tZW1vcnktbWFuYWdlbWVudC1jcmFzaC1sb2cudHh0VVQJAAOBHSRagR0kWnV4CwABBPUBAAAE
FAAAAORb62/bxpb/vPwr+OnCbkp53g8hW4Ackr25zQuxk3ZRFAJFjWJuZFGlqCTev37PkJJMUrQT
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
3//4UfLcXrWGZi9qHqtHTEUZ4+g4pZGf/0YS3ny4iRL55OzkzRSQjOzv+b/JIwinbTIR6gmwJ62R
HPGes38DUEsDBBQAAgAIAEU+g0sM4YUf0QAAAD0BAAAwABwAYWNjZXNzaWJpbGl0eS9tYWMvQU9N
LWJvb2wtcHJvcGVydGllcy1zdGRlcnIudHh0VVQJAAMyHSRaMh0kWnV4CwABBPUBAAAEFAAAAF3N
zWrCQBSG4f1cxemmmC46fzEyggvRCNLSFjM0S5k4JxhwMmEykfbuW6uLmu33vIezLIp8p7fvb7BZ
bl/z9Ry6gOfGDz08LODxMISAbST0058Ghz1dm2hoXha0xOqliVR7f/pdB9ftsLUYdECkzhxG07Nz
E85mMoE5nH1jIQytPgY0dpIQDgDsizPJpTCCQak3q2D6IxE34KlUNcvujuQ/w4pf7CNe8fLgKSHp
XzGr61oJoTKlLOy7a7KvvP0m01HAzSjI7oJUTjncuI8mRPIDUEsDBBQAAgAIAIY+g0sIXaeFOzgA
ADG8AAA1ABwAYWNjZXNzaWJpbGl0eS9tYWMvQU9NLW51bWJlci1wcm9wZXJ0aWVzLWNyYXNoLWxv
Zy50eHRVVAkAA6wdJFpXHSRadXgLAAEE9QEAAAQUAAAA5Fttb9tIkv58/BX8tLCTodzv3RRyA5BN
ctY7eTFiJzOHxUCgyFbMiyxqKMqJ79dfNSnJJEU7diZ7OGCVQaRRN6ueeq/qVi6qMjObzdTtv6Lt
zfq9WeWmuqqMcf9JmKDkD+cira+HW+F19rFcbm/M5uzju9cf3sRnL876zzvnuVnVxaIw1fRhLs5H
U22KcjVkgBxd5sa9ulub/tLvSniCuSdv07q4NaeArgI27sVApIu7+rpcWRm4wn84781mXa42xXzZ
I/eAxB82pnLPoyEmjrDjRGltzq6KmwEsgrD0MPEQdZGccjTFaEIodz2kEHLeXbpjcr5JMxeWfndh
M8YT4Z5g/guWiNBTQLwuq/roMYydYFWu7m7K7cb98KEDUmil4iCJPJ/E3JMxj7zAB0SxThKMECEx
FY7jWOhu8CX9bNzLYpUZNyzLeupijpC7MVm5yjeOc3m3qc2Ne76qzaeqqO+semuT1Q0Ss0pBjbnj
6CrdXJvcvbquTJofgCjHib9mZm139w0Y/65nYRDNAq3jy0v35PL8l8v4l4+nnf3W6gcr/hq/fzs7
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
fwd6Bf72/cWvm+VuevdQQwPYedusghX97eRfcBY01kOjZzo5HOp2lNrY9zNJnJ//++Xy081n9x6+
fareXn74eXKx/7z574/V6duuL/8nnQ0fPv98M/lutV4Vs/X0od7O6vn3k4sfj38nGmjPHr5cOND0
vmLW/M1mOsP5O/LHiDDv2h+Ti/B2sk2ZjZMl2p7b0a5AqLX3SLgn4UE2N0xwE2f0Hpb1U+4LRIJE
RRjHp/RO9noT5g256tzzj+vJPy5vJveNlAMSZ+v5SF/Hfvipe75rYDfwySba3pC3x34Of4drJjCp
p/M5IuxMgGgMmenMj+8v3qVdi4nDI5MPq1k9Pj4ZWVfu/fsP4fxEsvINP7BPZXvP/dN0M598wWc9
9sdZ24+eXHxs3vcJDNGXbT25XC3Wz06B6xsX3k3efnafypO0SdUZGgv37Kaz3595MSiYdd17frm6
TRy5mzOvxUSQljY1ufi1vsPQvav0+E/cwVlnOAf39Ib+cJn4S1Pg9rZ0N+48+4y2w8lwOG9vL6/c
2+r8TTJ/a25v31/+/K4qYUZPTnIP9n47bSjec1P98+Y8abh/l9P2+efL8KE8S52UrEvbY5KiJ9//
5jHLN/aqMz33ouaxfsRUlFMcHac0Jf+eJLz5cJMk8tnXTb+x+ykg8Rmke/5r8gjCaZtNhGYCHKZa
ds/F/wJQSwMEFAACAAgAbz6DSwBwASTSAAAAPQEAADIAHABhY2Nlc3NpYmlsaXR5L21hYy9BT00t
c3RyaW5nLXByb3BlcnRpZXMtc3RkZXJyLnR4dFVUCQADgR0kWoEdJFp1eAsAAQT1AQAABBQAAABd
zb1uwjAUhuHdV3G6INKhtvNHjcSASpBQq7YiVjMiB5+ISDiOHBu1d99SGCDr97xHZ1mWxVZuPt5h
vdy8Fas59A5PrQ0DPCxgsg/OYecJ/bLHYHCgK+UVLaqSVli/tp5Ka49/azD9FjuNTjpEatR+ND0Z
M+VslkQwh5NtNbjQyYNDpacR4QDAvjnL4+dUxQwquX5xajiQ+AppJljD8ruj5Maw5mf79Bc8P3iM
SPpfzJqmEXEsciE07PpLsqut/iHZKOBqFOR3QZpkHK48eOU8+QVQSwMECgAAAAAAbz6DSwAAAAAA
AAAAAAAAAB4AHABhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9VVAkAA4EdJFquHSRadXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAIY+g0urWJMVPzgAACq8AAA5ABwAYWNjZXNzaWJpbGl0eS9t
YWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMS1jcmFzaC1sb2cudHh0VVQJAAOsHSRaMh0kWnV4
CwABBPUBAAAEFAAAAORbW2/byJJ+Xv0KPh3Yk6Hc94uQHYBsknO8k4sRO5lZHAwEimrZ3MiihqKc
eH/9VpOSTFK0Y2dzFgscZRBx2M2qr+5VTeWiLDK72Uy87ifa3q4/2NXclleltd4/COOK/Tm6SKub
/lb4nH0qlttbuzn79P7Nx7fx2U9n3edH53O7qvJFbsvJ41xGn2y5yYtVnwEamWJuvav7te0u/aGE
L5h38i6t8jt7CuhKYONd9ES6uK9uilUjA/1z9MFu1sVqk8+WHXKPSPxxY0vvPOpj4giPRlFa2bOr
/LYHiyAsfUx8RD0kJ0xPCBkjrDwfKYRG7y+9ITnfppkHS394GI0xHgvvBPNfsUSEngLidVFWR49h
PApWxer+tthuvI8fWyCFUSoOksjXJOa+jHnkBxoQxSZJMEKExFSMRiMH3Qu+pJ+td5mvMuuFRVFN
PMwQ8jY2K1bzzWh0eb+p7K13vqrsdZlX9069lc2qGoldpaDG+WhkynRzY+fe1U1p0/kBiB6N4q+Z
XbvdXQPGf5hpGETTwJj48tI7uTz/9TL+9dNpa7+z+sGKv8Uf3k3P330K3pzDQ1H0wT2VVh76inaf
2Sydz6xdtCi8A6Qdjub9h4vLePru/dV58p+j0ae33gd7DTs33jublkBsT2Qy8v1fvJF7bjq9iv+4
OvL5HVeMUrygcOE/3CBzd+H9w/OUYr/96ZX+17Pyy1fv8u2/m/e/D4TLaPTrspilS++qTJ0ZtosF
eN1Jae/A5NbLbspiVSyL6zyDPTvLnE5GTI0RJ1xoh8ck72z1pSg/HyH9t0ZHcrFYaKQE4an1DJip
ylfX3twu0u2y8rKi+Jxbb1MVZXptvS95deOtm0A6m21X86X18kMQ7zlL9ELOTHiJY+c452Dh5O9X
VxemZn2547yBtaWtitWOiUD8ZUzonHeYvLt8ismo8VgPTSZelG/WaZXdeH9t7RYcJytux+l6vbTj
2zRf+VW9c+RkXuazTR0X08+2XNnleH4Pt4YQWYlm4BLgRRt7+yXNq+kmv16BGV9BpI9wh9a64dAh
1qZFiFZSSW+3b/pfBYj3ymOMjchxBhtW085DMWEgdGU3VSP/Q4J+m65PTmt02jvpkhzf3k7gNj8d
0Zeyw7OMe/POEyf5qvoZfBviDhx6U/30k2NLuRxkS5Q+HbGXsmWz2bz3xFsw5TBrTPgga4bR6Yi/
kLXGqSWe8xsnFOsTdigcccpOR6JxArB61/TDLk7ZTHCw3aZKoSYA6oML48l3+CYHlNOpC6y/6v2l
rbbl6ju9U3CpvP3G6Ze/motatYrWPvoicowy3MjZoUUPEpMng9bpdLfo36YriPvyOxQE+dH7DIl4
VU3/KjYdxeypD1itRUVZzVIsuDfd75/eXpfTfHVXQOF95REs9qp5PkE9z+Y9ggcFcXJQEP2Xcwn2
LycxnxwuxcOl/A49QOsjQA/rzf0KfCq7c+XqO5UgJWkpwTUs0x01KeReCdmrV2M8nPJa5FKEFtyR
21TzyWQ6xZOJo5e7Dm96l5a5a0HdwryYVtDRNpxOHnZvVznkhumyyD6/frh7u63s11/+9nObbN1n
TSaOynQNxbV6fby400HmyA09PN+WqYP2ellA/+H+au+q117j5c+g1f1n+YsHf5oKJOrS+pDD/iO9
Sy+zMl9XpijtcaGZLbIUYd3GcTcFb6lgJHhaX3UvsijKl+H836j1OzVTV+i/1b0BQ9g7mU5rHtNZ
urETqnjTFrxIZRovFt+rsi30Scshv6jA0+9/vF/88xz5nwS4ZTAmdd9enDW91Ivspezi5S4+TVf3
j9isrcjZbbqEi8nkba3HIU38H5u2h+j/pWW5gl55IEYIlk1D+yL7CmSpdxD7Mkuh3YJuDcSs68eH
7epNUezGEkXkMGeiTkfypZw5JJAnOMerqry/cGo+Od5UDw0EMtLhzjhbr2FeIKcj9VIgUgvi3RX5
/KeWKaa7pm4Kk/jX+5alqy2Qfe22eyc/nQ5i+3lArJ+c09VM6ujEykXnYruqT3PSZROiDENK1S/u
erSePxT8WTG/r7sUPMLoxZRw+kDpMOYINcL4xb0Tx16f0EPnpCbtceHd5ccPb0yxWjWHW2+KdP49
AwNbSDf3uaZ8cz2tynQ91EI9hxCd0QMhF3K87pseADtfSortal4H8/GYkC1QhjGDjs4kuxC6tOVd
nsH0md1cFLU6CCa9luMZZGd8nrXJwletWS56tfgZtGBMVl6b0uXaZvkizxw4LXrFYugYqHcAxFPX
If+jZ86Txp6n3rS0m2JbZtbdcCwnf9axQHppqw/7iBPNRMacdt9dNv40bXxsOm10gets9GOCSHk/
LIi092ODSHu7s99m4HhJ0sMshWT++1VSU3ANHrQLwWZjS6f2TZ1NiaSndey86NxHLpDwyu2qwVgX
DomGj7Mc/Refnkk7w47+RaOXh5yK5SNcdHNo9mPcgf04d+A/3B2y3auA+gj5DyV27wS8S2jZrHci
mD/Lq9PJyPPK9Otk4AAfFmaHBVkvMaLdibpXZo89MX9YULtV97bFreR9WmrOIaDKTd6ihVHGuVXW
LczWR0/YmeO+GVxwbwlK1cbVfJiLh1IfHgEFyjSbI2wdLYzcwqL3cQv4iBRhwkmCydGKah6h/QUh
0MwtsGNYtR4x78heu3Raqytfd1b2UeqVi2WPFkYEogzsTYZsArRGb3avLMzFx+Y1DGajuCyLsn63
s3szc3hUjK5ctXy3vZ3t3xPC/tEozFdpee+d36bXdjMZ7d+/fD28evF8r32TZLUmX/Ui+gSdeq8F
wTiIQuFHLKA+jSnyVcS0j2IZ0AQZQmn4y7ffZ7bZMZweY4CbYG3vFYTR73bmEuCV3VSXN/ntLrZq
NFowlRhh/ABHkU91YnxoAxNfmRhShhEiRmgIzWNUu7gIOcYlKBvCtV27N4xtaFhJGrEk8ZkgAE0y
7CuO4MpEJlGUUknNM6C1CXfQpXx+hC7jmDh0jxeRE4H4K3gIvsZ4jMUrQBpLRAw1yg+SmIFJVegr
HMd+GEY0UJqEwpAhpF3S40WZ3lrXWZzt3rNuzoLenrYAdm6zvgAYYW17AoAyfsurQeAJigKsdeBL
CFdQcYJ8zWPuR4EKQhNRbUwwBLwhOQy4WWsBxSSlRzGCqZiBf9LaD77YWVllbdvHsTJBHEa+QBHx
aaQiPyRU+MbEQWAI4QF7zPZtYm0UdDE/VpeCDvdYXY8aGgJU01BDsIZR4FMehH5ACfcNiQIZaK4F
fUxfj1t4t9jCSiB0jrASZMXCaezItG/sdZrdD3smkyoURIMrYtCjEdxXMlJ+wqQUoY5EIvDjBm4I
P2XmZseogejKi8gQtQ/QDzclTxmo2b1h8k6oQGNCAJ5RsZSJiHwTK/A/wyFwuBQ+4YoFUuuQ4xjg
bTels+yZe7rFS0FzMuvzgpsW1WXsQU113jbputo6u+qxewL+dgY1sUlQKH0ZadBPQIgfgm78WCVB
lDDDqVQAoPkFwtmbfFZCHThL9grZnJm0nBWrYRW1trURDG9u72jLmGKCj2SE5C56Mv79/KoolrPi
q3dCnPnhAYXk2GmZCoapYdynIkh8yuLE1wbFfoJVSHGEYy74jxDyAGF452G5Ix4jaEA8SnviuQgJ
l1tbFQX0dCe4tiF2Hs6ZCXRA/IAbcCFkuA9uHfuKSRKFgaaydqEnhGtTHkbe2dJFT9kQevie1U0t
ZG5rVx+sG/z2+Y0RMWbOLlgkRuoI+4xL1wloyL6MJ74JwQ8jjhVPopb3D5Jro5lRyY/QzGjGehmu
WNtVtnR+Ims11t+AhwcY8wBUqTWSPg0FpA0tDaiSR8JlcCi/T6ryPRA2b4Z12Kx14WYDcBmZ1XAf
JoJVM27v1ccVHXM0drYPOeTdEHSnSWSgSgQSACfMDyEJREIwxg1uKbChd/YI5Q40luIBaOm855Wb
tbXZzXhzv6pu7CbfPIgOOMdsjAmQaC4ArsRRgFCofB6DkikRkO0UZj7XUUg4dB7JN+IwAKbQzbrR
dHeMsvlmUF7WEC+PEbb39zb1VGEHVJHNe051oDt2KK1C0OZCnO4CFZLYmLI6G4VJqMLQID8SBLwe
CQqlHYqTZFBYQSkxhMSxFi7K/A6Gt54yGjbDMj2sd8ThRB2LwzPVs+xbW6XztEpBBLQLEy0JyAAS
EAUtCIMEihWGfIoVdM8kpj6m0OslQRwZGn0z5TzbgHskwxv3qx0ZhR4wmWL9PJBu53kxrnY5O3D/
d6ghUEGoMxx8uQoiUax5CLMBh1GBwoTgK2GMjwLMTCICBJI/7bkt4o+Yq7Vj1MXNh4SRPWG+rrPx
4WzR/dLi1v0Qs1UoQgbmIor5EVfKlXrItjQB52NJoBQJjQ6eLvVH1B+Jpf62rjQiPZZGu1Gt436z
NPu8XbfTCQYvZLVF4Nu17hSx2BUPrTG0olLHMLhxyNiJ4obykCmknhNGYY9TW5RmbdSFOhvAL/A+
Z6fbqthnaqyEmzC1jgVGMMZhGC4pgaE3iEwASdAgpkPBoyTsVrkHGl3WggyxlnvWNza/nadLP92s
8KHWcjpm7uesAAR6JuKOTXwVBNApcJh4FAcvEDDm8kQkAYqSLpBjij1AA6lEa7IHlL16lc7yPRSK
GsNFhMVIhIkvOHEtOQv8MELGx9gwEgYsUrHqwmjT6QBI5+IYgE3twh71TsFHAwUfszFqSn5z5fxI
IYM12EOYCEE65lD+YcDyEVEqIFwaY57lRzsmjzdQsNgBv2AD2lukszoSQNLgU1LnhIM3CVzXDxxo
FYUQuEyj0M2sIZR/FfhBiGMqYhHz6OnsC4QPB+vDcD/szuc3Z0c4uiLMjvWfITJf2Kb7y0DsrLxf
P4QEpXzfvEQ0Rtoo6stQQz6KIYpDJqFxJZBVYbSkSurB5qVPtQ0pIyg7hgQ1sB4cYfN29SVfzQ9w
+Nil90TEkC9g7meRmxK5dtrkzDfaqTeExpTRQShtal0YmAzB4PvQqN/KXJo0u7EH+2I95q66Qi2J
JIzXoYJBhQIyPwhgbknCOIoRNlFcn0k83YX++kgX2mzPG8segeiJMGBcQkmvO23ecO6FELJON66Z
lqBRFRI/URjSHoPhRIUYvJYLgikmUkj1VG/aptvF1T5M2d9kDO3jJs+2zkPGwaFh5njs/nO6jagA
KGBeJV3RCLQfUGiYDY0pRsJAcqbd3NOj1kEis+MmOZO2f6ByeQMaX11DMmYwmdKxgCf2ly4Ooogo
SH6+iA3EM0mgt4hj7AsdJu6XbCELnpWAdmweKcrNYge+GjKwcke3jYHf5CublsHy2gLLBy8VpE5D
SQKTZxyBXyIBbmpQAC0R5HLQrgzDJGIh+UYayjK7tCUI8c0W8M5mQGB42zDQrqCKDQiqsrpMtN68
LNNqUZSH42HJnC87WYkONOIQjUJKGAwNpZClQqichkLrZFgYYP6UL3cpd7ENtKrQjPdPcOpm/lOQ
tMcrNKbNeOUuXH1PeMJNJHxBXVtutITEAZ2qjBKswwj6DcyfPVh8Cp6YKj4FXRkWA3Gg0cGRzIfk
cptXh0xXDxFIqpCZSPkigPkBxiCYXaH8+wiCEIVBCDNGLxS7ZDoI5rPFMYJ5RvY5YbOGNL29XR+8
WMtmgFYijqHI+xCPGmIvdhO/O2vFJEwSyAaS9nqzLqUuiIwOgVC9dOCy7vt1ld/m/92822716IEm
HMan2JcwpUHuj2FCjhD3qcJRxASF1Kef24y0eTzelbR3daVZDFQwS219stM+dtsPck4OUjskr1/z
hFLAyGF8k/DA5X/mK3c2ESeRNAGNsNHRDx/2H9A8dgS3Xx91xVoMybron8HVx4Dun4XVgwiXIKaC
3iESiPhcM3eGBW4USA1TFSQJHBOD1bdm4SfOFpu1LlQ+0N9YdZg/LqAC7J2ciXpQEiKA3CV8mJao
O/0M/UBzyGXUJCxmUBIlfhJhfTJ7/v4ZreKBeReyOvakOVmogRPO1i8+TsRYOy0TrpvxJVSIi9Ad
M3AMdRIh6mtwIsjJBJkERikqw2+eOnyr8+3uaYsxp+lxuZwz1p9cW4e0UD+aYu++F/V5f4SSEJIl
FE2X9BLmZACX4SGOkghRY+KnzxHO33/jqLa1oYOepfMB9KndH9SW9ra4s4t8ecjSrO7iOIkTCrM1
ZhFUPkFhykYwZUMXxwNDEqVZPFj5+vS6YLLjQ4A533XHXY94a+d5ev4eqjGidZpkUteZEoeSS/Bq
mN9i6ORE4OuQSl8zGcoQh1AJ5f/wdiXdkdxG+s5fogs42JcjVrnH0rjltjS++dUq1YhNyiy2R9Kv
nwhkLYlM1PLGfLq4aWYKiEAGIr5YeVMaDotfFoXDCw3xaiiEmBDP3UycVy8LlGKGqYia7bHUGMCd
gSQuGHx9xeAmOryOAu4qF1HduIl1zUvUwqOGzgXtyOuCnkPzdZvHcFIXnAOxA3jXUhXPQySWInjn
XBHn4epZMMzgEsuQpZ9E5pvVWkI07RBipgHUAVl8HGMcTOTwGqAfXF+DGXlQt+AaRTCPNklwGcG6
mMKLtoBxQCffj3A+XoU4HxuMs17pedxnvebyqHf/9e1uf/KClBbV3SjFge4DR9JUd8NrS7wslljl
QEbBy6Ux/0EYeURfw9e6y5fRR+QEjuRJPqpoGJoU06C4qPTo14Eys4WBJOsSQVdbxW+EQu92T49b
j+ndmMX89m2s5R1jUi/vCV0ZwR6ZeuTUVCaiT9KDRisWYygAPr3EgKgNGfxAHrmg92mPG7rjoSVT
9GhfnOJlL59/AYX5+o9zHYjmVdeJHIt2pCgHwN76DK4WdQQ0HSgOBSYlpguRksmCE3KWHXIWU9Tz
Lfbxvr18Wf10LCUZRWUFPSR5hh/QnS1ZaHSsZbYSVIcDv1+oAHADnFwHfq5w9J47emXbJv4/fa1l
cUk7LC7lUbp/WXx+5Mez5ghbY4kJvSViTUALzQOWDkRwa7nINitV2ETzjdaY7K16e5/CtX9dgHw8
rzZTuJay84oz4oQF+fQS/CJJMSgZKXM2x5DkO8G1loIJ8T3ZWK5ODtXg2O43q93z7q05QcFBtdmo
SYooAEUWVNeAG4CrIE0UWYdrznKz5oSoOYbZODotWMJ4zf7oBmDgY7MucAu+2e3fgERZswjwDypo
lrhPxgQChhluFleCeO7A30rUC+4t4yy+XyarpeVyoOb8TsO+Yx2BcuiRNd9k97w9hVulMRhurXLl
wbnkOhEtUwVM4KhodL+jD14GU4pM1z7LedmWKMk7ROntkahJP+1XirIaIaxo2EgHBsMQzTyeuUkE
PBVPtEox2ihScbxLUrtoS89m7spt1lt2pOcb/9HHP8+iWZJzYTPgCXBbwVK7RAkGAMDNkJ5Gbg1n
4o+KZo0obFjb6Ln4b9naajUolJfl/6zOUU9t8TImpZIC3ElYCRmTTwDkGFVEApz3JWsbuWnV2XiV
8fZbruee55Zv3SSKdgJBjFr+qAc8SQuNJif4yHBdATRwAOqRJZJ5ARAUADPEqwG0DnLZGts5DgMq
aiWa+PQp6gR8Iwj3AG6TqjUTWEvJwZj64knhNkTwb4RW5mpcukOK7Xi422rYh6P5tgrrKSnHKwRR
4I9HuIUABuHL2IA1px7dckAiMTptsmu/TLNKu/9629l/ve0EEScRFVARFp0qizAjJWWS8ODrcUw8
FAV3ADRE9jFZDpjPWvk+EZvOiw0/bt05T7deTfj5r82b/4KOtq4QT9d8XtIODFAuRAmJYMlhOB34
4SF4E+FTJyPvwR+HxfsMHB5OiO7I44KxjlP7w269eUFkimcPoKgmoZj3XIJbS2KodlMD8tCgqhmT
TirJtXS3bVFd+TImrY8bqrfrOZ6GXy4nR/1ps8J68f9+hf+Lc3HkkEXV7BgiZ8WC+XSMKOctEUEU
cMXhfxLYGG6kFsbyu7IYzUaXKgzG70zY6Sip7YZN2Em7/c/+dbl7ez0Em/ijGQrBUENEgClFekIL
1t5KuBEOi5udVszIoguX5eqHmKzeZ2LyUsvFhve4kJPU2+rlebv78dBJelQulvJqYFGkXAaDj0k3
YwO4ORlQmKUuEMW5lToEMN78qtqdbzCh00zpdFhhMBH5j5tXzH4g1PTPi6ff9rv9OOjtYpbW5EiS
APkR1CqEAZxocMsYuJXcsLtEp7NN/+g7Lz60HLAOW4vpnfgugVE5ej+8WrmsBLOUgAuMeIZJ4lk2
pFieMkvgWGb27iHv71L/le9Sy9NiNedJSD35VAC+v9QRY18NNV/KCGHQiuPFCCll7wAox4xl/ipw
4oXB6AY3GqwHWAtxo4JoWP3ita5PH1oSXYduTSdXYbF/Otl5fqqPlKCVMmOFsIC1HQUQR/Bwnb1n
ygAecda7a/J/WrUlyXXEQ2/URDwuxLKHVJ3hsdBMSdbgzGNaBzx6wGZWusI4BVyc+dWTvB7Hjv/R
jWE7alRHCoyZ1lL/efO63Ly+7FG+j7eUgVKUElBKVkgy2FQ4RqUBwvEkuKGF5+vlY8dF+x//+LQl
dx4nhl+u+RwHlE9HFCArCrASoC6IN+EyCnTjwYHOEYmHc2Y0e1auH3Bd86LxL59aOteiR6c44r/P
m7fFU52Msn9bnLOQmtJHcM6GstCUgSgGwNh4lRB9wflKvGEZxCYG+GW4K3v79cfv4yHsMyL/EhEN
G1Zt5mwsZoJ9bgD+yqBmgP/AHDSEylYxCdeMCqzoLgYj3NICsqXAnjdM0xuV9se1L2CY4+OG7iXr
iMlqvThGusM3/tPM4wsycma5JioHgZ0hoBsMnHz0gHN15kF7/Qd5fGf6GrZWcxTg6Br7s8Ssuu2H
+KeENQF20NoWJGsQK+l9CSyCujYUcBkt4PZHcHccVVoK0ENUxrvL23CXKwVu+HjMAVtvZ5DYsQ0/
JSv/82P+ehL+YoUBGOCWGHAViWCRAqksEuoyxjnBV7xRpXp/+Ou8e0P0xi06RC/cJPH9zeL5xzGa
GewlO7QSMJs43GYBBhIAgIBbQZxBSGmzSoDmqTTvX+o+JulCfH30Rsv0osf0kh+v0MEgrp/3+/U5
Nq0QGcia2WLWOSzjw7IYwXQkQUVFcLaHkRZwnLgaXBqt25K1FD2y7FGAcDbDKdhljapWX+C1liDj
yhaGsRzQPxxAJSs4/hKgC+j/LjGj1SZUzDEI2zIz9ZHqQnGMmWsd+VC1zGRtt/I5ecCFxfsKSDCB
ZTRJWTowWGBJ7Q0ENd/jApiav/jQkm97PJ1O9svzKZDDXa1SA6faSUOiMYBtRbBAuWZEiwwKVAMq
vHCop4Um2/eO1PQywB9fN+vdalopYzk4n+jVaEVBfXPjsXOOE3CUC/ygdOLmXr123uGycju/0/Jh
dIePmcn8tFm8rn6qXajgMR80xYBUCkOPGSvysS5RaBBZH20mObAgbHSpBPGOIegjIZcg+OHxmEnO
3fwWwi9XEwzeTi74igmL6WRZW75L5CI4wgDlwI1kFvQixWivzdEpT8EMXa2fG6/ckrbokCbcSW/9
+vmJjzI87pGpGnsrLgsFIkMl9syBMNugBVEKPGLDAeGa2Mbexus8tHt1CVgd642PnVYvb7vtb6ej
wZj8oQpa2pCykIQWkwcZ8LSAi6WMzQJUqonxagvXaOGWsHnqC395KomLX/8dp0GfA8bO1IZQJ7B0
2ZPAAbcJlwuxHnOkjCVrWcjC8Jvi+PXr4pefdqv9HUZ4QkbDgtTzy8XlVqzX88IBNOZNtwscZwop
ENSqWCVvCJyzJNknCSzSZLy7u1SgIoXLtQL4uCV8K+eEK9VLUp9u7l8+nWOygH+G9qPhB4RxoGet
KhoDCoDlItiM4IMnRmeWFMirUOX9tMSZlgu9jJ86YVvksHMXDFtNlPoMoaGbeXA0ZU14Z8VN4h7r
sjGQIlQmPmSw4IK7oBlPWrn/Pwg8PGxIN/PkBv5yGkH/8JdPX163OCAc0xugEKptH36qcxC8FhEU
Gy/YHh+ixnok8IZMxj4XBpeI3ijvOqx/qbjr8Lih3al5FI4vTa/utLJeuxIHIyS0Rj8BL74xnIGX
qQi6x5iiUcSCIgVFlExU6DL72+V1df3LRrQ+fmjJ7Jz70p6K+VfjDgmDutspab3PjnAfAFkrLE3C
wKbnoLSltlbKfv5m1e1zwN1Yj4RTjUCNm38bn3bY8Tbp1VAaFAn4JcRQrMygArwVHR0pXLoSg0le
p/fr1WipmDCh5kxsDq3ErQykoauT15SJHHIPnjuvpAM4x7QDbckDQmZQ/QCXacRi/ihvfvx0sUnz
+LQheSNmJQbV9kz8rEZxDQWxw3gKHKFRq8OGH2p3R/AlutrKhQ1uGO5jRdaJD8zDp9CSvp+SPNNy
rXj3NNnizOFc3ARn4gimdquX53+dIYusuXsKGMkDXgEnAT6P1oBXCqcgZiaG5LkO01xhs0qzP1jV
+f7ga3eKKL7sagneQU/UqktKZaFa4QnjJAWFBgmcmKiDAJ82Wa/ovaj7+w+XheX7Dw3NYtk5s+Pk
EmDwn18Wr4vnt93z5pwFwdsZQAZCjgSOCbt2Bag0XsAnBw4imFDQcf2s83S9CTGyQ8z21Nr19Tff
T0rmIoAN5ZjGYUcRQ3tYZQJeVOCgepgOzsXwXiVz3/co3nY+eW2YmsT1cJ+0e92s3l5ef6ud37V4
lbkamWHFKY0ulsrou7pEHDOMqGyj0j6Dd2hvcnFa/fb1Kne8P3mp4Vp2Ygc4uf/oGoyG/Z8HsoAD
Hj344kRRwI5C1uorEHCUbnAYLCulH8g4r9YQoWhHWBSdBtzxD4s874cCtiY1FngBXyWQDIQBBheF
BOMsSTxobQKoufuCwnX9m0c+puJCsHL0Rsvndh46hgs6hX61JnLUYz+vzNTCJ1HAsgeP3QpwfOB/
OAeWCKyrALsay/Ww7HiLSyMDzm88tPSuO0y4U0zkbx9KmYQrbQiS0xyIDAU/kJM4p8kQCgom0pyi
fbdw5Xn3lmjnOkQvp74GzjzZ1zFatRUR45T1amtXTaenijvDNSlSYUEsnLjz1hOpfA4yWBe8fI8R
OXhdPx3JuDwo5fRKy2rvRi9Xp7T47+cSG+yVPsxIERm/USES/GkiuDXEFZyiRm0GiyWp8RNf//dO
jQ3uozqbr/UkCPKGfz7oXA/JMARSqzuCMJJaDa4B1pVq+CmwWHCgF8vgvlkZrkZIR+s2ZK1UxzTW
eocmSfAdWLS33w/AadDqEtU7yrCkyYosAcSWyDATAuYJq8WKSMpZwWyR16/cefELqejT8zHpUtL5
54Rfykk94xJnaO9PH7aWbXIpk0uKFO1xDFkIJAhqiNVWschBXvPVcrLxki1J894O/OX6VA3/YaYA
ogjgd2BWhWE5WQaXzylLdHHeaEwza/FOCuC0eUuylB2SpTqS/LR4/nG3HjV51IqLCDAuge0Gz+4w
6CgC3M9ZeMVKorapC5ms0myv3Nz5VGxF580dwwy+IREOX/lRmjrFQwKu0JmkhNXOMoG6jwBvowbT
x6nKkt3sErwQzYyHZw8tZaxD7lrPK+Xiy/PbAhBgr9ipAGk485CwSAEKhYQjo6Qg0WSjQCCkZPbO
4NJpm4vxpdMbLSPr3rlv6XZz7iV43ez3o8ogbuu4C1EkB1FlDNPMUhniHVwiwMlBUUO9oJOO19lK
DR1yOU9Swi/XR7X4868jlMWlfTSshkpEjM4kCtLHwHoKwQX2b1lSHI/Ko4CKfkj4vGBLx7pDh8JJ
eI0eXG/2P7+9/LIf9ayigh4yNIOmFl47qhM4NRgXFnhNgrKOUKl1BoEE6HVX5DANWx39SXzhQiXY
/MUxa5p2YtyaLk/VBZ9+WbzuN90kty7gd3gKjjzFAhgrE7GAqUigQkWZEwvhj2rSn1LZsMjMPBag
wVGeXMvd88/NSCBatQlnQ+LY6FiExqoD9JExQRUBiUUlqQc1E4R4n0mGzxdqE+DBQ0v+qsfTtFy/
6VY4tacPNZVBFOVLJKVELAmJgdjgPDhgwoJHXgKn6Xr53nTplsDlPOertbCTK1NrRq9j9mgiaEcc
3KcVEb4w/KuXhjDto8f24lyug8fxFv3DHb/RMGE7oQH85ZVQey++ngGwa1Nr2XBIk4+gFnVO2L9k
GMgPqKV/Nws3fqNlYTVXXdrNRkAMA31/fcOpNXwodXJyyGdlzaJRYEA9ZaBRLY6xFRTLVmUqLibG
ze1mWFz7MuX49KElsHPwC2pnNaqvm7enk2TbOo4KaY6OJp9B4wMq5jjgAEcwW0W4194G+Baa21vC
fVq4oWyhZYcy7WYT7sANRP0Gpm25e6pFj4N0G0x4RwWnGqQizGnsfKZYj4VN2ywzwYNzNvDbjmiz
/hV3tHlvwk3nli7V6lxDw6cdZJk5gW0sqCEAnSiApAmsGA3el5yljur9Smg6IUa9XG3nJK/odGLd
XzefX942P+w2/3u+mYNgM1o9N47TIQFa21gyltNGErAAkSkFX1g4roS4xxDP97nE2fS9h5YB2+Nq
GmL/afP0CwqSqKhC4oQfoZIHT9PCF4g4XsozYpOJIPkO1E4qsuh3ca7/BFtfmHsBT1pm5lMgndnY
TUfnHJO5yFStWMRRkId6P8sTKE2Jc9NQ1FLEqn8mibU5KgPKX8f0b2aLx2+MWbCUz0NOlgt3tK/l
Zf/0j/Vvz4vPu3NPkn7keEVUcSkA8QRTG0Q4xYlVgpGYKafFiZzkJKA+X+2h3XfRI2Z+np8/vzx/
XDxvnoZ5KXU+hNO1UC+bWlqrFNYjGqzRCyljOIlJ45PnN0ZD3CkkYxIunfj5jQmT2w6TemprP6zG
/UXa1kAT/lND4TmnAE5yUQIOPuBV4IC1uQg4FCZZJ+8C1+M9LsCxVbe5yAH+7ciNYOeO9/L3oQlz
EsXnvBiLTeIJwA2q1UKCt6BbmfVCcutKfKdc34SClvqOu2/FatXDO799Xr4ciwhrq8JQGioPn4J5
5m0CTOkxCOA5fAqNo3piBv/W06yNvzeX02x1Bf6MX2vYcp1kIMiCnOUvUTSHpq+DVz5Mbg6gDwC6
Yj0EmOiARiNwScCTC2i18U8m3MfLcf1rV2PS+oWEqg711syi32+LJ5wOUW89/oPGgSpmDUOTgLEE
oxy2JwD9lCaBf0ReO3EDZ8Cql4fjPjWUbtjcl8RfHtHE0+LL87lZ12j1aIYwqtMJW7dxPGMGTe88
yI0BxzIIZjwVNFvd90XGK7akyHmBkt2qU6xt/0/AQhtxil6A7q7jQyOGJcG7AMcW9aQEkwOmhmjt
nOEOWxWnI7vGCzUkbE3nNGq3mLnRN/no//YJrpTB4nfh/q+4a+ttI0fW7/4VellgBns64P0SYB5I
djPjTZwEsTOzuy+GLLUcYWwpkOTsZH79VrGlVl9l7Y6xxw+W1BeyqskuVhWrvqqSyRP4cQ4qLAjv
sC8lUiiX6SLAWHqnibcvHvMLdIx4jm5aOQoWi8V0ebUEE4D4frlc7T6V98vtbtOIU5PV7oAmOayI
GG4REUIqd5i+a7MovMUiP4VV9H/HWUsD7ZPd5lroAa5tF13/62bZhDN+9RF/H8IMUpCB0JVHBVZo
hM/1qCpYGGSdZ57kGL5nQ/CRRq1fHtasJmckn+1wus26FQOsL7pZbEemsYVfl3HZQC0ntAoOMjLQ
XOUk0wzWbo5RWQ49LNbmzplCSynPXiuwi/ElAs+22Vj03SiWLmo7EyfAR3QtbY6z1rwyVe0PKgmP
WeAYB64JWJg+ByPCUskC0B+c+3+ctU2iWxwz2dfNrTJdH/W3ZXLJxumsrGYqBtGlYA38rCpDEGYK
lwlG4dUl2mSOeVByJSvgkEAxes6gHXoY4X1/tsVCCpjvsjDDrR0+lG24aKXKpQwWSRmujtqSoHLU
hRUmRSsOw2eIz6RTRCuuXMH8WSmHzwG/9a9rMVQOxKvbktUZ/rPHr/WqiXQjpEZkQWU6iqIKlwcb
HJEubLCFNwjo03Gz1y00O56qgRS4qTpO/+10NUev2RHxG0yzfVYGlT5XBYw9lRjMgDtkKfcnYOaj
l4R626mv0WmtRYke2HGY9tFuT8aQcOpAq8xlJkOyhNFHBYoFKBUUzGAfBLXqz8aQjEaETM2ABT9F
6MRDmh5o4Nsa6TYFdApLrSccdH6fo2cTsx6wDJOgMlhT8Eg6aEDNNlqdWzHQudVdr9Sb6+u2asu4
ky4UPFMmBQ9xlllnfUZkDJYLF108/QZAi8MPCk40KbwTsz6Fd7Lshgm9SwrdKWeqjJGyQH3GKOjg
YFrBvJM2x3z6KJzVYEaZl4vDa9MzlvfUvKbJ9Uz1yzXBwbsuqNDPFRR+e2w04klHUmTwmSOjBSrF
RVYo4yMnkeb6rFIe+8bHfDfpZItoqweItvOuWuMKxE3E108njxrGvjMtEJMbpakBNcaB6ZJFF5gB
aRCjEy83MK4Y0UyLNi9zMcSL7KwVgypaki/V5myypTBGHtd5eO4Ys1VQWC0MCDwaURGwYB24l/Ch
fGzT0tPFOvz1o+9mU0FH68ckNeidez+gh1mZx6hdqrGH8qjyD8lMBC0o0wXlSj07gNj2CQUMzrbo
n/bBbfBgtxRQKiD7qcTIsHJzXYey7cW/pqiRCe6YkqBBCp0CdCP6dhnmR+oc1Glb2OIsbJahvkY4
Griyxd1dH7UlHTysCa1opM+75cPRlbiPnFKwxgbM2OE05SrwzHDmM6xxKaOQxoSOPTrSZIesgRc8
4Vkv+hVsUvItfkPptEdJxU9cwBy8CZHDcqGAJh4MJmSbkAUwVpXIwS49QxRX5R/G837xdJP6OenX
NIODopswGb48rX6DZ7DvFp+pTjFpOskqHRnYHRkhssD9XJ9ZAxa/xOROCo+Z+7O0104nI2y0L2oz
00fIhIO9GnvH9/fyQwp1gSViH56uLQJSpMkiic25K0AZxOwq6kH1sUFjLSynHVZneWZTKbU9lhzS
CXYBIvum05wei1BgyaC+p0dEj4kqMRMEdA0epcp8BJUb5riQuTbRk+GiYnVzLSLoQGDGnJXmEKjy
Lb/+2MVNpZp4E3E/k3qs2pc7sFxyk0mYypJjscln5PgL4qbW5F20GZgOcLU4meEVr4tv5Wq3TVFY
PEHtJlCQ/XfUJ6L0MA0QPRyDySKWp7BgOuSIZUULCuqie7n1+UDPyIX7sy22+UBGHhzsep///jHs
qah39BI4BOiDDAQ/qBmo/EusNUlVZmPOI7zgguT+nDf62Pow5cfzbdr1EO2G9kO/risraCDwSzKt
MC4l8wqjlrD0nvOg6ApWEGddzori3MCvfSejYV/78y0W7vpV+ex8JkxPQ1/dP03vy6v1vHzYh/vW
g2ACNQlUNEdgguBBZUWQBW01YTaHN8/Rczjo9jGON9C8qsXNQNEGO1+o7obq9FvTPXDYIBbqla1Q
JAX1eY5uHimxxCdosZlBU1tTooSR3hXG/8l6SM0rLtrUDkjYha4xXsOX5arcljfr38rV8o+Gi6ry
bXgTFMJNEoVxt9pkloU8E0oSTS0YEQnptVkBY7C5NkXaDFA0rSE3ft8+7I7OAirSHoTLcyYCwuV5
i/nQosASNGClgzwihVPMWtrJh2400+y/HHIz48E6HrD8/ni/aYUkGq5pKKSA7hIiIxbh4HnMClBU
tKJexWIkFLDRVocINkRENyNyX71yU87W96tle/gRTKWqIps+E5iaBNWJOAyRh3nGcpl5j+nsPleE
mhCELF7CuKhqUX4aIqpfsrJxWfsJ8P40KMVCLWZtH+I+IbSCjTEVdJKMHowJRCDgBOHvOFa0wAhr
EBExGC4NebHF90TC6LdetmgpTX/VxYNdEX4koFrd0+Yn3rf/ib8SSJShTOYY7o4pPpIpMN9BhmC4
nYcZFHL9P4EAqs61OR1w3sPBMbi2L8tDWWcpCUnhBEYQWJlgddWg83OBs7WAn57AqsVoDprcy8zW
PQU/X572q/582eZvSgb4m5ran7r++r1ZjIImzFQnjOKIyx05YvMK+Oe9MmD+KpAdhDKwvEaA0JvN
tShRA2EkpeJ1BnL45er648PT/XJ1MDQ7YQHEO80c2H86SNRqaGaitFlBXZHLGJSN5IVSgIcpaXPD
6RA33ZyKg5+37zO2YIJ4icBpEcPeiCeZ9RLdjUWQmNZc+JOQka2W26QNgCKUmnbryf1Wblblw1DI
uMmpFVbDyg7yCd3ZDFTHWICByEAv81S6cBJFpNlyizI7oIjgwVGxUoWNww2NQ7SSKdJwqjVFnxMC
zylMT4+YrR6CV54VungOA/IZmXI83+ZhNvBCWcRAq7Z3H/54nL6SR2xmDAAJhEsL2mt0ElVBJxF5
hmYExB7hHJ5mKDpZII1GWr1P6cCCOxVkIP38YJ5crnYwHuhRxSFOVT7wE8OJCwrmJyy0uU77dtxk
DpXVEK2BxVYUwfizA1M6vT0fmnu4ss2fGpghU3N3eLqbcrt++AYaaY3slzxDkngZTEatJFh7HkEe
UxwmAxWPU+NjZ/Og3UyLgrsB6wUO9oJaQeHerL+VTZUfLGfluUPkd5yS3guwL5XKaACZGSwpjDjL
63ZoeyTWZH+2RfV81veulfN5XeP09+nmqIzuQVQ5IzoCeQwrw/IcSzHkMCtB9xDBSEt46GjFjUZa
nS/UgA600HXG3t0fWFeG1N2bar/Ri+B4Zh3KGIsAjAE3z/JoNVcW9OHOvl2rlXb/ur9htiCLLjbU
58smUmg1bILv8+0dCGMGgrjQCHaRY9I4gRWmUEr63Jl8MLK+P3TNPoaHr3lFk4sF7VeJxIPdMIKb
EJpzLsoCFgpQrazEvWcLhFsNtiZjwSMkqzfurNhdaHaYXjjRIXM2RGbtx82X0/vVertbzq7K7RYU
y20H0YOQVAZAcBDTImMUZDYs5j6zAXEXpGNUMY72UXv4T7fbIbEcIrFOCClX5eb+eyuBlNY4UcQJ
SwNWrBEYrRdBn7MWc0GMwx1JpnphT73mWsTwAcCQxQEGosr6elyvQqt4L0wEfSzfa2jupImZI2jC
glUA32wALZOBjRBtcPmYLtZtuU3YALrugvdisjrBjTQh8WBwY4qA18RHrSTWzLUIswf2rAwOlEUW
TSF5YcJ5YOTPhzWOhjQuBBt4wkLxI05EZfy01UnvaaTO8kxSTI6zRKGHSaMM5DGgVRJfrLxSo/82
5QMJFAuhayXybvvYEJv4wHWBdYhEyJxB/EepReUhk6ABOx80s6zz3jTaaPUtST/QYiFZ7bMuf9+V
q2ZWo05ZjbmVLHcKLfKAXi2FpZx4hqjblAYZpOioMp12WjToAVCihaF95+7DenP9fTVDR6Hdb7vY
yoaOgesCa6tLTEaDcUOPP2bZYlggN3k0+sVDj2p6xpSc/emLNlt8iNe7jsGwqmB3e08fxAhKKI4m
p1LEyjxoYJpbzEICpmEZyATicMqowEATJ6HsBvtoUzsAiYsHB7fFnlbL3fZV2p36vKqgF+k+0zPl
eWoDa6tlWWQIzcIc1ltgiFUMuq9muSby9F5M3fKIon443eFgYG5Z2nV65hXWJPTYKq+KWrLcp6mC
1UOkYFnwmANvA8WIWJBxEgGkC6qlfcG9/D49Y1UNute1uLflwGwDO6UHs1ZbOesNwijICma/+pJq
ZWCRBllkyuVYpUvD+y6NyRgJSiqqozhPpW11NLat1rikzcxiQL+bijo0a/b0ddsAcuJVLK2l0ggn
SIYReLBuFrBuKsqzUDDGDKi3OphOZFijnYt2XwOycqrFwSpBLM8l6Os1DZwjKgZPtp8Cgw+ogCUd
dAokBVfMzIB+pjWYsFx2tOxOY21CBkIcFneiq+mCdjmdl7sUmbWdpZjFCjVZqCrSiTsTfcw8w/oz
YEZnjiMStIFHZkDC52cmXkM3+aGb8cDF3mUXbeqHWDJdizYv757uKx0A39BUkJsmiH+W6vhInnmL
loTR8H4WBcvAiNEOG5fnQfc0exjLHz9e0eZhANlugeDJfWiY+4dKA6kU+PQl4WwUPscQdgYvFGIC
2sxwrrGWDlcGlazc/NfKSHWuRfBsYHtxMdNd8d5zfVfxrwjQWlVxqeq4KO+IYpZkucBMAUlDZnSE
RVjRIioaI5FnjcBgd2c65XvzajYfkP+zXjHkN6i9p+V/+nANEzR56au9L8Zt0hRNMCBChMlgWBDe
nYMMDEXMhNLBwuImgz/rdRnoaiResH9hi7Wyj0M5JaScH6sgzKZARG1NWJU2+2EsAvE5bv8UiIIc
MSMpj5myTvJQBKtdJxev1dBFu7eyTwIV9e7T7K9/bWx+7RGCUFnLKceUG9zYEdaA9R9kpvBJelhL
ctqRhY1mLi6K3/eOrKv1fLk4WCTXT4+P8LxfA3lh+gDC4RFE3+Tu+2S9+1JuJl83a0z4hWV9N93c
lwmUafdluT2ceJ3Y2k23v90u1pvbr8v56wmtjiUo5NsZ/N+VryekeXBb7m63u/p4u+Pnmid/rnn4
0eAKnkDqDyHVl6tykB1O9H/W5cUvVxPM9Wg+3k9w1YfVw/cJOsTxzHoxqc2c15Ob9W768JOEqWau
Jptyu5yDbf4TefsD+cuPk+2/sIDU/Hb9tLsFqp5gEB/WMH7lfH8HegX+8uPFr5vlbnr3UEID2Hnd
rAGN7M3kX3AWNNZDoyc6ORxqdpTa2PczSZyf/vvl8tPNZ/cOvn0q3lx+eD+52H/e/ONjMX7b9eU/
09nw4fP7m8kPq/Uqm62nD+V2Vs5/nFz8dPwbaaA+e/hy4UDT+4ZZ8zeb6Qzn78AfI8K8rX9MLsKb
yTZlNk6WaHtuB7sCoVbfo+CehAdZ3TDBTZzBe1irn3xfIBIkKsI4PqV3stObMK/IVeOev11P/nZ5
M7mvpByQOFvPB/o69sPH7vmhgt3AJ5toe0XeHPs5/B2umcCkns7niLAzAaIxZKYxP368eJt2LSYO
j0w+rGbl8Pi0yLpy7959CKcnkrWv+FX9xOt77p+mm/nkKz7roT/O6n705OJj9b5PYIi+bsvJ5Wqx
fnYKXN+48Hby5rP7lI/SJlVjaCzcs5vOfnvmxaBg1jXv+eXqNnHkbk68FhNBatrk5OLX8g5D967S
4x+5g4NyVA+n6d7TGfrDo7Kv7Jvj+PynU+D2Nnc37jT7jNbDySiwcnt7eeXeFKdvku235vb23eX7
t0UOM3oyyj3Y+/W0oXjPTfH3m9Ok4f5dm7bP7y/Dh/wkdVKyJm2PSYqOvv+VsJCv7FVjeu5FzWP5
iKkoYxwdpzQl/50kvPlwkyTyydnJ6ykgqd7f83+TRxBO29ZEqCbAnrRacqR7Lv4NUEsDBBQAAgAI
AEU+g0sSwqtI0gAAAD0BAAA2ABwAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0
LXRleHQtMS1zdGRlcnIudHh0VVQJAAMyHSRaMh0kWnV4CwABBPUBAAAEFAAAAF3NT0vDMBjH8Xte
xeNFVg/mT7uWDjwM18FQVNZgjyNdnrDC0pQ0GfrudW4H1+vv8314lnVdbeXm/Q3Wy81rtVrA4PHU
uTjC3RPc76P32AdCP90xWhzpSgVFq6amDbYvXaDSuePvGu2wxV6jlx6RWrWfTI/Wzjgr0gQWcHKd
Bh97efCo9CwhHADYF2et4ZkSDBq5fvZqPBBxBSV4YVh+c5T+M2z52T7CBc8PHhKS/RWFMaYUoszL
UsNuuCS71ulvMp8EXE2C/CbI0jmHK49B+UB+AFBLAwQUAAIACACGPoNLVlANrkI4AAAxvAAAOQAc
AGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTItY3Jhc2gtbG9nLnR4
dFVUCQADrB0kWlcdJFp1eAsAAQT1AQAABBQAAADkW+tv20iS/3z8K/hpYSdDud8PITcA2SRns5MX
Yiczh8VAoKhWzIssaigqie+vv2pSkkmKduJM9nDAKoNIo25W/epd1a28qcrcbrdTv/+Kdzebt3a9
sNVVZa3/T8IE0X94b7L6ergVXhfvy9Xuxm4v3r9+8e5lcvHkov+893xh13WxLGw1vZ+L995W26Jc
Dxkgz5QL61/dbmx/6XclAsH8s1dZXXyy54CuAjb+m4FIb27r63LtZOCK/uG9tdtNud4W81WP3D0S
v9vayn8eDzFxhD0vzmp7cVXcDGARhGWASYCoj+SUoylGE6y1HyCFkPf60h+T82WW+7D0u+8244nw
zzD/BUtE6Dkg3pRVffIYxl64Lte3N+Vu67971wEpjFJJmMaBJgkPZMLjINSAKDFpihEiJKHC8zwH
3Q8/Zx+tf1msc+tHZVlPfcwR8rc2L9eLredd3m5re+M/X9f2Q1XUt069tc3rBoldZ6DGheeZKtte
24V/dV3ZbHEEojwv+ZLbjdvdN2Dyu5lFYTwLjUkuL/2zy+e/XCa/vD/v7HdWP1rx1+Ttq9nzV+/D
F8/hoTh+657Kah99QfvXfJ4t5tYuOxReAdIeR/P67ZvLZPbq9dXz9L887/1L/639ADu3/iubVUDs
QGTqBcHPvueem82ukt+vTnx+zxUjmVsBH4K7LxY5hQ/+P0F+xX79w6+CLxfV5y/+5cv/NK9/GwkX
z/tlVc6zlX9VZc4Mu+USvO6ssp/A5NbPr6tyXa7KD0UOe/aWOZ96WDEmJGNI0gnnShPim/SVrT+X
1ccTvP/Rakoul0uNlCA8s74BY9XF+oO/sMtst6r9vCw/Ftbf1mWVfbD+56K+9jdtOF3Md+vFyvrF
MZT/In8m/NQxdfwLsHb696urN6YBcLnnv4W1la3L9V9jRRe8x+rV5UOsvNaHfTSd+nGx3WR1fu3/
ubM7cKW8vJlkm83KTm6yYh3UzU4PAc9VMd82kTL7aKu1XU0Wt/DVGCIr0RyjDPxqa28+Z0U92xYf
1mDYpxD7Hu7R2rQcesS6tAjRSirp7/fN/rsE8Z76jDGPnOa0cTXtfRZxBkLXdlu38t+l7JfZ5uy8
Qaf9sz7Jyc0NZDfNzz36WHZsnnN/0XvirFjXP4G3QySCi2/rJ08cW8rlKFui9LnHHstWzueLwRMv
wZTjrDHho6wZRucefyRrxTJLfOc3Tig2JOxQOOKUnXuidQKwet/04y5O2VxwsN22zqBKAOqjC+Pp
d/gmB5SzmQusP5v9la131fo7vVNwqfzDxtnnP9sPjWoVbXz0UeQYZbiVs0eLHiUmDwat0+l+MbjJ
1hD31XcoCHKl/xFS87qe/Vlue4o5UB+xWoeKspplWHB/dtg/u/lQzYr1pxJK8VOfYHFQzbcT1It8
MSB4VBAnRwXRfzuXYP92EvPp8aP4DuGhAxIg/GZ7uwZHyj+5GvWdkktJOpK7vmW2pyaFPEieP306
weN5rkMuQ2jJHbltvZhOZzM8nTp6hWv0Zp+yqnCdqFtYlLMaGtuW09nd7t26gIQwW5X5x2d3397s
avvl57/91CXbtFvTqaMy20BFrZ+dLu51kDtyYw8vdlXmoD1bldB0uL+6u5q1Z3j1E2j18Fr97MOf
tuyIpp7eJa5/ZJ+yy7wqNrUpK3taXXQ21wjrLo5PM3CRGiaDh/XVNCDLsnoczr+i1u/UTFOW/9Y0
BAxh/2w2a3jM5tnWTqnibS/wKJUpvFx+r8p20BytxvyiBk+//fF+8a9z5H8R4I7BmNRDe3HWNlCP
spe0y8e7+Cxb395js64i5zfZCj5Mpy8bPY5p4v/YtANE/y8tyxU0yCMxQrBsu9hH2ZcjS/2j2Jd5
Bj0WtGggZlM/3u7WL8pyP4soIsc5E3XuycdyZpBAHuCcrOvq9o1T89nppmZSIJCRjt9M8s0GhgRy
7qnHAhFaEP9TWSyedEwx23dyMxjFv9x2LF3vgOwzt90/e3I+iu2nEbGeOKdrmDTRiZWLzuVu3Rzq
ZKs2RBmGlKof3epovbgr+PNycdu0JtjD6NGUcHZH6TjbCOVh/OiGiWN/SOiuXZLT7ozw6vLd2xem
XK/bM64XZbb4nimBLaUb9lwnvv0wq6tsM9ZCfQshOqdHQi7keNM33QF2vpSWu/WiCebT2SBfohxj
Bh2dSfchdGmrT0UOI2d+/aZs1EEwGbQc30B2zhd5lyy8NZrlYlCLv4EWzMbK71K63Ni8WBa5A6fF
oFiMnf0MTn145trifw7Medba89yfVXZb7qrcui8cy+kfTSyQQdoawj7hRHORM6fdV5etP81aH5vN
Wl3gJhv9mCBS/g8LIu3/2CAC47VHwO3A8Zikh2gGyfy3q7Sh4Bo8aBfC7dZWTu3bJpsSSc+b2HnU
YU+2RMKvdusWY1M4JBo/w3L0H31kltk5dvTftHq5y6lY3sNFtydlP8Yd2I9zB/7D3SHf3wg0Z8i/
K7G/GvAvoWWz/plgwbyoz6ee71fZl+nIOT4szI8LslmimTtph4X8vicWdwtqv+ouXdxKMaTFFxwC
qtoWHVoYZYgtlHUL883JE3buuG9HF9xlQaW6uNoXc/FQ6eMjoECZ5QuEraOFkVtYDl5uAZ+QIkw4
STA5WVHtI3S4IASauwV2CqvRI+Y92RuXzhp1FZveyiFK/Wq5GtDCiECUgb3JmE2Alvdif3Nh3rxr
b2Ow8JKqKqvmimd/QXN8VHhXrlq+2t3MD9eFmHmeFxXrrLr1n99kH+x26h2uYb4cb2D8wO9+uciJ
0+TTQUSfoXP/mSAYh3EkgpiFNKAJRYGKmQ5QIkOaIkMojX7++rVmlx1U2VMM8CVY238KYfSbnbsE
eGW39eV1cbOPrQaNFkylRpggxHEcUJ2aANrANFAmARpGiAShMTT3Ue3jwuQEl8KEjeHabdxFYxca
VpLGLE0DJghAkwwHiiP4ZGKTKkqppOYboHUJd9Epzk61loFPOXT3F5EzgfhTeAjeJniCxVNAmkhE
DDUqCNOEgUlVFCicJEEUxTRUmkTCkDGkfdKTZZXdWNdZXOyvW7cX4WBPV4BcLRYnAixytRwIAMr4
tahHgacoDrHWYSAhXEHFKQo0T3gQhyqMTEy1MeEY8JbkOOB2rQMUI07YECi8svlySRs/+GznVZ13
bZ8kyoRJFAcCxSSgsYqDiFARGJOEoSGEh+w+23eJdVHgLNcnKDiknFN13WtoCFBNIw3BGsVhQHkY
BSElPDAkDmWouRb0Pn3db+H9Yher5VSeYLWaZ05jJ6Z9YT9k+e24ZzKpIkE0uCIGPRrBAyVjFaRM
ShHpWKQC32/glvBDZm53eC1EV16EIAt0B/3wJUUyY6Bmd63kn1GBJoQAPKMSKVMRByZR4H+GQ+Bw
KQLCFQul1hHHCcDbbStn2Qv3dIeXguZkPuQFX1rUlLE7NTV522SbeufsqifuCfjbGdQkJkWRDGSs
QT8hIUEEugkSlYZxygzYQQGA9ocIFy+KeQV14CI9KGR7YbJqXq7HVdTZ1kUwvrm7oytjhgk+kTFj
WAxk/Pvzq7Jczcsv/hlx5ocHFJITp2UqGKaG8YCKMA0oS9JAG5QEKVYRxTFOuOA/QsgjhPGdx+We
eIygEfEoHYjnIiRa7WxdltDTneHGhth5OGcm1CEJQm7AhZDhAbh1EigmSRyFmsrGhR4Qrkt5HHlv
Sx89ZWPo4X3eNLWQua1dv7Vu8DvkN0bEhDm7YJEaqWMcMC5dJ6Ah+zKeBiYCP4w5VjyNO94/Sq6L
Zk4lP0EzpzkbZLhyY9f5yvmJbNTYvAMeHkJCDEGVWiMZ0EhA2tDSgCp5LNzPSqD8PqjK10DYvBjX
YbvWh5uPwGVk3sC9mwjW7bh9UB9XdMLRxNk+4pB3I9CdJrGBKhFKAJyyIIIkEAvBGDe4o8CW3sU9
lHvQWIZHoGWLgVduN9bm15Pt7bq+tttieyc64JywCSZAov0AcCWOQ4QiFfAElEyJgGynMAu4jiPC
OSbpV+IwBKbQzbrRdH+Msv1qUF42EC9PEXb3DzYNVGFHVJEvBk51pDtxKK1C0OZCnO4DFZLYhLIm
G0VppKLIoCAWBLweCQqlHYqTZFBYQSkJhMSpFt5UxScY3gbKaNmMy3S33hOHE3UqDm+6pq44L22d
LbI6AxHQPky0JCADSEAUtCAMEihWGPIpVtA9k4QGmEKvl4ZJbGj81ZTzzQY8IBnfeFjtySj0iMkU
G+aBbLcoykm9z9mh+79jDYEKQp3h4M1VEIkSzSOYDTiMChQmhEAJYwIUYmZSESKQ/GHP7RC/x1yd
HV4fNx8TRg6E+bLJJ8ezRffzihv3e8xOoYgYmIsoFsRcKVfqIdvSFJyPpaFSJDI6fLjUn1C/J5aG
2/rSiOxUGo2zgfvNs/zjbtNNJxi8kDUWgXfXulPEElc8tMbQikqdwODGIWOnihvKI6aQ+pYwigac
uqK0a14f6nwEv8CHnJ3t6vKQqbESbsLUOhEYwRiHYbikBIbeMDYhJEGDmI4Ej9OoX+XuaPRZCzLG
Wh5YX9viZpGtgmy7xsday+mEuV+1AhDomYg7NglUGEKnwGHiURy8QMCYy1ORhihO+0BOKQ4AjaQS
rckBUP70aTYvDlCgBW4MFxOWIBGlgeDEteQsDKIYmQBjw0gUslglqg+jS6cHIFuIUwA2s0t70juF
7wwUfMwmqC357SfnRwoZrMEewsQI0jGH8g8DVoCIUiHh0hjzTX60Z3J/AwWLPfBLNqK9pRsKl432
wvdpkxOO3iRwUz9wqFUcQeAyjSI3s0ZQ/lUYhBFOqEhEwuOHsy8QPh6sj8N9uz+f316c4OiLMD/V
f47IYmnb7i8HsfPqdnMXEpTyQ/MS0wRpo2ggIw35KIEojpiExpVAVoXRkiqpR5uXIdUupJx0j4KO
X2LcDI6webf+XKwXRzh84tJ7KhLIFzD3s9hNiVw7bXIWGO3UG0FjyugolC61PgxMxmDwQ2g0tzKX
Jsuv7dG+WE+4q65QS2IJ43WkYFChgCwIQ5hb0iiJE4RNnDRnEg93ob/c04W224vWsicgBiKMGJdQ
MuhO2xvOgxBCNunGNdMSNKoiEqQKQ9pjMJyoCIPXckEwxUQKqR7qTbt0+7goPcXFGDrETZHvnIdM
wmPDzPHE/ed0G1MBUMC8SrqiEeogpNAwG5pQjISB5Ez7uWdArYdE5qdNci4tHVTmy2vQ+PoDJGMG
kymdCHji8NHFQRwTBckvEImBeCYp9BZJggOho9T9fC1i4TcloD2be4pyu9iDr8YMrEh+MPCLYm2z
Klx9sMDyzksFadJQmsLkmcTgl0iAmxoUQksEuRy0K6MojVlEvpKG8tyubAVCfLUF/GRzIDC+bRxo
X1DFRgRVeVMmOjcvq6xeltXxeFgy58tOVqJDjThEo5ASBkNDKWSpCCqnodA6GRaFmD/ky33KfWwj
rSo048MTnKaZfx+m3fEKTWg7XrkPrr6nPOUmFoGgri03WkLigE5VxinWUQz9BubfPFi8Dx+YKt6H
fRmWI3Gg0dGRzNv0clfUx0zXDBFIqoiZWAUihPkBxiCYXaH8BwiCEEVhBDPGIBT7ZHoIFvPlKYL9
JURj4Q2k6d3N5ujFWrYDtBJJAkU+gHjUEHuJm/jdWSsmUZpCNpB00Jv1KfVB5HQMhBqkA5d1X2/q
4qb4n/Zuu9Ojh5pwGJ+SQMKUBrk/gQk5RjygCscxExRSn/7WZqTL4/6upLurL81ypIJZapuTne6x
22GQc3KQxiF5c80TSQEjhwlMykOX/1mg3NlEksbShDTGRsc/fNi/Q3PfEdxh3euLtRyTdTk8g2uO
Ad2/DmsGES5BTAW9QywQCbhm7gwL3CiUGqYqSBI4IQarr83CD5wttmt9qHykv7HqOH+8gQpwcHIm
mkFJiBBylwhgWqLu9DMKQs0hl1GTsoRBSZT4QYTNyezz19/QKh6Z9yGrU09akKUaOeHs/OLjTEy0
0zLhuh1fIoW4iNwxA8dQJxGigQYngpxMkElhlKIy+uqpw9c63/6erhiL/QV4XwzGhpNr55AW6kdb
7N37sjnvj1EaQbKEoumSXsqcDOAyPMJxGiNqTPLwOcLz1185qu1s6KFn2WIEfWYPB7WVvSk/2WWx
OmZp1nRxnCQphdkasxgqn6AwZSOYsqGL46EhqdIsGa18Q3p9MPnpIcCC77vjvke8tIsie/4aqjGi
TZpkUjeZEkeSS/BqmN8S6OREGOiIykAzGckIR1AJ5Ve9YU/8flf4X96upDuS20jf+Ut0AQf7csQq
91gat0xL45tfrVKN2GSbxfao9esnAllLIhNVrDfm08VNM1NAABmI+L5YwMMLjfCKu47w3M3UefW8
QC1mmIqo2R5LjQHcGUjigsHXVwxOosPjKOCschHVGyexjnlJWnjUyLmgHX1d0HNovk5zH07mgnMQ
dgDvWqrieYjEUgTvnCviPBw9C44ZKLEMWfpJZL4ZrRVE044gZhpAHZDFxzHGwUQOrwH6gfoazMiD
uQVqFME92iSBMoJ3MYUXbQHjgE2+HeF8vApxPjYYZ73S87jPej2k8nE3//X9bn9iQUqLSjdKcWD7
gEiaSje8tsTLYolVDnQUWC6N+Q/CyCP5mnWtu+sy+oicgEie9KOqhqFJMQ2Gi0qPvA6MmS0MNFmX
CLbaKv5GKPRmenqceizvxizmp29jLe84k3p4T+jKCHbP1D2npi4i+iQ9WLRiMYYC4NNLDIjakIEH
8sgFvc16vGE77loxRU/2xSle9vzpMxjMl3+c60A0r7ZO5Fi0I0U5APbWZ6Ba1BGwdGA4FLiUmC5E
SiYDTsRZdsRZTFHP99i8+/r8ZfXLsZRkFJUV9JDkGX5AOluy0EisZbYSTIcD3i9UALgBJNcBzxWO
3nJGr0zbxP+nr7VLXNLOEpfyqN2fF5/u+XGvOcLWWGJCtkSsCeihecDSgQi0lotss1KFTSzfaIzJ
3Ko39ylc+9cF6MfTajOFayk7rzgjTljQTy+BF0mKQclImbM5hiTfCa61EkyE7+nGcnUiVAOx3W9W
u6fda7ODgoNps1GTFFEBiixorgE3wKqCNFFkHa6R5WbMiVBzDLNxlE8cCcZr9kcagIGPzbrAKfhu
t38FEWXNIsA/aKBZ4j4ZEwg4ZjhZXAniuQO+lagX3FvGWXy/TFYry+VAzfmdZvmOdRTKISNrvsnu
aXsKt0pjMNxa9coDueQ6ES1TBUxAVDTS7+iDl8GUItO1z3IethVK8o5QensUatJE+42irEYIKxo2
0oHDMEQzj3tuEgGm4olWKUYbRSqOd0VqB23l2cyp3Ga9ZUd5vvMfffzzLJolORc2A54A2gqe2iVK
MAAANEN6Grk1nIk/Kpo1krBZ2kbP1X/L1larwaA8L/9ndY56aouHMSmVFOBOwkrImHwCIMeoIhLg
vC9Z28hNa87Go4yn33I9Z55bvnWTKNoJBDFq+b0e8CQtNJqc4CPDcQXQwAGoR5ZI5gVAUADMEK8G
0DrIZWtsZzsMmKiVaOLTp6gTrBtBuAdwm1StmcBaSg7O1BdPCrchAr8RWpmrcemOKLbDcLfVsQ9b
831V1lNSjlcIooCPRziFAAbhy9iANaceaTkgkRidNtm1X6YZpZ1/ve3Mv952goiTiAqYCIukyiLM
SEmZJDxwPY6Jh6LgDICFyD4mywHzWSvfJ2LTebFZj1t39tOtV5P1/Nfm1X9Boq0rxNM1n5e0AweU
C1FCIlhyGE6H9fAQvInwqZORt+CPw+D9BRweToTu6OOCsQ6p/Wm33jwjMsW9B1BUk1DMey6B1pIY
qt/UgDw0mGrGpJNKci3d276ojnwZk9bHjdTb9RxPwy+Xk61+2KywXvy/X+D/4vU4csiianYMkbNi
wX06RpTzloggClBx+J8EPoYbqYWx/KYsRjPRpQqD8TuT5XSM1HbDJstJu/2v/mW5e305BJv4vRkK
wdBCRIApRXpCC9beSjgRDoubnVbMyKILl+Xqh5iM3l/E5KV2FRveW4WcpN5Wz0/b3c+HTtKjcbGU
VweLKuUyOHxMuhkbgOZkQGGWukAU51bqEMB586tmdz7BRE4zldNhhcFE5T9uXjD7gVDTPy0ev+53
+3HQ28UsrcmRJAH6I6hVCAM40UDLGNBKbthNqtOZpr/1nRfv2hWwzrIW0zPxQwKncmQ/vHq5rASz
lAAFRjzDJPEsG1IsT5klIJaZvXvI+4fUf+WH1K5psZqvSUg9+VQAvr/Um8a+GWq+lBHCoBfHgxFS
yt4BUI4Zy/xV4MQLg9ENbjR4D/AW4o0KomH0i8e6Pr1rRXQduTWdHIXF/vHk5/mpPlKCVcqMFcIC
1nYUQBzBw3H2nikDeMRZ767p/2nUViTXUQ+9URP1uBDLHlJ1hsdCMyVZA5nHtA4wesBmVrrCOAVc
nPnVnbwex47/0Y1hO2pURwuMmdZS/3nzsty8PO9Rv4+nlIFRlBJQSlYoMvhU2EalAcLxJLihhefr
5WPHQfsf//i0FXceJ4ZfrvkcB5SHIwqQFQVYCVAX1JtwGQXSeCDQOaLwsM+MZs/K9Q2uY150/uWh
lXMtenKKI/77tHldPNabUfavi3MWUlN6D+RsKAtNGYRiAIyNVwnRF+yvxBOWQW1igF+Gm7K33378
MR7CPiPxLwnRLMOqzXwZi5linxuAvzFoGeA/MAcLobJVTMIxowIruovBCLe0gGwpLM8bpukblfbH
sS9gmOPjRu4l66jJar04RrrDd/5hxviCjJxZronKQWBnCNgGAzsfPeBcnXnQXv9BjO8sX7Os1RwF
OLpmfNIDU2vLfop/SlgTYAerbUGzBrWS3pfAIphrQwGX0QK0PwLdcVRpKcAOURlvLm/DWa4UuOHj
8QrYejuDxI5t+ClZ+Z8f87eT8BcrDMAAt8QAVSSCRQqiskioyxjnBK74RpXq7eGv8+yN0Bu36Ai9
cJPE93eLp5/HaGbwl+zQSsBs4nCaBThIAAACTgVxBiGlzSoBmqfSvH+p+1ikC/H10Rvtohe9RS/5
8QgdHOL6ab9fn2PTCpGBrJktZp3DMj4sixFMRxJUVMDBLNaBAY4TV4NLo3FbsZaiJ5Y9KhDezXAK
dlmjqtcXeKwl6LiyhWEsB+wPB1DJCt58CdAF7H9XmNFoEynmGIRtmZlypDpQHGPmWkc+VC0zWdut
fE4ecGHxvgISTGAZTVKWDhwWeFL7BoKaz3EBTM1fvGvFt701nXb2y9MpkMNdrVIDUu2kIdEYwLYi
WJBcM6JFBgOqARVe2NTTQJPpe1tqehngjy+b9W41rZSxHMgnshqtKJhvbjx2znECRLnAD0onbm61
a+cZLhu38zvtOozurGPmMh82i5fVL7ULFRjzwVIMSKUwZMxYkY91iUKDyvpoM8mBBWGjSyWIdwxB
HwW5BMEPj8eL5NzNTyH8cjXB4O3NBd8wYTGdLGvLd4lcBEcYoBw4kcyCXaQY7bU5OuUpuKGr9XPj
kVvRFh3RhDvZrd8+PfJRhsfdM1Vjb8VloUBlqMSeOVBmG7QgSgEjNhwQrolt7G08zl07V1eA1bHe
+Nhp9fy62349bQ3G5A9V0NKGlIUktJg86ICnBSiWMjYLMKkmxqstXKOBW8HmqS/85akkLn77d7wU
+hwwdqY2hDqBpcueBA64TbhciPWYI2UsWctCFoa/qY7fviw+/7Jb7W9wwhMxmiVIPT9cXG7Fej0v
HEBn3nS7wHamkAJBq4pV8obAPkuSfZKwRJqMdzeXClSkcLlWAB+3gm/lXHCleknq08n9y8M5Jgv4
Z2g/Gn5AGAd21qqiMaAAWC6Czwg+eGJ0ZkmBvgpV3s9KnGW50Mv40Anb4go7Z8Gw1cSozxAa0swD
0ZQ14Z0VN4l7rMvGQIpQmfiQwYML7oJmPGnl/v8g8PCwEd3Mkxv4y2kE/cNfHr68bPGecExvgEGo
vn34qd6D4LWIYNh4wfb4EDXWIwEbMhn7XBgcIvpGeddh/EvFXYfHjexOzaNwfGl6dad16bUrcXBC
QmvkCXjwjeEMWKYiSI8xRaOIBUMKhiiZqJAy+7fL6+r4l51ofXzXitnZ96U9FfOvxh0SBm23U9J6
nx3hPgCyVliahIFNz8FoS22tlP38zarb54CzsZ4IpxqBGjf/Pj7usONt0quhNBgS4CXEUKzMoALY
io6OFC5dicEkr9P79Wq0UkwWoeaL2BxaiVsdSENXJ68pEznkHjx3XkkHcI5pB9aSB4TMYPoBLtOI
xfxRvvnx08UmzePTRuSNmJUYVN8z4VmN4RoKYofrKRgTulaHDT/U7o7gS3S1lQsb3DDcx4qsNz4w
D59CS/p+RvIsy7Xi3dPNFucVztVNcCaOYGq3en761xmyyJq7p4CRPOAVIAnwebQGvFI4BTUzMSTP
dZjmCptRmvnBq87nB67dKaL4sqsleAc7UasuKZWFaoU7jDcpKHRIQGKiDgI4bbJe0VtR948fLivL
jx8amcWys2diedqzf35ZvCyeXndPm3MWBE9nAB0IORLYJuzaFWDSeAFODiuI4ELBxvWzztPxJsLI
jjDbU2vXt9/9OCmZiwA2lGMaLzuKGNrDKhNgUYGD6WE6OBfDe5XM/diTeNv55LVhahLXw3nS7mWz
en1++Vo7v2vxKnM1MsOKUxoplsrIXV0ijhlGVLZRaZ+BHdo3V3Ea/e3jVW54f/JSs2rZiR3gdf1H
ajC64f98IQsQ8OiBixNFATsKWauvQMFRu4EwWFZKP5BxHq0RQtGOsig6Dbjj3xd52g8FbE1qLPAC
XCWQDIIBBheFBOMsSTxobQKYuduCwnX8N7d8LMWFYOXojXad23noGA7oFPrVmshRj/28MlMLn0QB
zx48divA9gH/cA48EXhXAX41luth2fEUl64MOL9x18q77izCnWIif/tQyiRcaUOQnOZAZCj4gZzE
e5oMoWBgIs0p2ncLV55nb4V2riP0cso18M6Tfb1Gq7YiYpyyHm3tquv0VHFnuCZFKiyIhR133noi
lc9BBuuCl+9xRQ4e14ejGJcvSjm90i61d6KXq1Na/PdziQ32Sh/uSBEZv1EhEvg0Edwa4greokZt
Bo8lqfETrv97p8YG51Gdydd6EgR5xb8idK6HZBgCqdUdQRhJrQZqgHWlGn4KLBa80ItloG9WhqsR
0tG4jVgr1XGNtd6hSRL8AB7t9fcDcBqsukTzjjosabIiSwCxJTLMhIB7wmqxIpJyVjBb5PUjdx78
Qir69HwsupR0/jnhl3JSz7jEO7T3pw9byza5lMklRYr2eA1ZCCQIaojVVrHIQV/z1XKy8ZCtSPPe
Dvzl+lQN/2FmAKIIwDswq8KwnCwD5XPKEl2cNxrTzFq8kwE4Td6KLGVHZKmOIj8unn7erUdNHrXi
IgKMS+C7gdkdLjqKAPdzFl6xkqht6kImozTTKzcnn4qt6Ly5Y7iDb0iEw1e+l6be4iEBV+hMUsJq
Z5nA3EeAt1GD6+NUZcne7BK8EM2Mh2d3rWSsI+5azyvl4vPT6wIQYK/YqYBoeOchYZECFAoJr4yS
gkSTjQKFkJLZG4NLp2kuxpdOb7QLWff2fUu3m3Mvwctmvx9VBnFbr7sQRXJQVcYwzSyVId7BIQKc
HBQ11As66XidjdTIIZfzJCX8cn00i7/+NkJZXNp7w2qoRMToTKKgfQy8pxBcYP+WJcXxqDwqqOiH
hM8DtnKsO3IovAmvsYPrzf7X1+fP+1HPKhroIUMzWGrhtaM6AanBuLDAYxKUdYRKrTMoJECvmyKH
aZjqyCfxhQuVYPMXx0vTtBPj1nR5qi54+Lx42W+6SW5dgHd4CkSeYgGMlYlYwFQkUKGizImF8Ec1
6U+lbJbIzDwWoIEoT47l7unX5kogWq0JZ0Pi2OhYhMaqA+TImKCKgMSiktSDmQlCvM9Nhk8XahPg
wV0r/qq3pmm5ftOtcGpPH2oqgyjKl0hKiVgSEgOxwXkgYMICIy+B03S9fG86dCvgcp7z1VrYyZGp
NaPXMXs0EawjXtynFRG+MPzjl4Yw7aPH9uJcroPH8RT9zR2/0SzCdkID+MsrofZefD0DYNem1rLh
JU0+glnUOWH/kmGgP2CW/t0s3PiNdgmruenSbnYFxHCh72+veGsNH0qdnBzyWVmzaBQ4UE8ZWFSL
19gKimWrMhUXE+Pm7WZYHPuy5Pj0rhWws/ELamc1qi+b18eTZtt6HRXKHB1NPoPFB1TM8YIDvILZ
KsK99jbAt9DcvqXcp4EbyRZadiTTbnbDHdBAtG/g2pa7x1r0OGi3wYR3VLCrQSrCnMbOZ4r1WNi0
zTITPDhnA3+biDbjX6GjzXuT1XRO6VKtzjU0fNpBlpkT2MaCFgLQiQJImsCL0eB9yVnqqN6vhKYT
YtTL1XYu8opOb6z76+bT8+vmp93mf88nc1BsRitz43g7JEBrG0vGctpIAhYgMqXgCwvHlRC3OOL5
PJdWNn3vrl2A7a1qGmL/ZfP4GRVJVFQh8YYfoZIHpmnhC0S8XsozYpOJoPkOzE4qsuh3Idd/gqkv
3HsBT9rFzG+BdGZjNx2bc0zm4qJqxSJeBXmo97M8GfzLsJhDx2uqI1b9M0mszVEZMP46pn8zWzx+
Y7wES/k85GS5cEf/Wp73j/9Yf31afNqde5L0PccjoopLAYQnmNogwilOrBKMxEw5LU7kJCcB9flo
d+28i54w8/389On56ePiafM43JdS74dwuhbqZVNLa5XCekSDNXohZQwnMWl88vyNqyFuVJKxCJd2
/PzGZJHbziL11Nd+WI37i7StgSb8p4bCc04BSHJRAjY+4FHggLW5CHgpTLJO3gSux3NcgGOrbnOR
A/zb0RvBzh3v5e9DE+Ykis95MRabxBOAGzSrhQRvwbYy64Xk1pX4Trm+iQSt9B26b8Vq1cM7Xz8t
n49FhLVVYSgNlYdPwTzzNgGm9BgE8Bw+hcaremIGfutp1sbfmstpproCf8avNctynWQg6IKc5S9R
NYemrwMrH25uDmAPALpiPQS46IBOI3BJgMkF9Nr4JxNuW8tx/GtHY9L6hYKqjvTWzKLfr4tHvB2i
nnr8B50DVcwahi4BYwlGOWxPAPkpTQL/lrx24g2cAaNevhz3sZF0w+ZcEn95RBOPiy9P52Zdo9W9
GcKoTids3cbrGTNYeudBbwwQyyCY8VTQbHWfi4xHbEWR8wIlu1WnWNv+n4CFNuIUvQDbXa8PjRiW
BHYBxBbtpASXA66GaO2c4Q5bFadXdo0HakTYms5u1G4x80bf5L3/2wMcKYPF78L9X3HX1tw2jqzf
/Sv0slUztYcp3C+pmgcAJDPexEkqdmZ298UlS5SjGltKSXJ2Mr9+u0GJIniRtTuuPXqwJV6AbgJs
dDe6v66TySP4cQ4qLAjvsC8lUiiX6SLAWHqnibcvHvMLdIx4jm6SHAWLxWK6vFqCCUB8v1yudp+q
++V2t2nFqcl6d0CTHFZEDLcoEUIqd5i+a7NSeItFfgqr6P+Os0QD7ZOdci30ANe2i67/dbNswxm/
+oi/D2EGMchA6NqjAis0wud6VBUsDLLOM09yDN+zIfiSllq/PKxZQ85IPtvhdMq6FQOsL7pZbEem
sYVfl+WyhVpOaB0cZGSgucpJphms3Ryjshx6WKzNnTOFllKevVZgF+NLBJ5N2Vj03SiWLho7EyfA
R3QtbY6z1rwyde0PKgkvs8AxDlwTsDB9DkaEpZIFoD849/84a9tEJxwz2dfNrTJdH/W3ZXTJltNZ
Vc9UDKKLwRr4v64MQZgpXCYYhVeXaJM55kHJlayAQwLF6DmDduhhhPf92YSFGDDfZWGGWzt8KNtw
kaTKxQwWSRmujtqSoHLUhRUmRSsOw2eIz6RTRCuuXMH8WSmHzwG/9a9LGKoG4tVtxZoM/9nj12bV
RLoRUqNkQWW6FEUdLg82OCJd2GALbxDQp+Nmb1podzxVAylwU3Wc/tvpao5esyPiN5hm+6wMKn2u
Chh7KjGYAXfIYu5PwMxHLwn1tlNfo9NaQoke2HGY9tFuT8aQcOpAq8xlJkO0hNFHBYoFKBUUzGAf
BLXqz8aQjEaETM2ABT9F6MRDmh5o4NsG6TYGdApLrSccdH6fo2cTsx6wDJOgMlhT8JJ00IDabSSd
WzHQudVdr9Sb6+tUtWXcSRcKnikTg4c4y6yzPiOyDJYLV7ry9BsALQ4/KDjRpvBOzPoU3smqGyb0
Lip0p5ypsiwpC9RnjIIODqYVzDtpc8ynL4WzGswo83JxeCk9Y3lP7WvaXM8U75uDM3XXBRX6uYbC
T8dGI550SYoM/ufIaIFKcZEVyviSk5Lm+qxSHvvGx3w38WRCtNUDRNt5V61xBeIm4uuno0cNY9+Z
FojJjdLUgBrjwHTJSheYAWlQlk683MC4YkQzLVJe5mKIF9lZKwZVtChf6s3ZaEthjDyu8/DcMWar
oLBaGBB4tERFwIJ14F7Ch/IxpaWni3X460ffzaaCjtaPiWrQO/d+QA+zMi9L7WKNPZRHtX9IZiJo
QZkuKFfq2QHEtk8oYHA2oX/aB7fBg91SQLGA7KcKI8OqzXUTyrYX/5qiRia4Y0qCBil0DNAt0bfL
MD9S56BO28IWZ2GzDPU1wtHAlQl3d33UlnjwsCYk0Uifd8uHoytxHzmlYI0NmLHDacxV4JnhzGdY
41KWQhoTOvboSJMdsgZe8IhnvehXsInJt/gNpdMeJRX/4wLm4E0oOSwXCmjiwWBCtglZAGNViRzs
0jNEcV3+YTzvF0+3qZ+Tfk0zOCi6CZPhy9PqN3gG+27xmeoYk6ajrNIlA7sjI0QWuJ/rM2vA4peY
3EnhMXN/lvba6WSEjfSilJk+QiYc7NXYO76/lx9iqAssEfvwdG0RkCJOFklszl0ByiBmV1EPqo8N
GmthOe2wOsszm0qx7bHkkE6wCxDZN53m9FiEAksG9T09ovSYqFJmgoCuwUupMl+Cyg1zXMhcm9KT
4aJiTXMJEXQgMGPOKnMIVPmWX3/s4qZSTbwpcT+TeqzalzuwXHKTSZjKkmOxyWfk+AvipjbkXaQM
TAe4WpzM8Cqvi2/VareNUVg8Qu1GUJD9d9QnSulhGiB6OAaTlViewoLpkCOWFS0oqIvu5dbnAz0j
F+7PJmzzgYw8ONj1Pv/9Y9hT0ezoRXAI0AcZCH5QM1D5l1hrkqrMljkv4QUXJPfnvNHH1ocpP55P
addDtBvaD/26rq2ggcAvybTCuJTMK4xawtJ7zoOiK1hBnHU5K4pzA7/2nYyGfe3PJyzc9avy2flM
mJ6Gvrp/mt5XV+t59bAP920GwQRqIqhojsAEwYPKiiAL2mrCbA5vnqPncNDtYxxvoH1Vws1A0QY7
X6juhur0W9s9cNggFuqVrVEkBfV5jm4eKbHEJ2ixmUFTW1OihJHeFcb/yXpI7SsuUmoHJOxCNxiv
4ctyVW2rm/Vv1Wr5R8tFVfs2vAkK4SaJwrhbbTLLQp4JJYmmFoyIiPTaroAx2FxKkTYDFE0byI3f
tw+7o7OAirgH4fKciYBwed5iPrQosAQNWOkgj0jhFLOWdvKhW820+6+G3MzVoag0hu9V3x/vN0lI
ouGahkIK6C4iMmIRDp6XWQGKilbUq7IYCQVstdUhgg0R0c2I3Fev3FSz9f1qmQ4/gqnUVWTj/wim
JkF1Ig5D5GGesVxm3mM6u88VoSYEIYuXMC7qWpSfhojql6xsXZY+Ad6fBpVYqMUs9SHuE0Jr2BhT
QyfJ0oMxgQgEnCD8HceKFhhhDSKiDIZLQ15s8T2RMPqtly1aSdNfdfFgV4QfCahX97j5ifftf+Kv
CBJlKJM5hrtjio9kCsx3kCEYbudhBoVc/08ggOpzKacDzns4OAbX9mV5KOssJSExnMAIAisTrK4a
dH4ucLYW8NMTWLUYzUGTe5nZuqfg58vTftWfL1P+pmSAv6lp/Knrr9/bxShoxEx1wiiOuNwlR2xe
AX+8VwbMXwWyg1AGltcIEHq7uYQSNRBGUineZCCHX66uPz483S9XB0OzExZAvNPMgf2ng0Sthmam
lDYrqCtyWQZlS/JCKcDDlKTccDrETTen4uDn7fuMLZggXiJwWolhb8STzHqJ7sYiSExrLvxJyMik
5ZS0AVCEStNuPbnfqs2qehgKGTc5tcJqWNlBPqE7m4HqWBZgIDLQyzyVLpxEEWm3nFBmBxQRPDgq
VuqwcbihdYjWMkUaTrWm6HNC4DmF6eklZquH4JVnhS6ew4B8RqYcz6c8zAZeKIsYaPX27sMfj9NX
8ojNjAEggXBpQXstnURV0ElEnqEZAbFHOIenGYpOFkirkaT3KR1YcKeCDKSfH8yTy9UOxgM9qjjE
scoH/sdw4oKC+QkLba7jvh03mUNlNZTWwGIrimD82YEpnd6eD809XJnypwZmyNTcHZ7uptquH76B
Rtog+0XPkCReBpNRKwnWnkeQxxiHyUDF49T4srN5kDaTUHA3YL3AwV5QKyjcm/W3qq3yg+WsPHeI
/I5T0nsB9qVSGQ0gM4MlhRFned0ObY/EmuzPJlTPZ33vWjWfNzVOf59ujsroHkSVM6JLII9hZVie
YymGHGYl6B4iGGkJDx2tuNVI0vlCDehAC91k7N39gXVlSNO9qfcbvQiOZ9ahjLEIwBhw8ywvrebK
gj7c2bdLWkn71/0NswVZdLGhPl+2kULrYRN8n2/vQBgzEMSFRrCLHJPGCawwhVLS587kg5H1/aFr
9zE8fO0r2lwsaL9KJB7shhHchNCec6UsYKEA1cpK3Hu2QLjVYGsyFjxCsnrjzordhWaH6YUTHTJn
Q2Q2ftx8Ob1frbe75eyq2m5Bsdx2ED0IiWUABAcxLTJGQWbDYu4zGxB3QTpGFeNoH6XDf7rdDonV
EIlNQki1qjb335MEUtrgRBEnLA1YsUZgtF4J+py1mAtiHO5IMtULe+o1lxDDBwBDFgcYiDrr63G9
CknxXpgI+li+19DcSVNmjqAJC1YBfLMBtEwGNkJpg8vHdLFuyylhA+i6C96LyeoEN9KIxIPBjTEC
XhNfaiWxZq5FmD2wZ2VwoCyy0hSSFyacB0b+fFjjaEjjQrCBJywUP+JE1MZPqk56T0vqLM8kxeQ4
SxR6mDTKQF4GtErKFyuv1Oo/pXwggWIhdKNE3m0fW2ITH7gusA6RCJkziP8otag9ZBI0YOeDZpZ1
3ptWG0nfkvQDLRaSNT7r6vddtWpnNeqY1ZhbyXKn0CIP6NVSWMqJZ4i6TWmQQYqOKtNpJ6FBD4AS
LQztO3cf1pvr76sZOgrtftvF1jZ0GbgusLa6xGQ0GDf0+GOWLYYFcpOXRr946FFDz5iSsz99kbLF
h3i96xgMqxp2t/f0QYyghOJocipFrMyDBqa5xSwkYBqWgUwgDqcsFRho4iSU3WAfKbUDkLh4cHBb
7Gm13G1fxd2pz6saepHuMz1jnqc2sLZalpUMoVmYw3oLDLGKQffVLNdEnt6LaVoeUdQPpzscDMwt
S7tOz7zGmoQek/KqqCXLfZoqWD1ECpYFjznwNlCMiAUZJxFAuqBa2hfcy+/TM1bVoHtdwr2tBmYb
2Ck9mLXGyllvEEZB1jD79ZdYKwOLNMgiUy7HKl0a3ndpTMZIUFJRXYrzVNqko7FttdYlKTOLAf1u
KprQrNnT120LyInXsbSWSiOcIBlG4MG6WcC6qSjPQsEYM6De6mA6kWGtdi7SvgZk5VSLg1WCWJ5L
0NcbGjhHVAwebT8FBh9QAUs66BRICq6YmQH9TGswYbnsaNmdxlJCBkIcFneiq+mCdjmdV7sYmbWd
xZjFGjVZqDrSiTtT+jLzDOvPgBmdOY5I0AYemQEJn5+ZeA3d5IduxgMXe5ddpNQPsWS6Fm1e3T3d
1zoAvqGxIDeNEP8s1vGRPPMWLQmj4f0sCpaBEaMdNi7Pg+5p9zCWP368IuVhANlugeDJfWiY+4da
A6kV+Pgl4mwUPscQdgYvFGIC2sxwrrGWDlcGlazc/NfKSH0uIXg2sL24mOmueO+5vuv4VwRorau4
1HVclHdEMUuyXGCmgKQhM7qERVjRolS0LIk8awQGuzvTKd+bV7P5gPyf9Yohv0HtPS7/04drmKDR
S1/vfTFuo6ZoggERIkwGw4Lw7hxkYCjKTCgdLCxuMvizXpeBrkbiBfsXJqxVfRzKKSHV/FgFYTYF
Ihprwqq42Q9jEYjPcfunQBTkEjOS8jJT1kkeimC16+TiJQ1dpL1VfRKoaHafZn/9a2vza48QhMpa
Tjmm3ODGjrAGrP8gM4VP0sNaktOOLGw1c3FR/L53ZF2t58vFwSK5fnp8hOf9GsgL0wcQDo8g+iZ3
3yfr3ZdqM/m6WWPCLyzru+nmvoqgTLsvy+3hxOvI1m66/e12sd7cfl3OX09ofSxCId/O4O+uej0h
7YPbane73TXH046fa578uebhR4sreAKxP4RUX66qQXZg1fnPurz45WqCuR7tx/sJrvqwevg+QYc4
nlkvJo2Z83pys95NH36SMNXM1WRTbZdzsM1/Im9/IH/5cbL9FxaQmt+un3a3QNUTDOLDGsavmu/v
QK/AX368+HWz3E3vHipoADtvmlWwor+Z/AvOgsZ6aPREJ4dD7Y5iG/t+JpHz059fLj/dfHbv4Nun
4s3lh/eTi/3/m398LMZvu778ZzwbPnx+fzP5YbVeZbP19KHazqr5j5OLn46fkQaas4cvFw40vW+Y
NX+zmc5w/g58GBHmbfNjchHeTLYxs3GyRNtzO9gVCLXmHgn3RDzI+oYJbuIM3sOSfvJ9gUiQqAjj
+BTfyU5vwrwiV617/nY9+dvlzeS+lnJA4mw9H+jr2A8fu+eHGnYDn2yk7RV5c+zn8DlcM4FJPZ3P
EWFnAkRjyExrfvx48TbuWkwcHpl8WM2q4fFJyLpy7959CCfnEYIW86vmiTf33D9NN/PJV3zWQx/O
mn705OJj/b5PYIi+bqvJ5WqxfnYKXN+48Hby5rP7lI8SJ1VraCzcs5vOfnvmxaBg1rXv+eXqNnLk
bk68FhNBGtrU5OLX6g5D967i4x+5g4Ny9Kb1DNJ7OkN/aJq/sm+O4/OfToHb29zduNPsM9oMJ6Pw
1tzeXl65N8Xpm2T61tzevrt8/7bIYUZPRrkHe7+ZNhTvuSn+fnOaNNy/S2n7/P4yfMhPUicla9P2
GKXo6PtfP2b5yjZTwEwu9qLmsXrEVJQxjlpT2v53kvDmw02UyKc+VjdTQFK1v+f/Jo8gnLbJRKgn
wJ60RnLEey7+DVBLAwQUAAIACABYPoNLxcjnX9EAAAA9AQAANgAcAGFjY2Vzc2liaWxpdHkvbWFj
L3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTItc3RkZXJyLnR4dFVUCQADVx0kWlcdJFp1eAsAAQT1
AQAABBQAAABdzcFrwjAUx/F7/oq3y7A7LEmrLRE8iFaQjW3YsB7l1bxiwTQlTWX77zenh9nr7/N9
vGVR5Du9fX+DzXL7mq/n0Hk6N27o4WEBj4fBe2oD45/uNFjq+RoD8rwseEnVSxO4du70uw6221Fr
yGtPxC0eRtOztRMpsiSCOZxdY8APrT56QjOJmAQA8SWFQpFgLKDUm5XH/sjiG2RGYC3Su6Pkn1El
L/YRrnh58BSx6V+R1XWt4lilShnYd9dkXznzzWajQOIoSO+CaTKTcOM+oA/sB1BLAwQUAAIACACG
PoNL3jJLzTk4AAAmvAAAOQAcAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10
ZXh0LTMtY3Jhc2gtbG9nLnR4dFVUCQADrB0kWoEdJFp1eAsAAQT1AQAABBQAAADkW21v20iS/nz8
Ffy0sOOh3O/dFHIDkE1y1jt5MSInM4fFQKCols2LLGooyonv1181KckkRTt2Jns4YJVBpFE3q556
r+pWLssiM5vN2O2+ou3t+oNZzU15VRrj/pMwQdUfzmVa3fS3wuv8U7Hc3prN+af3bz6+jc9fnXef
dy7mZlXli9yU48e5OJ9MucmLVZ8BcnQxN+7V/dp0l35XwhPMPXmXVvmdOQV0JbBxL3siXd5XN8XK
ysAV/cP5YDbrYrXJZ8sOuUck/rgxpXsR9TFxhB0nSitzfpXf9mARhKWHiYeoi+SYozGTIw44PaQQ
ct5P3CE536aZC0u/uxiNMB4J9wTzX7BEhJ4C4nVRVkePYewEq2J1f1tsN+7Hjy2QQisVB0nk+STm
nox55AU+IIp1kmCECImpcBzHQneDL+ln407yVWbcsCiqsYs5Qu7GZMVqvnGcyf2mMrfuxaoy12Ve
3Vv1ViaraiRmlYIa546jy3RzY+bu1U1p0vkBiHSc+Gtm1nZ314Dx73oaBtE00DqeTNyTycUvk/iX
T6et/dbqByv+Gn94N7149yl4cwEPRdEH+1Rauegr2r1ms3Q+M2bRovAOkHY46vcfLifx9N37q4vk
vxzn01v3g7mGnRv3nUlLILYnMnY872fXsc9Np1fx71dHPr/jipGZcdAp8h6+yIiBD+4/XVcp9usf
bul9PS+/fHUnb/9Tv/9tIFwc55dlMUuX7lWZWjNsFwvwupPS3IHJjZvdlMWqWBbXeQZ7dpY5HTtY
MSYkY4iKEfYVp8LVyTtTfSnKz0d4/6PRlFwsFj5SgvDUuBqMVeWra3duFul2WblZUXzOjbupijK9
Nu6XvLpx1004nc+2q/nSuPkhlP8ifybcxDK1/HOwdvL3q6tLXQOY7PhvYG1pqmL111jROe+wejd5
ipXT+LCLxmM3yjfrtMpu3D+3ZguulBW3o3S9XprRbZqvvKre6SDgucxnmzpSpp9NuTLL0fwevhpC
ZCSaYZSCX23M7Zc0r6ab/HoFhj2D2Hdwh9a64dAh1qZFiK+kku5u3/S/CxDvzGWMOeQ4pw2raefE
EjEQujKbqpH/IWW/TdcnpzU63z3pkhzd3o7ha37q0BeyE4tZxt1554mTfFX9BN4OkQguvqlevbJs
KZeDbInyTx32UinJbDbvPfEWTDnMGhM+yJphdOrwF7KGEDPEtX5jhWJ9whaFJU7ZqSMaJwCrd00/
7OKUzQQH222qFKoEoD64MB5/h29yQDmd2sD6s95fmmpbrr7TOwWXyt1vnH75s/lQq1bR2kdfRI5R
hhs5O7ToQWLyZNBane4Wvdt0BXFffoeCwJDuZ0jNq2r6Z7HpKGZPfcBqLSrK+CzFgrvT/f7p7XU5
zVd3BZTiM5dgsVfN8wn682zeI3hQECcHBdF/O5dg/3YS8++QGNoeARKvN/cr8J7szham7xRXStIS
1zYr0x01KeRe3OzsbISHk1uLXIrQgltym2o+Hk+neDy29HLb3U3v0jK37addmBfTCrrZhtPJw+7t
KocsMF0W2efXD9/ebivz9ee//dQmW/dY47GlMl1DGa1eHy/udJBZckMPz7dlaqG9XhbQadi/2rvq
tdd4+ZOL9z0rWv7swp+m1oi6iD5kq3+kd+kkK/N1pYvSHJUUqLuEIuy3cdxNwS8qGAee1lfddSyK
8mU4/4pav1MzdS3+W90FMITdk+m05jGdpRszpoo3DcCLVEbwYvG9KttCR7Qc8osKPP3+x/vFv86R
/0WAWwZj0u/bi7Oma3qRvbBZvNzFp+nq/hGbtRU5u02X8GE8flvrcUgT/8em7SH6f2lZrqArHogR
gmXTur7EvniBDHUPYk+yFBor6MtAzLp+fNiu3hTFbgBRRA5zJurUkS/lbCCBPME5XlXl/aVV88nx
pno8IJCRDt+MsvUaJgNy6qiXujjyBXHvinz+qmWK6a59m8L8/fW+ZelqC2Rf2+3uyavTQWw/DYj1
yjpdzaSOTqxsdC62q/okJ102IcowpFT/xf2N788fCv6smN/X/Qh2MHoxJZw+UDoMNEI5GL+4S+LY
7RN66JHEuD0YvJt8/PBGF6tVc7D1pkjn3zMasIW0E55tvzfX06pM10Mt1HMI0Rk9ELIhx+u+6QGw
9aWk2K7mdTAfDwTZAmUYM+jodLILoYkp7/IM5szs5rKo1UEw6bUczyA74/OsTRbeas1y0avFz6AF
A7Fy25Qma5Plizyz4HzRKxZDBz69ox6e2l74nz1znjT2PHWnpdkU2zIz9gvLcvxHHQukl7b6sI84
0UxkzGr33aTxp2njY9NpowtcZ6MfE0TK/WFB5Ls/Noikuzv3bQaOFyQ9JeYpJPPfrpKagm3woF0I
NhtTWrVv6mxKJD2tY+dFJzx8gYRbblcNxrpwSDR8cGXpv/icjJsZtvQvG7085FQsH+HiN8djP8Yd
2I9zB/7D3SHbXQPUB8e/K7G7D3An0LIZ90Qwb5ZXp2PHdcv063jg8B4WZocFWS9RmHIQuFeZPfbE
/GFB7VbtTYtdyfu0yJxDQJWbvEUL13ZVxi7M1kdPmJnlvhlcsDcEpWrjal7MxkPpHx4BBco0myNs
LC2M7MKi97IL+IgUYcJKgsnRimoeof0FwVC9wI5h1XrEvC1749Jpra583dXKLkrdcrHs0cKIQJSB
vcmQTYCW82Z3XaEvPzZXMFg5cVkWZX2vs7uVOTwqnCtbLd9tb2f7O0LMHMcJ81Va3rsXt+m12Yyd
/d3L18O1i+u57S8zMreaPOtF9Ak6dV8LgnEQhcKLWEA9GlPkqYj5HoplQBOkCaXhz9++y2yzm0t6
jAG+BGu7ZxBGv5mZTYBXZlNNbvLbXWzVaHzBVKKF9gIcRR71E+1BG5h4SseQMrQQMUJDaB6j2sMl
j3EtlD+Ea7u2t4ttaFhJGrEk8ZggAE0y7CmO4JOOdKIopZLqZ0BrE26jW9CZ6KMDeGJm0T1eRE4E
4mfwELyN8AiLM0AaS0Q01coLkpiBSVXoKRzHXhhGNFA+CYUmQ0i7pEeLMr01trM4392xbs6D3p6W
ABg0ciwASxeqJwAo49e8GgSeoCjAvh94EgkBKk6Q5/OYe1GgglBH1Nc6GALekBwG3Ky1gUqq5kdA
FcJssaC1H3wxs7LK2raPY6WDOIw8gSLi0UhFXkio8LSOg0ATwgP2mO3bxNoolE/VEQrIhYtjdT1q
aAhQn4Y+BGsYBR7lQegFlHBPkyiQgc99QR/T1+MW3i22sBJO0yPTEi4z32rsyLRvzHWa3Q97JpMq
FMQHV8SgRy24p2SkvIRJKUI/EonAjxu4IfyUmZsdTgPRlhfhZ+2EePhSqZSBmu1dkntCBRoRAvC0
iqVMROTpWIH/aQ6Bw6XwCFcskL4fchwDvO2mtJY9t0+3eCloTmZ9XvClQXUZe1BTnbd1uq621q7+
yD4Bf1uD6lgnKJSejHzQT0CIF4JuvFglQZQwzalUAKD59cH5m3xWQh04T/YK2ZzrtJwVq2EVtba1
EQxvbu9oy5hicqRP0CUWPRn/fnFVFMtZ8dU9Idb88IBCcmS1TAXDVDPuUREkHmVx4vkaxV6CVUhx
hGMu+I8Q8gBheOdhuSMeI2hAPEp74tkICZdbUxUF9HQnuLYhth7OmQ78gHgB1+BCSHMP3Dr2FJMk
CgOfytqFnhCuTXkYeWdLFz1lQ+jhfVY3tZC5jVl9MHbw2+c3RsSIWbtgkWjpR9hjXNpOwIfsy3ji
6RD8MOJY8SRqef8guTaaGZX8CM2MZqyX4Yq1WWVL6yeyVmP9Dnh4gDEPQJW+j6RHQwFpw5caVMkj
YTsMKL9PqvI9ENZvhnXYrHXhZgNwGWkK8MNEsGrG7b36uKIjjkbW9iGHvBuC7nwSaagSgQTACfNC
SAKREIxxjVsKbOidP0K5A42leABaOu955WZtTHYz2tyvqhuzyTcPogPOERthAiSaDwBX4ihAKFQe
j0HJlAjIdgozj/tRSDjHJPlGHAbAFLpZO5rujlE23wzKSQ1xcoywvb+3qacKM6CKbN5zqgPdkUVp
FII2F+J0F6iQxEaU1dkoTEIVhhp5kSDg9UhQKO1QnCSDwgpKiSEkjrVwWeZ3MLz1lNGwGZbpYb0j
DifqWByeqZ5l35oqnadVCiKgXZj4koAMIAFR0IIwSKBYYcinWEH3TGLqYQq9XhLEkabRN1POsw24
RzK8cb/akVH4AyZTrJ8H0u08L0bVLmcH9v8ONQQqCLWGgzdbQSSKfR7CbMBhVKAwIXhKaO2hADOd
iACB5E97bov4I+Zq7XC6uPmQMLInzNd1NjqcLdrfVNzaH2G2CkXIwFxEMS/iStlSD9mWJuB8LAmU
IqH2g6dL/RH1R2Kpv60rjUiPpfFx2nO/WZp93q7b6QSDF7LaIvBuW3eKWGyLh+9jaEWlH8PgxiFj
J4prykOmkHpOGIU9Tm1RmjWnC3U2gF/gfc5Ot1Wxz9RYCTth+n4sMIIxDsNwSQkMvUGkA0iCGjE/
FDxKwm6Ve6DRZS3IEGu5Z31j8tt5uvTSzQofai2nI2Z/ygpAoGci9tjEU0EAnQKHiUdx8AIBYy5P
RBKgKOkCOabYAzSQSnyf7AFlZ2fpLN9DoagxXERYjESYeIIT25KzwAsjpD2MNSNhwCIVqy6MNp0O
gHQujgGY1CzMUe8UfNRQ8DEboabkN5+sHymksQ/2EDpCkI45lH8YsDxElApg5tBaP8uPdkweb6Bg
sQN+wQa0t0hndSSApMGnpM4JB28SuK4fOPBVFELgMh+FdmYNofyrwAtCHFMRi5hHT2dfIHw4WB+G
+2F3Pr85P8LRFWF2rP8MkfnCNN1fBmJn5f36ISQo5fvmJaIx8rWingx9yEcxRHHIJDSuBLIqjJZU
SX+weelTbUPKCMqOIUENrAdH2LxdfclX8wMcPrLpPREx5AuY+1lkp0TuW21y5mnfqjeExpTRQSht
al0YmAzB4PvQqG9lJjrNbszBvtgfcVtdoZZEEsbrUMGgQgGZFwQwtyRhHMUI6yiuzySe7kJ/eaQL
bbbnjWWPQPREGDAuoaTXnTY3nHshhKzTjW2mJWhUhcRLFIa0x2A4USEGr+WCYIqJFFI91Zu26XZx
UXqMizG0j5s821oPGQWHhpnjkf3P6jaiAqCAeZW0RSPwvYBCw6xpTDESGpIz7eaeHrUOEpkdN8mZ
NLRXmSc3oPHVNSRjBpMpHQl4Yv/RxkEUEQXJzxOxhngmCfQWcYw94YeJ/c1ayIJnJaAdm0eKcrPY
ga+GDKxItjfwm3xl0jJYXhtg+eClgtRpKElg8owj8EskwE01CqAlglwO2pVhmEQsJN9IQ1lmlqYE
Ib7ZAt6ZDAgMbxsG2hVUsQFBVVaXidbNyzKtFkV5OB6WzPqylZX4gY84RKOQEgZDTSlkqRAqp6bQ
OmkWBpg/5ctdyl1sA60qNOP9E5y6mf8UJO3xCo1oM17ZD7a+JzzhOhKeoLYt176ExAGdqowS7IcR
9BuYP3uw+BQ8MVV8CroyLAbiwEcHR9Ifksk2rw6Zrh4ikFQh05HyRADzA4xBMLtC+fcQBCEKgxBm
jF4odsl0EMxni2ME84zsc8JmDWl6e7s+eLEvmwFaiTiGIu9BPPoQe7Gd+O1ZKyZhkkA2kLTXm3Up
dUFkdAhE/zjaZt336yq/zf+nudtu9eiBTziMT7EnYUqD3B/DhBwh7lGFo4gJCqnPf24z0ubxeFfS
3tWVZjFQwQw19clO+9htP8hZOUjtkLy+5gmlgJFDezrhgc3/zFP2bCJOIqkDGmHtRz982H9A89gR
3H7d6Yq1GJJ10T+Dq48B7T8JqwcRLkFMBb1DJBDxuM/sGRa4USB9mKogSeCYaKy+NQs/cbbYrHWh
8oH+xqjD/HEJFWDv5EzUg5IQAeQu4cG0RO3pZ+gFPodcRnXCYgYlUeInEdYnsxfvn9EqHph3Iatj
T5qThRo44Wz94uNEjHyrZcL9ZnwJFeIitMcMHEOdRIh6PjgR5GSCdAKjFJXhN08dvtX5dve0xZh3
riT2XzLWn1xbh7RQP5pib98X9Xl/hJIQkiUUTZv0EmZlAJfhIY6SCFGt46fPES7ef+OotrWhg56l
8wH0qdkf1Jbmtrgzi3x5yNKs7uI4iRMKszVmEVQ+QWHKRjBlQxfHA00S5bN4sPL16XXBZMeHAHO+
6467HvHWzPP04j1UY0TrNMmkX2dKHEouwathfouhkxOB54dUej6ToQxxCJVQ/i9vV9IdyW2k7/wl
uoCDfTlilXssjVtuS+ObX61SjdikzGJ7JP36iUDWkshELW/Mp4ubrkoBAWQg4vtiQd3UhsPgl1Xh
8EAjvOKuIzx3M3VevSxQixmmImq2x1JjAHcGkrhg8PYVg5Po8DgKOKtcRHXjJNYxL0kLXzVyLmhH
Xxf0HJqv0zyGk7ngHIQdwLuWqngeIrEUwTvnijgPR8+CYwZKLEOWfhKZb0ZrBdG0I4iZBlAHZPFx
jHEwkcNrgH6gvgYz8mBugRpFcI82SaCM4F1M4UVbwDhgk+9HOB+vQpyPDcZZr/Q87rNec3m0u//6
drc/sSClRaUbpTiwfUAkTaUbXlviZbHEKgc6CiyXxvwHYeSRfM261t11GX1ETkAkT/pRVcPQpJgG
w0WlR14HxswWBpqsSwRbbRW/EQq9m54epx7LuzGL+enbWMs7zqQe3hO6MoI9MvXIqamLiD5JDxat
WIyhAPj0EgOiNmTggTxyQe+zHjdsx0MrpujJvjjFy14+/wIG8/Uf5zoQzautEzkW7UhRDoC99Rmo
FnUELB0YDgUuJaYLkZLJgBNxlh1xFlPU8y127L69fFn9dCwlGUVlBT0keYY/kM6WLDQSa5mtBNPh
gPcLFQBuAMl1wHOFo/ec0SvTNvH/6WPtEpe0s8SlPGr3L4vPj/y41xxhaywxIVsi1gT00Dxg6UAE
WstFtlmpwiaWbzTGZG7Vm/sUrv3rAvTjebWZwrWUnVecEScs6KeXwIskxaBkpMzZHEOS7wTXWgkm
wvd0Y7k6EaqB2O43q93z7q3ZQcHBtNmoSYqoAEUWNNeAG2BVQZoosg7XyHIz5kSoOYbZOMonjgTj
NfsjDcDAx2Zd4BR8s9u/gYiyZhHgHzTQLHGfjAkEHDOcLK4E8dwB30rUC+4t4yy+XyarleVyoOb8
TLN8xzoK5ZCRNe9k97w9hVulMRhurXrlgVxynYiWqQImICoa6Xf0wctgSpHp2ms5D9sKJXlHKL09
CjXpnP1KUVYjhBUNG+nAYRiimcc9N4kAU/FEqxSjjSIVx7sitYO28mzmVG6z3rKjPN/4jz7+eRbN
kpwLmwFPAG0FT+0SJRgAAJohPY3cGs7EHxXNGknYLG2j5+q/ZWur1WBQXpb/szpHPbXFw5iUSgpw
J2ElZEw+AZBjVBEJcN6XrG3kpjVn41HG02+5njPPLd+6SRTtBIIYtfxRD3iSFhpNTvCS4bgCaOAA
1CNLJPMCICgAZohXA2gd5LI1trMdBkzUSjTx6VPUCdaNINwDuE2q1kxgLSUHZ+qLJ4XbEIHfCK3M
1bh0RxTbYbjb6tiHrfm2KuspKccrBFHAxyOcQgCD8GZswJpTj7QckEiMTpvs2jfTjNLOv9525l9v
O0HESUQFTIRFUmURZqSkTBIeuB7HxENRcAbAQmQfk+WA+ayV7xOx6TzYrMetO/vp1qvJev5r8+a/
INHWFeLpms9L2oEDyoUoIREsOQynw3p4CN5EeNXJyHvwx2Hw/gIOX06E7ujjgrEOqf1ht968IDLF
vQdQVJNQzHsugdaSGKrf1IA8NJhqxqSTSnIt3W1fVEe+jEnr143U2/UcT8OHy8lWf9qssF78v1/h
/+KdOHLIomp2DJGzYsF9OkaU85aIIApQcfifBD6GG6mFsfyuLEYz0aUKg/Ezk+V0jNR2wybLSbv9
z/51uXt7PQSb+KMZCsHQQkSAKUV6QgvW3ko4EQ6Lm51WzMiiC5fl6ouYjN5fxOShdhUb3luFnKTe
Vi/P292Ph07So3GxlFcHiyrlMjh8TLoZG4DmZEBhlrpAFOdW6hDAefOrZnc+wUROM5XTYYXBROU/
bl4x+4FQ0z8vnn7b7/bjoLeLWVqTI0kC9EdQqxAGcKKBljGgldywu1SnM01/6zsPPrQrYJ1lLaZn
4rsETuXIfnj1clkJZikBCox4hkniWTakWJ4yS0AsM3v3kPd3qf/Id6ld02I1X5OQevKqAHx/qdeL
fTXUfCkjhEEvjgcjpJS9A6AcM5b5q8CJFwajG9xo8B7gLcSNCqJh9IvHun770IroOnJrOjkKi/3T
yc/zU32kBKuUGSuEBaztKIA4gofj7D1TBvCIs95d0//TqK1IrqMeeqMm6nEhlj2k6gyPhWZKsgYy
j2kdYPSAzax0hXEKuDjzqzt5PY4d/6Mbw3bUqI4WGDOtpf7z5nW5eX3Zo34fTykDoygloJSsUGTw
qbCNSgOE40lwQwvP18vHjoP2X/7x21bceZwYPlzzOQ4on44oQFYUYCVAXVBvwmUUSOOBQOeIwsM+
M5o9K9c3uI550fmXT62ca9GTUxzx3+fN2+Kp3oyyf1ucs5Ca0kcgZ0NZaMogFANgbLxKiL5gfyWe
sAxqEwN8GO7K3n798ft4CPuMxL8kRLMMqzbzZSxmin1uAP7KoGWA/8AcLITKVjEJx4wKrOguBiPc
0gKypbA8b5imNyrtj2NfwDDHrxu5l6yjJqv14hjpDt/4TzPGF2TkzHJNVA4CO0PANhjY+egB5+rM
g/b6D2J8Z/maZa3mKMDRNeOTHphaW/ZD/FPCmgA7WG0LmjWolfS+BBbBXBsKuIwWoP0R6I6jSksB
dojKeHd5G85ypcANvx6vgK23M0js2IafkpX/+TF/PQl/scIADHBLDFBFIlikICqLhLqMcU7gijeq
VO8Pf51nb4TeuEVH6IWbJL6/WTz/OEYzg79kh1YCZhOH0yzAQQIAEHAqiDMIKW1WCdA8leb9S93H
Il2Ir4+eaBe96C16yY9H6OAQ18/7/focm1aIDGTNbDHrHJbxYVmMYDqSoKICDmaxDgxwnLgaXBqN
24q1FD2x7FGB8G6GU7DLGlW9vsBjLUHHlS0MYzlgfziASlbwukuALmD/u8KMRptIMccgbMvMlCPV
geIYM9c68qFqmcnabuVz8oALi/cVkGACy2iSsnTgsMCT2hsIaj7HBTA1f/ChFd/21nTa2S/Pp0AO
d7VKDUi1k4ZEYwDbimBBcs2IFhkMqAZUeGFTTwNNpu9tqellgD++bta71bRSxnIgn8hqtKJgvrnx
2DnHCRDlAn8onbi5166dZ7hs3M7PtOswurOOmcv8tFm8rn6qXajAmA+WYkAqhSFjxop8rEsUGlTW
R5tJDiwIG10qQbxjCPooyCUIfvh6vEjO3fwUwoerCQZvby74igmL6WRZW75L5CI4wgDlwIlkFuwi
xWivzdEpT8ENXa2fG4/cirboiCbcyW79+vmJjzI87pGpGnsrLgsFKkMl9syBMtugBVEKGLHhgHBN
bGNv43Ee2rm6AqyO9cbHTquXt932t9PWYEz+UAUtbUhZSEKLyYMOeFqAYiljswCTamK82sI1GrgV
bJ76wg9PJXHx67/jTdDngLEztSHUCSxd9iRwwG3C5UKsxxwpY8laFrIw/KY6fv26+OWn3Wp/hxOe
iNEsQer54eJyK9breeEAOvOm2wW2M4UUCFpVrJI3BPZZkuyThCXSZLy7u1SgIoXLtQL4dSv4Vs4F
V6qXpD6d3L98OsdkAf8M7UfDHwjjwM5aVTQGFADLRfAZwQdPjM4sKdBXocr7WYmzLBd6GT91wra4
ws5ZMGw1MeozhIY080A0ZU14Z8VN4h7rsjGQIlQmPmTw4IK7oBlPWrn/Pwg8fNmIbubJDfxwGkH/
8JdPX163eDk4pjfAIFTfPvxV70HwWkQwbLxge3yIGuuRgA2ZjH0uDA4RvVHedRj/UnHX4etGdqfm
UTi+NL2607r02pU4OCGhNfIEPPjGcAYsUxGkx5iiUcSCIQVDlExUSJn97fK6Ov5lJ1q/fmjF7Oz7
0p6K+VfjDgmDttspab3PjnAfAFkrLE3CwKbnYLSltlbKfv5m1e1zwNlYT4RTjUCNm38bn3bY8Tbp
1VAaDAnwEmIoVmZQAWxFR0cKl67EYJLX6f16NVopJotQ80Vs+LKjA2no6uQ1ZSKH3IPnzivpAM4x
7cBa8oCQGUw/wGUasZg/ypsvP11s0jx+24i8EbMSg+p7JjyrMVxDQexwPQVjQtfqsOGP2t0RfImu
tnJhgxuG+1iR9cYH5uFVaEnfz0ieZblWvHu62eK8wrm6Cc7EEUztVi/P/zpDFllz9xQwkge8AiQB
Xo/WgFcKp6BmJobkuQ7TXGEzSjM/l3OnKoBrd4oovuxqCd7BTtSqS0ploVrhDuNNCgodEpCYqIMA
TpusV/Re1P39h8vK8v2HRmax7OyZWJ727J9fFq+L57fd8+acBcHTGUAHQo4Etgm7dgWYNF6Ak8MK
IrhQsHH9rPN0vIkwsiPM9tTa9fU3309K5iKADeWYxsuOIob2sMoEWFTgYHqYDs7F8F4lc9/3JN52
XnltmJrE9XCetHvdrN5eXn+rnd+1eJW5GplhxSmNFEtl5K4uEccMIyrbqLTPwA7tzVWcRr99vMod
z08ealYtO7EDvKP/SA1G1/qfL2QBAh49cHGiKGBHIWv1FSg4ajcQBstK6QcyzqM1QijaURZFpwF3
/FGR5/1QwNakxgIvwFUCySAYYHBRSDDOksSD1iaAmbsvKFzHv7nlYykuBCtHT7Tr3M5Dx3BAp9Cv
1kSOeuznlZla+CQKePbgsVsBtg/4h3PgicC7CvCrsVwPy46nuHRlwPmJh1bedWcR7hQT+duHUibh
ShuC5DQHIkPBF+Qk3tNkCAUDE2lO0b5buPI8eyu0cx2hl1OugXee7Os1WrUVEeOU9WhrV12np4o7
wzUpUmFBLOy489YTqXwOMlgXvHyPK3LwuH46inH5opTTI+1Seyd6uTqlxX8/l9hgr/ThjhSR8R0V
IoFPE8GtIa7gLWrUZvBYkho/4fq/d2pscB7VmXytJ0GQN/zpoHM9JMMQSK3uCMJIajVQA6wr1fBX
YLHghV4sA32zMlyNkI7GbcTq3DblRK13aJIE34FHe/v9AJwGqy7RvKMOS5qsyBJAbIkMMyHgnrBa
rIiknBXMFnn9yJ0Hv5CKPn0/Fh1/RWgmOnwoJ/WMS7xDe396sbVsk0uZXFKkaI/XkIVAgqCGWG0V
ixz0NV8tJxsP2Yo07+3AD9enavgPMwMQRQDegVkVhuVkGSifU5bo4rzRmGbW4p0MwGnyVmQpOyJL
dRT5afH84249avKoFRcRYFwC3w3M7nDRUQS4n7PwipVEbVMXMhmlmV65OflUbEXnzR3DHXxDIhze
8qM09RYPCbhCZ5ISVjvLBOY+AryNGlwfpypLdrNL8EI0Mx6+e2glYx1x13peKRdfnt8WgAB7xU4F
RMM7DwmLFKBQSHhllBQkmmwUKISUzN4ZXDpNczG+dHqiXci6t+9but2cewleN/v9qDKI23rdhSiS
g6oyhmlmqQzxDg4R4OSgqKFe0EnH62ykRg65nCcp4cP10Sz+/OsIZXFpHw2roRIRozOJgvYx8J5C
cIH9W5YUx6PyqKCiHxI+D9jKse7IofAmvMYOrjf7n99eftmPelbRQA8ZmsFSC68d1QlIDcaFBR6T
oKwjVGqdQSEBet0VOUzDVEc+iQ9cqASbPzhemqadGLemy1N1wadfFq/7TTfJrQvwDk+ByFMsgLEy
EQuYigQqVJQ5sRD+qCb9qZTNEpmZxwI0EOXJsdw9/9xcCUSrNeFsSBwbHYvQWHWAHBkTVBGQWFSS
ejAzQYj3ucnw+UJtAnzx0Iq/6q1pWq7fdCuc2tOHmsogivIlklIiloTEQGxwHgiYsMDIS+A0XS/f
mw7dCric53y1FnZyZGrN6HXMHk0E64gX92lFhC8Mf/HSEKZ99NhenMt18Dieor+54yeaRdhOaAA/
vBJq78XXMwB2bWotG17S5COYRZ0T9i8ZBvoDZunfzcKNn2iXsJqbLu1mV0AMF/r++oa31vCh1MnJ
IZ+VNYtGgQP1lIFFtXiNraBYtipTcTExbm43w+LYlyXHbx9aATsbv6B2VqP6unl7Omm2rddRoczR
0eQzWHxAxRwvOMArmK0i3GtvA7wLze0t5T4N3Ei20LIjmXazG+6ABqJ9A9e23D3VosdBuw0mvKOC
XQ1SEeY0dj5TrMfCpm2WmeDBORv4bSLajH+FjjbPTVbTOaVLtTrX0PBpB1lmTmAbC1oIQCcKIGkC
L0aD9yVnqaN6vxKaTohRL1fbucgrOr2x7q+bzy9vmx92m/89n8xBsRmtzI3j7ZAArW0sGctpIwlY
gMiUgjcsHFdC3OOI5/NcWtn0uYd2Aba3qmmI/afN0y+oSKKiCok3/AiVPDBNC28g4vVSnhGbTATN
d2B2UpFFvwu5/hNMfeHeC/imXcz8FkhnNnbTsTnHZC4uqlYs4lWQh3o/y5PBn4PFHDpeUx2x6p9J
Ym2OyoDx1zH9m9ni8RPjJVjK5yEny4U7+tfysn/6x/q358Xn3bknST9yPCKquBRAeIKpDSKc4sQq
wUjMlNPiRE5yElCfj/bQzrvoCTPfz8+fX54/Lp43T8N9KfV+CKdroV42tbRWKaxHNFijF1LGcBKT
xifPb1wNcaeSjEW4tOPnJyaL3HYWqae+9sNq3F+kbQ004T81FJ5zCkCSixKw8QGPAgeszUXAS2GS
dfIucD2e4wIcW3Wbixzg347eCHbueC9/H5owJ1F8zoux2CSeANygWS0keAu2lVkvJLeuxHfK9U0k
aKXv0H0rVqse3vnt8/LlWERYWxWG0lB5eBXMM28TYEqPQQDP4VVovKonZuC3nmZt/L25nGaqK/Bn
/FizLNdJBoIuyFn+ElVzaPo6sPLh5uYA9gCgK9ZDgIsO6DQClwSYXECvjT+ZcN9ajuNfOxqT1i8U
VHWkt2YW/X5bPOHtEPXU4z/oHKhi1jB0CRhLMMphewLIT2kS+APy2okbOANGvXw57lMj6YbNuSR+
eEQTT4svz+dmXaPVoxnCqE4nbN3G6xkzWHrnQW8MEMsgmPFU0Gx1n4uMR2xFkfMCJbtVp1jb/p+A
hTbiFL0A212vD40YlgR2AcQW7aQElwOuhmjtnOEOWxWnV3aNB2pE2JrObtRuMXOjb/LR/+3T/xV3
bc1t48j63b9CL1s1U3uYwv2SqnkAQDLjTZykYmdmd19cskQ5qrGllCRnJ/PrtxuUKIIXWbvj2qMH
W+IF6CbARnej+2t4pTQGv3NbJ5NH8OMcVFgQ3mFfSqRQLtNFgLH0ThNvXzzmF+gY8RzdJDkKFovF
dHm1BBOA+H65XO0+VffL7W7TilOT9e6AJjmsiBhuUSKEVO4wfddmpfAWi/wUVtH/HWeJBtonO+Va
6AGubRdd/+tm2YYzfvURfx/CDGKQgdC1RwVWaITP9agqWBhknWee5Bi+Z0PwJS21fnlYs4ackXy2
w+mUdSsGWF90s9iOTGMLvy7LZQu1nNA6OMjIQHOVk0wzWLs5RmU59LBYmztnCi2lPHutwC7Glwg8
m7Kx6LtRLF00diZOgI/oWtocZ615ZeraH1QSXmaBYxy4JmBh+hyMCEslC0B/cO7/cda2iU44ZrKv
m1tluj7qb8voki2ns6qeqRhEF4M18H9dGYIwU7hMMAqvLtEmc8yDkitZAYcEitFzBu3Qwwjv+7MJ
CzFgvsvCjIiOa+mQbbhIUuViBoukDFdHbUlQOerCCpOiFYfhM8Rn0imiFVeuYP6slMPngN/61yUM
VQPx6rZiTYb/7PFrs2oi3QipUbKgMl2Kog6XBxsckS5ssIU3COjTcbM3LbQ7nqqBFLipOk7/7XQ1
R6/ZEfEbTLN9VgaVPlcFjD2VGMyAO2Qx9ydg5qOXhHrbqa/RaS2hRA/sOEz7aLcnY0g4daBV5jKT
IVrC6KMCxQKUCgpmsA+CWvVnY0hGI0KmZsCCnyJ04iFNDzTwbYN0GwM6haXWEw46v8/Rs4lZD1iG
SVAZrCl4STpoQO02ks6tGOjc6q5X6s31daraMu6kCwXPlInBQ5xl1lmfEVkGy4UrXXn6DYAWhx8U
nGhTeCdmfQrvZNUNE3oXFbpTzlRZlpQF6jNGQQcH0wrmnbQ55tOXwlkNZpR5uTi8lJ6xvKf2NW2u
Z4r3zcGZuuuCCv1cQ+GnY6MRT7okRQb/c2S0QKW4yAplfMlJSXN9VimPfeNjvpt4MiHa6gGi7byr
1rgCcRPx9dPRo4ax70wLxORGaWpAjXFgumSlC8yANChLJ15uYFwxopkWKS9zMcSL7KwVgypalC/1
5my0pTBGHtd5eO4Ys1VQWC0MCDxaoiJgwTpwL+FD+ZjS0tPFOvz1o+9mU0FH68dENeidez+gh1mZ
l6V2scYeyqPaPyQzEbSgTBeUK/XsAGLbJxQwOJvQP+2D2+DBbimgWED2U4WRYdXmugll24t/TVEj
E9wxJUGDFDoG6Jbo22WYH6lzUKdtYYuzsFmG+hrhaODKhLu7PmpLPHhYE5JopM+75cPRlbiPnFKw
xgbM2OE05irwzHDmM6xxKUshjQkde3SkyQ5ZAy94xLNe9CvYxORb/IbSaY+Siv9xAXPwJpQclgsF
NPFgMCHbhCyAsapEDnbpGaK4Lv8wnveLp9vUz0m/phkcFN2EyfDlafUbPIN9t/hMdYxJ01FW6ZKB
3ZERIgvcz/WZNWDxS0zupPCYuT9Le+10MsJGelHKTB8hEw72auwd39/LDzHUBZaIfXi6tghIESeL
JDbnrgBlELOrqAfVxwaNtbCcdlid5ZlNpdj2WHJIJ9gFiOybTnN6LEKBJYP6nh5RekxUKTNBQNfg
pVSZL0HlhjkuZK5N6clwUbGmuYQIOhCYMWeVOQSqfMuvP3ZxU6km3pS4n0k9Vu3LHVguuckkTGXJ
sdjkM3L8BXFTG/IuUgamA1wtTmZ4ldfFt2q128YoLB6hdiMoyP476hOl9DANED0cg8lKLE9hwXTI
EcuKFhTURfdy6/OBnpEL92cTtvlARh4c7Hqf//4x7KlodvQiOATogwwEP6gZqPxLrDVJVWbLnJfw
gguS+3Pe6GPrw5Qfz6e06yHaDe2Hfl3XVtBA4JdkWmFcSuYVRi1h6T3nQdEVrCDOupwVxbmBX/tO
RsO+9ucTFu76VfnsfCZMT0Nf3T9N76ur9bx62If7NoNgAjURVDRHYILgQWVFkAVtNWE2hzfP0XM4
6PYxjjfQvirhZqBog50vevWHp9/a7oHDBrFQr2yNIimoz3N080iJJT5Bi80MmtqaEiWM9K4w/k/W
Q2pfcZFSOyBhF7rBeA1flqtqW92sf6tWyz9aLqrat+FNUAg3SRTG3WqTWRbyTChJNLVgRESk13YF
jMHmUoq0GaBo2kBu/L592B2dBVTEPQiX50wEhMvzFvOhRYElaMBKB3lECqeYtbSTD91qpt1/NeRm
xoNNPGD1/fF+k4QkGq5pKKSA7iIiIxbh4HmZFaCoaEW9KouRUMBWWx0i2BAR3YzIffXKTTVb36+W
6fAjmEpdRTb+j2BqElQn4jBEHuYZy2XmPaaz+1wRakIQsngJ46KuRflpiKh+ycrWZekT4P1pUImF
WsxSH+I+IbSGjTE1dJIsPRgTiEDACcLfcaxogRHWICLKYLg05MUW3xMJo9962aKVNP1VFw92RfiR
gHp1j5ufeN/+J/6KIFGGMpljuDum+EimwHwHGYLhdh5mUMj1/wQCqD6XcjrgvIeDY3BtX5aHss5S
EhLDCYwgsDLB6qpB5+cCZ2sBPz2BVYvRHDS5l5mtewp+vjztV/35MuVvSgb4m5rGn7r++r1djIJG
zFQnjOKIy11yxOYV8Md7ZcD8VSA7CGVgeY0AobebSyhRA2EkleJNBnL45er648PT/XJ1MDQ7YQHE
O80c2H86SNRqaGZKabOCuiKXZVC2JC+UAjxMScoNp0PcdHMqDn7evs/YggniJQKnlRj2RjzJrJfo
biyCxLTmwp+EjExaTkkbAEWoNO3Wk/ut2qyqh6GQcZNTK6yGlR3kE7qzGaiOZQEGIgO9zFPpwkkU
kXbLCWV2QBHBg6NipQ4bhxtah2gtU6ThVGuKPicEnlOYnl5itnoIXnlW6OI5DMhnZMrxfMrDbOCF
soiBVm/vPvzxOH0lj9jMGAASCJcWtNfSSVQFnUTkGZoREHuEc3iaoehkgbQaSXqf0oEFdyrIQPr5
wTy5XO1gPNCjikMcq3zgfwwnLiiYn7DQ5jru23GTOVRWQ2kNLLaiCMafHZjS6e350NzDlSl/amCG
TM3d4eluqu364RtopA2yX/QMSeJlMBm1kmDteQR5jHGYDFQ8To0vO5sHaTMJBXcD1gsc7AW1gsK9
WX+r2io/WM7Kc4fI7zglvRdgXyqV0QAyM1hSGHGW1+3Q9kisyf5sQvV81veuVfN5U+P09+nmqIzu
QVQ5I7oE8hhWhuU5lmLIYVaC7iGCkZbw0NGKW40knS/UgA600E3G3t0fWFeGNN2ber/Ri+B4Zh3K
GIsAjAE3z/LSaq4s6MOdfbuklbR/3d8wW5BFFxvq82UbKbQeNsH3+fYOhDEDQVxoBLvIMWmcwApT
KCV97kw+GFnfH7p2H8PD176izcWC9qtE4sFuGMFNCO05V8oCFgpQrazEvWcLhFsNtiZjwSMkqzfu
rNhdaHaYXjjRIXM2RGbjx82X0/vVertbzq6q7RYUy20H0YOQWAZAcBDTImMUZDYs5j6zAXEXpGNU
MY72UTr8p9vtkFgNkdgkhFSranP/PUkgpQ1OFHHC0oAVawRG65Wgz1mLuSDG4Y4kU72wp15zCTF8
ADBkcYCBqLO+HterkBTvhYmgj+V7Dc2dNGXmCJqwYBXANxtAy2RgI5Q2uHxMF+u2nBI2gK674L2Y
rE5wI41IPBjcGCPgNfGlVhJr5lqE2QN7VgYHyiIrTSF5YcJ5YOTPhzWOhjQuBBt4wkLxI05Ebfyk
6qT3tKTO8kxSTI6zRKGHSaMM5GVAq6R8sfJKrf5TygcSKBZCN0rk3faxJTbxgesC6xCJkDmD+I9S
i9pDJkEDdj5oZlnnvWm1kfQtST/QYiFZ47Ouft9Vq3ZWo45ZjbmVLHcKLfKAXi2FpZx4hqjblAYZ
pOioMp12Ehr0ACjRwtC+c/dhvbn+vpqho9Dut11sbUOXgesCa6tLTEaDcUOPP2bZYlggN3lp9IuH
HjX0jCk5+9MXKVt8iNe7jsGwqmF3e08fxAhKKI4mp1LEyjxoYJpbzEICpmEZyATicMpSgYEmTkLZ
DfaRUjsAiYsHB7fFnlbL3fZV3J36vKqhF+k+0zPmeWoDa6tlWckQmoU5rLfAEKsYdF/Nck3k6b2Y
puURRf1wusPBwNyytOv0zGusSegxKa+KWrLcp6mC1UOkYFnwmANvA8WIWJBxEgGkC6qlfcG9/D49
Y1UNutcl3NtqYLaBndKDWWusnPUGYRRkDbNff4m1MrBIgywy5XKs0qXhfZfGZIwEJRXVpThPpU06
GttWa12SMrMY0O+mognNmj193baAnHgdS2upNMIJkmEEHqybBaybivIsFIwxA+qtDqYTGdZq5yLt
a0BWTrU4WCWI5bkEfb2hgXNExeDR9lNg8AEVsKSDToGk4IqZGdDPtAYTlsuOlt1pLCVkIMRhcSe6
mi5ol9N5tYuRWdtZjFmsUZOFqiOduDOlLzPPsP4MmNGZ44gEbeCRGZDw+ZmJ19BNfuhmPHCxd9lF
Sv0QS6Zr0ebV3dN9rQPgGxoLctMI8c9iHR/JM2/RkjAa3s+iYBkYMdph4/I86J52D2P548crUh4G
kO0WCJ7ch4a5f6g1kFqBj18izkbhcwxhZ/BCISagzQznGmvpcGVQycrNf62M1OcSgmcD24uLme6K
957ru45/RYDWuopLXcdFeUcUsyTLBWYKSBoyo0tYhBUtSkXLksizRmCwuzOd8r15NZsPyP9Zrxjy
G9Te4/I/fbiGCRq99PXeF+M2aoomGBAhwmQwLAjvzkEGhqLMhNLBwuImgz/rdRnoaiResH9hwlrV
x6GcElLNj1UQZlMgorEmrIqb/TAWgfgct38KREEuMSMpLzNlneShCFa7Ti5e0tBF2lvVJ4GKZvdp
9te/tja/9ghBqKzllGPKDW7sCGvA+g8yU/gkPawlOe3IwlYzFxfF73tH1tV6vlwcLJLrp8dHeN6v
gbwwfQDh8Aiib3L3fbLefak2k6+bNSb8wrK+m27uqwjKtPuy3B5OvI5s7abb324X683t1+X89YTW
xyIU8u0M/u6q1xPSPritdrfbXXM87fi55smfax5+tLiCJxD7Q0j15aoaZIeL/7DLi1+uJpjr0X68
n+CqD6uH7xN0iOOZ9WLSmDmvJzfr3fThJwlTzVxNNtV2OQfb/Cfy9gfylx8n239hAan57fppdwtU
PcEgPqxh/Kr5/g70Cvzlx4tfN8vd9O6hggaw86ZZBSv6m8m/4CxorIdGT3RyONTuKLax72cSOT/9
+eXy081n9w6+fSreXH54P7nY/7/5x8di/Lbry3/Gs+HD5/c3kx9W61U2W08fqu2smv84ufjp+Blp
oDl7+HLhQNP7hlnzN5vpDOfvwIcRYd42PyYX4c1kGzMbJ0u0PbeDXYFQa+4RcE/Eg6xvmOAmzuA9
LOkn3xeIBImKMI5P8Z3s9CbMK3LVuudv15O/Xd5M7mspByTO1vOBvo798LF7fqhhN/DJRtpekTfH
fg6fwzUTmNTT+RwRdiZANIbMtObHjxdv467FxOGRyYfVrBoen4SsK/fu3Ydwch5Ral7xA/tUNffc
P00388lXfNZDH86afvTk4mP9vk9giL5uq8nlarF+dgpc37jwdvLms/uUjxInVWtoLNyzm85+e+bF
oGDWte/55eo2cuRuTrwWE0Ea2uTk4tfqDkP3ruLjH7mDg3LUDKfp3tMZ+v1H8Vf2zXF8/tMpcHub
uxt3mn1Gm+FkFFi5vb28cm+K0zfJ9K25vX13+f5tkcOMnoxyD/Z+M20o3nNT/P3mNGm4f5fS9vn9
ZfiQn6ROStam7TFK0dH3v37M8pW9ag3NXtQ8Vo+YijLG0XFKU/LfScKbDzdRIp/6WN1MAUnN/p7/
mzyCcNomE6GeAHvSGskR77n4N1BLAwQUAAIACABvPoNLYrVx2dIAAAA9AQAANgAcAGFjY2Vzc2li
aWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTMtc3RkZXJyLnR4dFVUCQADgR0kWoEd
JFp1eAsAAQT1AQAABBQAAABdzcFvgjAUx/F7/4q3i5Ed1hYExGQHMzExmm2RZhxNsY9IYikprXH/
/ebwMLn+Pt+XtyyKfC82H++wXm52+WoBncVLY3wPT68wOXprsXWEfpmz19jTlXSS5mVBS6y2jaPC
mPPv6nW3x1ahFRaRankcTS9aTzlLowAWcDGNAutbcbIo1TQgHADYlXM2T5QMGZRi/WZlfyLhAAyr
NK5Z8nAU/TOs+M0+3YC3B88Bmf0VaV3XWRhmSZYpOHRDcqiM+ibxKOByFCQPwSyKOdy5d9I68gNQ
SwMECgAAAAAAbz6DSwAAAAAAAAAAAAAAAB8AHABhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFu
Z2UvVVQJAAOBHSRarh0kWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACGPoNLpxN2MTk4AAAevAAA
UwAcAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1ZS1jaGFuZ2UtdXNlci1pbmZv
LWNvbnRlbnRlZGl0YWJsZS1jcmFzaC1sb2cudHh0VVQJAAOsHSRaMh0kWnV4CwABBPUBAAAEFAAA
AORbbXObyJb+vPwKPt2yJ4Pc73SrslMFDcz1Tl5csZOZrVtTKgQtm40sNAg58f76PQ2SDAg7djZ3
a6uuMhUxdHPOc97PaZSLqszMZjN1+59oe7v+YFa5qa4qY9x/EMal+NO5SOub4Vb4nH0ql9tbszn7
9P7Nx7fx2U9n/eed89ys6mJRmGr6OBfnk6k2RbkaMkCOLnPjXt2vTX/pDyk8wdyTd2ld3JlTQFcB
G/diINLFfX1TrloZ+J/OB7NZl6tNMV/2yD0i8ceNqdzzaIiJI+w4UVqbs6vidgCLIOx7mHiIusif
MjUlZIIZcT0kEXLeX7pjcr5NMxeW/nAxmmA8Ee4J5r9iHxF6CojXZVUfPYaxE6zK1f1tud24Hz92
QAotZRwkkadIzD0/5pEXKEAU6yTBCBESU+E4joXuBl/Sz8a9LFaZccOyrKcuZgi5G5OVq3zjOJf3
m9rcuuer2lxXRX1v1VubrG6QmFUKaswdR1fp5sbk7tVNZdL8AEQ6Tvw1M2u7u2/A+A89C4NoFmgd
X166J5fnv17Gv3467ey3Vj9Y8bf4w7vZ+btPwZtzeCiKPtin0tpFX9HuM5+n+dyYRYfCO0Da46jf
f7i4jGfv3l+dJ//pOJ/euh/MNezcuO9MWgGxPZGp43m/uI59bja7iv+4OvL5HVeM0kXG4cI73Jij
lMCF+w+QX7Lf/nQr7+tZ9eWre/n23/X730fCxXF+XZbzdOleVak1w3axAK87qcwdmNy42U1Vrspl
eV1ksGdnmdOpw/yJolJQZPHo5J2pv5TV5yOk/9bqyF8sFgpJQXhqXA1mqovVtZubRbpd1m5Wlp8L
427qskqvjfulqG/cdRtIZ/PtKl8atzgE8XdzZsJNLDvLuQALJ3+/urrQDevLHecNrC1NXa4OTOjL
mNCc95i8u3yKidN6rIumUzcqNuu0zm7cv7ZmC46TlbeTdL1emsltWqy8utnpWJmXxXzTxMXss6lW
ZjnJ7+HWGCLjozn4CHjRxtx+SYt6timuV2DGVxDpDu7RWrccesS6tAhR0pe+u9s3+68SxHvlMsYc
cpzBxtW0c1nDGAhdm03dyv+QoN+m65PTBp1yT/okJ7e3U7jNTx36UnZ0nnE37z1xUqzqn8G3Ie7A
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
a8IwFMfxe/6Kt8uwOyxJq5UIHkQryMY2bFiPkjYvWDBNSRPZ/vvN6WH2+vt8H29VlsVe7t7fYLva
vRabBfQez62LAzws4bGJ3mMXCP10p2hxoBsVFC2qklZYv7SBSudOv2u0/R47jV56RGpVM5qerZ1w
Ns8SWMDZtRp87OTRo9KThHAAYF+cNQ1mKmVQye3aq+FI0hsog8Kw/O4o+2dY84t9hCteHjwlZPpX
zI0xIk1FLoSGQ39NDrXT32Q2CrgaBfldMM1mHG48BOUD+QFQSwMEFAACAAgAhj6DS2isqbdAOAAA
F70AAEwAHABhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXIt
aW5mby10ZXh0YXJlYS1jcmFzaC1sb2cudHh0VVQJAAOsHSRaVh0kWnV4CwABBPUBAAAEFAAAAORb
62/bxpb/vPwr+OnCbkp53g8jW4Ackr25zcOInbSLohAoahRzI4sqRSXx/vV7hpRkkqIdO81dLFCl
iFTN8JzfeZ8zo1xUZW43m3O//4q3N+u3djW31VVlrf87YYLiP7yLrL4eboXX2ftyub2xm7P3b16+
e5Wc/XDWf957MberulgUtjq/n4v33labolwNGSDPlHPrX92ubX/pNyUCwfyT11ldfLKngK4CNv7F
QKSL2/q6XDkZuOJ/eG/tZl2uNsVs2SN3j8TvNrbyX8RDTBxhz4uz2p5dFTcDWARhGWASIOojec7R
OUYTgpEfIIWQ9+bSH5PzVZb7sPSbD5sxngj/BPOfsUSEngLidVnVR49h7IWrcnV7U243/rt3HZDC
KJWEaRxokvBAJjwOQg2IEpOmGCFCEio8z3PQ/fBz9tH6l8Uqt35UlvW5jzlC/sbm5Wq+8bzL201t
b/wXq9p+qIr61qm3tnndILGrDNQ49zxTZZtrO/evriubzQ9AlOclX3K7drv7Bkx+M9MojKehMcnl
pX9y+eLny+Tn96ed/c7qByv+krx9PX3x+n348gU8FMdv3VNZ7aMvaPeazbL5zNpFh8JrQNrjaN68
vbhMpq/fXL1I/8vz3r/y39oPsHPjv7ZZBcT2RM69IPjJ99xz0+lV8tvVkc/vuGJEFM3hQ3D3hcYa
Pvi/g/yK/fKHXwVfzqrPX/zLV/9p3vw6Ei6e9/OynGVL/6rKnBm2iwV43UllP4HJrZ9fV+WqXJYf
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
dx0f/8gdHJSjZjht957O0B+a5pf27XF8/tMpcHeXu1t3mn1Gm+FkVE7gnqtr97Y4fZNM35q7u3dX
P/9U5DCjJ6Pcg73fPGaK99wWf789TRru36W0ffr5KrzPT1InJWvT9hSl6Oj7Xz9meWmvW9NzL2qe
qidMRRnjqDWl7X8nCW/f30aJfOpjdTMFJCP7e/5v8gTCaZtMhHoC7ElrJEe85+LfUEsDBBQAAgAI
AFg+g0thGqHl0QAAAD0BAAA+ABwAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtl
ci1wcmV2aW91cy1uZXh0LXN0ZGVyci50eHRVVAkAA1cdJFpXHSRadXgLAAEE9QEAAAQUAAAAXc1B
b4JAEIbh+/6K6aWRHrosIGRNPBjFxLRpG9mUoxlgiCQuS5Zd0/771uqhcv2edzKrosj3avf+BtvV
7jXfLGCwdO6MH+FhCY+1t5Z6x/inOXlNI9+gQ56XBS+peukcV8acflevhz31DVllibjGejI9az0T
YRYHsICz6RqwvldHS9jMAiYAIPwSYZ2gxCiEUm3XFscji26AGVIbpndH8T+jSlzsw13x8uApYMlf
kbVtK6NIplI2cBiuyaEyzTebTwKBkyC9C5J4LuDGo0Pr2A9QSwMEFAACAAgAhj6DS5qCP+87OAAA
JrwAAEoAHABhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXJhbmdlLXN0YWxl
LW5vZGUtY3Jhc2gtY3Jhc2gtbG9nLnR4dFVUCQADrB0kWoEdJFp1eAsAAQT1AQAABBQAAADkW1tv
28iSfl79Cj4d2JOh3PeLkB2AbJJzvJMbYiczi4OBQJGtmBtZ1FBUEu+v32pSkkmKduJszmKBowwi
jbpZ9dW9qlt5U5WZ3W5nXv8V7W43b+06t9V1Za33D8IE1X9O3qT1zXArvC7el6vdrd1evH/94t3L
+OKni/7zk8vcrutiWdhq9jCXyXtbbYtyPWSAJqbMrXd9t7H9pT+U8AXzzl6ldfHJngO6Cth4bwYi
vbmrb8q1k4Er9efkrd1uyvW2WKx65B6Q+N3WVt5lNMTEEZ5MorS2F9fF7QAWQVj6mPiIekjOOJox
OeUCeT5SCE1eX3ljcr5MMw+W/vAwmmI8Fd4Z5r9iiQg9B8SbsqpPHsN4EqzL9d1tudt67951QAqj
VBwkka9JzH0Z88gPNCCKTZJghAiJqZhMJg66F3xOP1rvqlhn1gvLsp55mCPkbW1WrvPtZHJ1t63t
rXe5ru2HqqjvnHprm9UNErtOQY35ZGKqdHtjc+/6prJpfgQiJ5P4S2Y3bnffgPEfZh4G0TwwJr66
8s6uLn+9in99f97Z76x+tOJv8dtX88tX74MXl/BQFL11T6W1h76g/WuxSPOFtcsOhVeAtMfRvH77
5iqev3p9fZn852Ty/qX31n6AnVvvlU0rIHYgMpv4/i/exD03n1/Hf1yf+PyeK0ZSSgsf/PsvFF/A
B+8fnqcU++1Pr/K/XFSfv3hXL//dvP59JFwmk19X5SJdeddV6sywWy7B684q+wlMbr3spirX5ar8
UGSwZ2+Z89kEK8aEZAxRMcVaUc09k7yy9eey+niC999aTcnlcqmREoSn1jNgrLpYf/Byu0x3q9rL
yvJjYb1tXVbpB+t9Luobb9OG08Vit85X1iuOoXzKXz+FPxNe4pg6/gVYO/n79fUb0wC42vPfwtrK
1uV6yIoh8gRWNOc9Vq+uHmM1aX3YQ7OZFxXbTVpnN95fO7sDV8rK22m62azs9DYt1n7d7Jwg4Lkq
FtsmUuYfbbW2q2l+B1+NIbISLTBKwa+29vZzWtTzbfFhDYZ9BrE/wT1am5ZDj1iXFiFaSSW9/b75
f5Ug3jOPMTYhpzltXE17J9Y5A6Fru61b+e9T9st0c3beoNPeWZ/k9PZ2Bl/z8wl9KrtskXEv7z1x
Vqzrn8HbIRLBxbf1Tz85tpTLUbZE6fMJeyrb5WKRD554CaYcZ40JH2XNMDqf8KexVjhLLfGc3zih
2JCwQ+GIU3Y+Ea0TgNX7ph93ccoWgoPttnUKVQJQH10Yz77DNzmgnM9dYP3V7K9svavW3+mdgkvl
HTbOP//VfmhUq2jjo08ixyjDrZw9WvQoMXk0aJ1O94v+bbqGuK++Q0GQK72PkJrX9fyvcttTzIH6
iNU6VJTVLMWCe/PD/vnth2perD+VUIqfeQSLg2q+naDOs3xA8KggTo4Kov9yLsH+5STm3yExtD0C
JN5s79bgPdknV5i+U1wpSUdc16zM99SkkAdxs2fPpng8uXXIpQgtuSO3rfPZbD7Hs5mjV7jubv4p
rQrXfrqFvJzX0M22nM7ud+/WBWSB+arMPj6///Z2V9svv/zt5y7ZpseazRyV+QbKaP38dHGvg8yR
G3s431Wpg/Z8VUKn4f7q7mrWnuPVz6DVw2v1iwd/2lojmiJ6n63+I/2UXmVVsalNWdnTkqI50wjr
Lo5Pc/CLGsaBx/XVdB3Lsnoazv+NWr9TM00t/lvTBTCEvbP5vOExX6RbO6OKtw3Ak1Sm8HL5vSrb
QUe0GvOLGjz97sf7xT/Pkf9JgDsGY1IP7cVZ2zU9yV7SLp/u4vN0ffeAzbqKXNymK/gwm71s9Dim
if9j0w4Q/b+0LFfQFY/ECMGybV2fZF+OLPWOYl9lKTRW0JeBmE39eLtbvyjL/QCiiBznTNT5RD6V
M4ME8gjneF1Xd2+cms9ONzXjAYGMdPxmmm02MBmQ84l6KhChBfE+lUX+U8cU8337Nof5+8tdx9L1
Dsg+d9u9s5/OR7H9PCLWT87pGiZNdGLlonO5WzcnOemqDVGGIaXqJ/c3Wuf3BX9R5ndNP4InGD2Z
Ek7vKR0HGqEmGD+5S+LYGxK675HErDsYvLp69/aFKdfr9mDrRZnm3zMasKV0E55rv7cf5nWVbsZa
qG8hRBf0SMiFHG/6pnvAzpeScrfOm2A+HQiyJcowZtDRmWQfQle2+lRkMGdmN2/KRh0Ek0HL8Q1k
FzzPumThrdEsF4Na/A20YCBWXpfS1cZmxbLIHDgtBsVi7MBncNTDU9cL/2NgzrPWnufevLLbcldl
1n3hWM7+bGKBDNLWEPYJJ5qJjDntvrpq/Wne+th83uoCN9noxwSR8n5YEGnvxwaR9Pbnvu3A8YSk
xzRNIZn/fp00FFyDB+1CsN3ayql922RTIul5EztPOeFJyRIJr9qtW4xN4ZBo/ODK0SdPpm8X2NF/
0+rlPqdi+QAX3R6P/Rh3YD/OHfgPd4dsfw3QHBz/ocT+PsC7gpbNemeC+YuiPp9NPK9Kv8xGDu9h
YXFckM0SJdSdpntV9tAT+f2C2q+6mxa3UgxpkZxDQFXbokML/DHNc2XdwmJz8oRdOO7b0QV3Q1Cp
Lq72xVw8VPr4CChQplmOsHW0MHILy8HLLeATUoQJJwkmJyuqfYQOFwRHC7fATmE1esS8J3vj0mmj
rmLT18o+Sr1quRrQwohAlIG9yZhNgNbkxf66wrx5117BYD6Jq6qsmnud/a3M8VExuXbV8tXudnG4
I8RsMpmExTqt7rzL2/SD3c4mh7uXL8drF8/3ul8qnjpNPhtE9Bk6954LgnEQhcKPWEB9GlPkq4hp
H8UyoAkyhNLwl6/fZXbZaT2CAb4Ea3vPIIx+twuXAK/ttr66KW73sdWg0YKpxAjjBziKfKoT40Mb
mPjKxEDDCBEjNIbmIap9XCk+xbVY0DFcu427XexCw0rSiCWJzwQBaJJhX3EEn0xkEkUpldR8A7Qu
4R66ZZ6doNOpxg7dw0XkTCD+DB6CtymeYvEMkMYSEUON8oMkZmBSFfoKx7EfhhENlCahMGQMaZ/0
dFmlt9Z1Fhf7O9btRTDY0xUgo+JUgFxiOxAAlPFbUY8CT1AUYK0DXyIhQMUJ8jWPuR8FKghNRLUx
wRjwluQ44HatC3S5TPMhUAefLZe08YPPdlHVWdf2caxMEIeRL1BEfBqpyA8JFb4xcRAYQnjAHrJ9
l1gHBcacsxMUXJPFqboeNDQEqKahhmANo8CnPAj9gBLuGxIFMtBcC/qQvh628H6xizVfZugEq6WW
Oo2dmPaF/ZBmd+OeyaQKBdHgihj0aAT3lYyUnzApRagjkQj8sIFbwo+Zud0xaSG68iIyyPv30I9f
KpkyULO7S/LOqEBTQgCeUbGUiYh8EyvwP8MhcLgUPuGKBZDBQo5jgLfbVs6yF+7pDi8FzcliyEu5
ZNiUsXs1NXnbpJt65+yqp+4J+NsZ1MQmQaH0ZaRBPwEhfgi68WOVBFHCDKdSAYD21wcXL4pFBXXg
IjkoZHth0mpRrsdV1NnWRTC+ubujK2OKCT6RMWVYDGT8++V1Wa4W5RfvjDjzwwMKyanTMhUMU8O4
T0WQ+JTFia8Niv0Eq5DiCMdc8B8h5BHC+M7jck88RtCIeJQOxHMREq52ti5L6OnOcGND7DycMxPo
gPgBN+BCyHAf3Dr2FZMkCgNNZeNCjwjXpTyOvLelj56yMfTwvmiaWsjc1q7fWjf4HfIbI2LKnF2w
SIzUEfYZl64T0JB9GU98E4IfRhwrnkQd7x8l10WzoJKfoFnQjA0yXLmx62zl/EQ2amzeAQ8PICEG
oEqtkfRpKCBtaGlAlTwSrvuF8vuoKl8DYfNiXIftWh9uNgKX7RPy/USwbsftg/q4olOOps72IYe8
G4LuNIkMVIlAAuCE+SEkgUgIxrjBHQW29C4eoNyDxlI8Ai3NB1653Vib3Uy3d+v6xm6L7b3ogHPK
ppgAifYDwJU4ChAKlc9jUDIlArKdwsznOgoJ55gkX4nDAJhCN+tG0/0xyvarQXnVQLw6RdjdP9g0
UIUdUUWWD5zqSHfqUFqFoM2FON0HKiSxKWVNNgqTUIWhQX4kCHg9EhRKOxQnyaCwglJiCIlTLbyp
ik8wvA2U0bIZl+l+vScOJ+pUHJ6pgWVf2jrN0zoFEdA+TLQkIANIQBS0IAwSKFYY8ilW0D2TmPqY
Qq+XBHFkaPTVlPPNBjwgGd94WO3JKPSIyRQb5oF0lxfltN7n7MD937GGQAWhznDw5iqIRLHmIcwG
HEYFChOCr4QxPgowM4kIEEj+uOd2iD9grs6OSR83HxNGDoT5ssmmx7NF95uKW/cjzE6hCBmYiyjm
R1wpV+oh29IEnI8lgVIkNDp4vNSfUH8globb+tKI9FQajdOB+y3S7ONu000nGLyQNRaBd9e6U8Ri
Vzy0xtCKSh3D4MYhYyeKG8pDppD6ljAKB5y6orRrkz7UxQh+gQ85O93V5SFTYyXchKl1LDCCMQ7D
cEkJDL1BZAJIggYxHQoeJWG/yt3T6LMWZIy1PLC+scVtnq78dLvGx1rL6ZS5n7ICEOiZiDs28VUQ
QKfAYeJRHLxAwJjLE5EEKEr6QE4pDgCNpBKtyQFQ9uxZuigOUChqDRcRFiMRJr7gxLXkLPDDCBkf
Y8NIGLBIxaoPo0unByDNxSkAm9qlPemdgncGCj5mU9SW/PaT8yOFDNZgD2EiBOmYQ/mHActHRKmA
cGmM+SY/2jN5uIGCxR74JRvR3jJdNJEAkgbvkyYnHL1J4KZ+4ECrKITAZRqFbmYNofyrwA9CHFMR
i5hHj2dfIHw8WB+H+3Z/Pr+9OMHRF2Fxqv8MkXxp2+4vA7Gz6m5zHxKU8kPzEtEYaaOoL0MN+SiG
KA6ZhMaVQFaF0ZIqqUeblyHVLqSMoOwUEtTAZnCEzbv152KdH+HwqUvviYghX8DczyI3JXLttMmZ
b7RTbwiNKaOjULrU+jAwGYPBD6HR3MpcmTS7sUf7Yj3lrrpCLYkkjNehgkGFAjI/CGBuScI4ihE2
UdycSTzehf76QBfabi9ay56AGIgwYlxCyaA7bW84D0II2aQb10xL0KgKiZ8oDGmPwXCiQgxeywXB
FBMppHqsN+3S7eOi9BQXY+gQN0W2cx4yDY4NM8dT95/TbUQFQAHzKumKRqD9gELDbGhMMRIGkjPt
554BtR4SmZ02yZm0dFCZr25A4+sPkIwZTKZ0KuCJw0cXB1FEFCQ/X8QG4pkk0FvEMfaFDhP3m7WQ
Bd+UgPZsHijK7WIPvhozsCLZwcAvirVNq2D1wQLLey8VpElDSQKTZxyBXyIBbmpQAC0R5HLQrgzD
JGIh+UoayjK7shUI8dUW8JPNgMD4tnGgfUEVGxFUZU2Z6Ny8rNJ6WVbH42HJnC87WYkONOIQjUJK
GAwNpZClQqichkLrZFgYYP6YL/cp97GNtKrQjA9PcJpm/n2QdMcrNKXteOU+uPqe8ISbSPiCurbc
aAmJAzpVGSVYhxH0G5h/82DxPnhkqngf9GVYjsSBRkdHMm+Tq11RHzNdM0QgqUJmIuWLAOYHGINg
doXy7yMIQhQGIcwYg1Dsk+khyBfLUwR5Rg45YbuBNL273Ry9WMt2gFYijqHI+xCPGmIvdhO/O2vF
JEwSyAaSDnqzPqU+iIyOgVCDdOCy7utNXdwW/93ebXd69EATDuNT7EuY0iD3xzAhR4j7VOEoYoJC
6tPf2ox0eTzclXR39aVZjlQwS21zstM9djsMck4O0jgkb655Qilg5DC+SXjg8j/zlTubiJNImoBG
2Ojohw/792geOoI7rE/6Yi3HZF0Oz+CaY0D3T8KaQYRLEFNB7xAJRHyumTvDAjcKpIapCpIEjonB
6muz8CNni+1aHyof6W+sOs4fb6ACHJyciWZQEiKA3CV8mJaoO/0M/UBzyGXUJCxmUBIlfhRhczJ7
+fobWsUj8z5kdepJOVmqkRPOzi8+zsRUOy0TrtvxJVSIi9AdM3AMdRIh6mtwIsjJBJkERikqw6+e
Onyt8+3v6YqR0/S0XOaMDSfXziEt1I+22Lv3ZXPeH6EkhGQJRdMlvYQ5GcBleIijJELUmPjxc4TL
1185qu1s6KFn3Suo+y/t4aC2srflJ7ssVscszZoujpM4oTBbYxZB5RMUpmwEUzZ0cTwwJFGaxaOV
b0ivDyY7PQTI+b477nvES5sX6eVrqMaINmmSSd1kShxKLsGrYX6LoZMTga/D/+HtSrojuY30nb9E
F3CwL0esco+lccs90vjmV6tUIzYps9geSb/eEchaEpmo5Y35dHHTVSkgAhmI+GItYYiTJpjAAlhC
c1MaDotfFoXDAw3xirsO8dzNxHn1skApZpiKqNkeS40B3BlI4oLB21cMbqLD6yjgrnIR1Y2bWNe8
RC181dC5oB15XdBzaL5u8xhO6oJzIHYA71qq4nmIxFIE75wr4jxcPQuGGVxiGbL0k8h8s1pLiKYd
Qsw0gDogi49jjIOJHF4D9IPrazAjD+oWXKMI5tEmCS4jWBdTeNEWMA7o5PsRzserEOdjg3HWKz2P
+6zXXB717j+/3e1PXpDSorobpTjQfeBImupueG2Jl8USqxzIKHi5NOY/CCOP6Gv4Wnf5MvqInMCR
PMlHFQ1Dk2IaFBeVHv06UGa2MJBkXSLoaqv4jVDo3e7pcesxvRuzmN++jbW8Y0zq5T2hKyPYI1OP
nJrKRPRJetBoxWIMBcCnlxgQtSGDH8gjF/Q+7XFDdzy0ZIoe7YtTvOzl8y+gMF//fq4D0bzqOpFj
0Y4U5QDYW5/B1aKOgKYDxaHApMR0IVIyWXBCzrJDzmKKer7Fjt23ly+rn46lJKOorKCHJM/wB7qz
JQuNjrXMVoLqcOD3CxUAboCT68DPFY7ec0evbNvE/6ePtSwuaYfFpTxK9y+Lz4/8eNYcYWssMaG3
RKwJaKF5wNKBCG4tF9lmpQqbaL7RGpO9VW/vU7j2rwuQj+fVZgrXUnZecUacsCCfXoJfJCkGJSNl
zuYYknwnuNZSMCG+JxvL1cmhGhzb/Wa1e969NScoOKg2GzVJEQWgyILqGnADcBWkiSLrcM1Zbtac
EDXHMBtH+cSQYLxmf3QDMPCxWRe4Bd/s9m9AoqxZBPgHFTRL3CdjAgHDDDeLK0E8d+BvJeoF95Zx
Ft8vk9XScjlQc36mYd+xjkA59Miad7J73p7CrdIYDLdWufLgXHKdiJapAiZwVDS639EHL4MpRaZr
r+W8bEuU5B2i9PZI1KRz9itFWY0QVjRspAODYYhmHs/cJAKeiidapRhtFKk43iWpXbSlZzN35Tbr
LTvS843/6OOfZ9EsybmwGfAEuK1gqV2iBAMA4GZITyO3hjPxR0WzRhQ2rG30XPy3bG21GhTKy/J/
V+eop7Z4GZNSSQHuJKyEjMknAHKMKiIBzvuStY3ctOpsvMp4+y3Xc89zy7duEkU7gSBGLX/UA56k
hUaTE7xkuK4AGjgA9cgSybwACAqAGeLVAFoHuWyN7RyHARW1Ek18+hR1Ar4RhHsAt0nVmgmspeRg
TH3xpHAbIvg3QitzNS7dIcV2PNxtNezD0XxbhfWUlOMVgijwxyPcQgCD8GZswJpTj245IJEYnTbZ
tW+mWaXdf73t7L/edoKIk4gKqAiLTpVFmJGSMkl48PU4Jh6KgjsAGiL7mCwHzGetfJ+ITefBhh+3
7pynW68m/PzX5s1/QUdbV4inaz4vaQcGKBeihESw5DCcDvzwELyJ8KqTkffgj8PifQYOX06I7sjj
grGOU/vDbr15QWSKZw+gqCahmPdcgltLYqh2UwPy0KCqGZNOKsm1dLdtUV35MiatXzdUb9dzPA0f
LidH/Wmzwnrx/3mF/4szceSQRdXsGCJnxYL5dIwo5y0RQRRwxeF/EtgYbqQWxvK7shjNRpcqDMbP
TNjpKKnthk3YSbv9z/51uXt7PQSb+KMZCsFQQ0SAKUV6QgvW3kq4EQ6Lm51WzMiiC5fl6ouYrN5n
YvJQy8WG97iQk9Tb6uV5u/vx0El6VC6W8mpgUaRcBoOPSTdjA7g5GVCYpS4QxbmVOgQw3vyq2p1v
MKHTTOl0WGEwEfmPm1fMfiDU9M+Lp9/2u/046O1iltbkSJIA+RHUKoQBnGhwyxi4ldywu0Sns03/
6DsPPrQcsA5bi+md+C6BUTl6P7xauawEs5SAC4x4hkniWTakWJ4yS+BYZvbuIe/vUv+R71LL02I1
50lIPXlVAL6/1PFiXw01X8oIYdCK48UIKWXvACjHjGX+KnDihcHoBjcarAdYC3GjgmhY/eK1rt8+
tCS6Dt2aTq7CYv90svP8VB8pQStlxgphAWs7CiCO4OE6e8+UATzirHfX5P+0akuS64iH3qiJeFyI
ZQ+pOsNjoZmSrMGZx7QOePSAzax0hXEKuDjzqyd5PY4d/6Mbw3bUqI4UGDOtpf7z5nW5eX3Zo3wf
bykDpSgloJSskGSwqXCMSgOE40lwQwvP18vHjov2X/7x25bceZwYPlzzOQ4on44oQFYUYCVAXRBv
wmUU6MaDA50jEg/nzGj2rFw/4LrmReNfPrV0rkWPTnHEf583b4unOhll/7Y4ZyE1pY/gnA1loSkD
UQyAsfEqIfqC85V4wzKITQzwYbgre/v1x+/jIewzIv8SEQ0bVm3mbCxmgn1uAP7KoGaA/8AcNITK
VjEJ14wKrOguBiPc0gKypcCeN0zTG5X2x7UvYJjj1w3dS9YRk9V6cYx0h2/8p5nHF2TkzHJNVA4C
O0NANxg4+egB5+rMg/b6D/L4zvQ1bK3mKMDRNeOTHphaW/ZD/FPCmgA7aG0LkjWIlfS+BBZBXRsK
uIwWcPsjuDuOKi0F6CEq493lbbjLlQI3/HrMAVtvZ5DYsQ0/JSv/82P+ehL+YoUBGOCWGHAViWCR
AqksEuoyxjnBV7xRpXp/+Ou8e0P0xi06RC/cJPH9zeL5xzGaGewlO7QSMJs43GYBBhIAgIBbQZxB
SGmzSoDmqTTvX+o+JulCfH30RMv0osf0kh+v0MEgrp/3+/U5Nq0QGcia2WLWOSzjw7IYwXQkQUUF
PpjFOjDAceJqcGm0bkvWUvTIskcBwtkMp2CXNapafYHXWoKMK1sYxnJA/3AAlazguEuALqD/u8SM
VptQMccgbMvM1EeqC8UxZq515EPVMpO13crn5AEXFu8rIMEEltEkZenAYIEltTcQ1HyPC2Bq/uBD
S77t8XQ62S/Pp0AOd7VKDZxqJw2JxgC2FcEC5ZoRLTIoUA2o8MKhnhaabN87UtPLAH983ax3q2ml
jOXgfKJXoxUF9c2Nx845TsBRLvCH0ombe/XaeYfLyu38TMuH0R0+Zibz02bxuvqpdqGCx3zQFANS
KQw9ZqzIx7pEoUFkfbSZ5MCCsNGlEsQ7hqCPhFyC4Ievx0xy7ua3ED5cTTB4O7ngKyYsppNlbfku
kYvgCAOUAzeSWdCLFKO9NkenPAUzdLV+brxyS9qiQ5pwJ7316+cnPsrwuEemauytuCwUiAyV2DMH
wmyDFkQp8IgNB4RrYht7G6/z0O7VJWB1rDc+dlq9vO22v52OBmPyhypoaUPKQhJaTB5kwNMCLpYy
NgtQqSbGqy1co4VbwuapL/zwVBIXv/4bToI+B4ydqQ2hTmDpsieBA24TLhdiPeZIGUvWspCF4TfF
8evXxS8/7Vb7O4zwhIyGBannl4vLrViv54UDaMybbhc4zhRSIKhVsUreEDhnSbJPElikyXh3d6lA
RQqXawXw65bwrZwTrlQvSX26uX/5dI7JAv4Z2o+GPxDGgZ61qmgMKACWi2Azgg+eGJ1ZUiCvQpX3
0xJnWi70Mn7qhG2Rw85dMGw1UeozhIZu5sHRlDXhnRU3iXusy8ZAilCZ+JDBggvugmY8aeX+/yDw
8GVDupknN/DDaQT9w18+fXnd4nBwTG+AQqi2ffirzkHwWkRQbLxge3yIGuuRwBsyGftcGFwieqO8
67D+peKuw9cN7U7No3B8aXp1p5X12pU4GCGhNfoJePGN4Qy8TEXQPcYUjSIWFCkoomSiQpfZ3y6v
q+tfNqL164eWzM65L+2pmH817pAwqLtxdqT32RHuAyBrhaVJGNj0HJS21NZK2c/frLp9Drgb65Fw
qhGocfNv49MOO94mvRpKgyIBv4QYipUZVIC3oqMjhUtXYjDJ6/R+vRotFRMm1JyJzWy2A66Shq5O
XlMmcsg9eO68kg7gHNMOtCUPCJlB9QNcphGL+aO8+fLTxSbN47cNyRsxKzGotmfiZzWKayiIHcZT
MCZ0rQ4b/qjdHcGX6GorFza4YbiPFVknPjAPr0JL+n5K8kzLteLd02SLM4dzcROciSOY2q1env95
hiyy5u4pYCQPeAWcBHg9WgNeKZyCmJkYkuc6THOFzSrN/mBV5/uDr90poviyqyV4Bz1Rqy4plYVq
hSeMkxQUGiRwYqIOAnzaZL2i96Lu7z9cFpbvPzQ0i2XnzMTydGb/+LJ4XTy/7Z435ywI3s4AMhBy
JHBM2LUrQKXxAj45cBDBhIKO62edp+tNiJEdYran1q6vv/l+UjIXAWwoxzQOO4oY2sMqE/CiAgfV
w3RwLob3Kpn7vkfxtvPKa8PUJK6H+6Td62b19vL6W+38rsWrzNXIDCtOaXSxVEbf1SXimGFEZRuV
9hm8Q3uTi9Pqt69XueP5yUMN17ITO8AZ/UfXYDTW/zyQBRzw6MEXJ4oCdhSyVl+BgKN0g8NgWSn9
QMZ5tYYIRTvCoug04I4/KvK8HwrYmtRY4AV8lUAyEAYYXBQSjLMk8aC1CaDm7gsK1/VvHvmYigvB
ytETLZ/beegYLugU+tWayFGP/bwyUwufRAHLHjx2K8Dxgf/hHFgisK4C7Gos18Oy4y0ujQw4P/HQ
0rvuMOFOMZH//lDKJFxpQ5Cc5kBkKPiCnMQ5TYZQUDCR5hTtu4Urz7u3RDvXIXo59TVw5sm+jtGq
rYgYp6xXW7tqOj1V3BmuSZEKC2LhxJ23nkjlc5DBuuDle4zIwev66UjG5UEpp0daVns3erk6pcV/
P5fYYK/0YUaKyPiOCpHgTxPBrSGu4BQ1ajNYLEmNn/j6v3dqbHAf1dl8rSdBkDf86aBzPSTDEEit
7gjCSGo1uAZYV6rhr8BiwYFeLIP7ZmW4GiEdrduQtVId01jrHZokwXdg0d5+PwCnQatLVO8ow5Im
K7IEEFsiw0wImCesFisiKWcFs0Vev3LnxS+kok/fj0nHXxGakQ4fykk94xJnaO9PL7aWbXIpk0uK
FO1xDFkIJAhqiNVWschBXvPVcrLxki1J894O/HB9qob/MFMAUQTwOzCrwrCcLIPL55QlujhvNKaZ
tXgnBXDavCVZyg7JUh1Jflo8/7hbj5o8asVFBBiXwHaDZ3cYdBQB7ucsvGIlUdvUhUxWabZXbu58
Krai8+aOYQbfkAiHt/woTZ3iIQFX6ExSwmpnmUDdR4C3UYPp41RlyW52CV6IZsbDdw8tZaxD7lrP
K+Xiy/PbAhBgr9ipAGk485CwSAEKhYQjo6Qg0WSjQCCkZPbO4NJpm4vxpdMTLSPr3rlv6XZz7iV4
3ez3o8ogbuu4C1EkB1FlDNPMUhniHVwiwMlBUUO9oJOO19lKDR1yOU9Swofro1r8+dcRyuLSPhpW
QyUiRmcSBeljYD2F4AL7tywpjkflUUBFPyR8XrClY92hQ+EkvEYPrjf7n99eftmPelZRQQ8ZmkFT
C68d1QmcGowLC7wmQVlHqNQ6g0AC9LorcpiGrY7+JD5woRJs/uCYNU07MW5Nl6fqgk+/LF73m26S
WxfwOzwFR55iAYyViVjAVCRQoaLMiYXwRzXpT6lsWGRmHgvQnE274HfPPzcjgWjVJpwNiWOjYxEa
qw7QR8YEVQQkFpWkHtRMEOJ9Jhk+X6hNgC8eWvJXPZ6m5fpNt8KpPX2oqQyiKF8iKSViSUgMxAbn
wQETFjzyEjhN18v3pku3BC7nOV+thZ1cmVozeh2zRxNBO+LgPq2I8IXhL14awrSPHtuLc7kOHsdb
9A93/ETDhO2EBvDDK6H2Xnw9A2DXptay4ZAmH0Et6pywf8kwkB9QS/9uFm78RMvCaq66tJuNgBgG
+v76hlNr+FDq5OSQz8qaRaPAgHrKQKNaHGMrKJatylRcTIyb282wuPZlyvHbh5bAzsEvqJ3VqL5u
3p5Okm3rOCqkOTqafAaND6iY44ADHMFsFeFeexvgXWhubwn3aeGGsoWWHcq0m024AzcQ9RuYtuXu
qRY9DtJtMOEdFZxqkIowp7HzmWI9FjZts8wED87ZwG87os36V9zR5rkJN51bulSrcw0Nn3aQZeYE
trGghgB0ogCSJrBiNHhfcpY6qvcroemEGPVytZ2TvKLTiXV/3Xx+edv8sNv83/lmDoLNaPXcOE6H
BGhtY8lYThtJwAJEphS8YeG4EuIeQzzf5xJn0+ceWgZsj6tpiP2nzdMvKEiiogqJE36ESh48TQtv
IOJ4Kc+ITSaC5DtQO6nIot/Fuf4TbH1h7gV80zIznwLpzMZuOjrnmMxFpmrFIo6CPNT7WZ4M/hws
5tBxTHXEqn8mibU5KgPKX8f0b2aLx0+MWbCUz0NOlgt3tK/lZf/09/Vvz4vPu3NPkn7keEVUcSkA
8QRTG0Q4xYlVgpGYKafFiZzkJKA+X+2h3XfRI2Z+np8/vzx/XDxvnoZ5KXU+hNO1UC+bWlqrFNYj
GqzRCyljOIlJ45PnN0ZD3CkkYxIunfj5iQmT2w6TemprP6zG/UXa1kAT/lND4TmnAE5yUQIOPuBV
4IC1uQg4FCZZJ+8C1+M9LsCxVbe5yAH+7ciNYOeO9/K3oQlzEsXnvBiLTeIJwA2q1UKCt6BbmfVC
cutKfKdc34SClvqOu2/FatXDO799Xr4ciwhrq8JQGioPr4J55m0CTOkxCOA5vAqNo3piBv/W06yN
vzeX02x1Bf6MH2vYcp1kIMiCnOUvUTSHpq+DVz5Mbg6gDwC6Yj0EmOiARiNwScCTC2i18ScT7uPl
uP61qzFp/UJCVYd6a2bR77fFE06HqLce/0HjQBWzhqFJwFiCUQ7bE4B+SpPAH5DXTtzAGbDq5eG4
Tw2lGzb3JfHDI5p4Wnx5PjfrGq0ezRBGdTph6zaOZ8yg6Z0HuTHgWAbBjKeCZqv7vsh4xZYUOS9Q
slt1irXt/wFYaCNO0QvQ3XV8aMSwJHgX4NiinpRgcsDUEK2dM9xhq+J0ZNd4oYaErflXcdfW3DaO
rN/9K/SyVTO1hy7cL6maBwAkPd7ESSp2Znb3xSVLlKMaW0pJcnYyv367QYkieJG9O649erAlXoBu
Amx0N7q/HngaMVtMP5M3ee5uruGV0hj8zm2dTB7Bj3NQYUF4h30pkUK5TBcBxtI7Tbx99ZhfoGPE
c3ST5ChYLBbT5dUSTADi++VytftU3S+3u00rTk3WuwOa5LAiYrhFiRBSucP0XZuVwlss8lNYRf93
nCUaaJ/slGuhB7i2XXT9r5tlG874/CP+PoQZxCADoWuPCqzQCJ/rUVWwMMg6zzzJMXzPhuBLWmr9
+rBmDTkj+WyH0ynrVgywvuhmsR2ZxhZ+XZbLFmo5oXVwkJGB5ionmWawdnOMynLoYbE2d84UWkr5
4rUCuxhfIvBsysai70axdNHYmTgBPqJraXOctebc1LU/qCS8zALHOHBNwML0ORgRlkoWgP7g3P/j
rG0TnXDMZF83t8p0fdTfltElW05nVT1TMYguBmvg/7oyBGGmcJlgFF5dok3mmAclV7ICDgkUoy8Z
tEMPI7zvzyYsxID5LgszIjqupUO24SJJlYsZLJIyXB21JUHlqAsrTIpWHIbPEJ9Jp4hWXLmC+Rel
HD4H/Na/LmGoGohXtxVrMvxnj1+bVRPpRkiNkgWV6VIUdbg82OCIdGGDLbxBQJ+Om71pod3xVA2k
wE3Vcfpvp6s5es2OiN9gmu2zMqj0uSpg7KnEYAbcIYu5PwEzH70k1NtOfY1OawklemDHYdpHuz0Z
Q8KpA60yl5kM0RJGHxUoFqBUUDCDfRDUqj8bQzIaETI1Axb8FKETD2l6oIFvG6TbGNApLLWecND5
fY6eTcx6wDJMgspgTcFL0kEDareRdG7FQOdWd71SF9fXqWrLuJMuFDxTJgYPcZZZZ31GZBksF650
5ek3AFocflBwok3hnZj1KbyTVTdM6F1U6E45U2VZUhaozxgFHRxMK5h30uaYT18KZzWYUeb14vBS
esbyntrXtLmeKd43B2fqrgsq9HMNhZ+OjUY86ZIUGfzPkdECleIiK5TxJSclzfWLSnnsGx/z3cST
CdFWDxBt5121xhWIm4ivn44eNYx9Z1ogJjdKUwNqjAPTJStdYAakQVk68XoD44oRzbRIeZmLIV5k
Z60YVNGifKk3Z6MthTHyuM7Dc8eYrYLCamFA4NESFQEL1oF7DR/Kx5SWni7W4a8ffTebCjpaPyaq
Qe/c+wE9zMq8LLWLNfZQHtX+IZmJoAVluqBcqWcHENs+oYDB2YT+aR/cBg92SwHFArKfKowMqzbX
TSjbXvxrihqZ4I4pCRqk0DFAt0TfLsP8SJ2DOm0LW7wIm2WorxGOBq5MuLvro7bEg4c1IYlG+rxb
PhxdifvIKQVrbMCMHU5jrgLPDGc+wxqXshTSmNCxR0ea7JA18IJHPOtFv4JNTL7Fbyid9iip+B8X
MAdvQslhuVBAEw8GE7JNyAIYq0rkYJe+QBTX5R/G837xdJv6OenXNIODopswGb48rX6DZ7DvFp+p
jjFpOsoqXTKwOzJCZIH7uT6zBix+icmdFB4z9y/SXjudjLCRXpQy00fIhIO9GnvH9/fyQwx1gSVi
H56uLQJSxMkiic25K0AZxOwq6kH1sUFjLSynHVZneWZTKbY9lhzSCXYBIvum05wei1BgyaC+p0eU
HhNVykwQ0DV4KVXmS1C5YY4LmWtTejJcVKxpLiGCDgRmzFllDoEq3/Lrj13cVKqJNyXuZ1KPVfty
B5ZLbjIJU1lyLDb5jBx/RdzUhryzlIHpAFeLkxle5XXxrVrttjEKi0eo3QgKsv+O+kQpPUwDRA/H
YLISy1NYMB1yxLKiBQV10b3e+nygZ+TC/dmEbT6QkQcHu97nv38MeyqaHb0IDgH6IAPBD2oGKv8S
a01Sldky5yW84ILk/iVv9LH1YcqP51Pa9RDthvZDv65rK2gg8EsyrTAuJfMKo5aw9J7zoOgKVhBn
Xc6K4qWBX/tORsO+9ucTFu76VfnsfCZMT0Nf3T9N76ur9bx62If7NoNgAjURVDRHYILgQWVFkAVt
NWE2hzfP0Zdw0O1jHG+gfVXCzUDRBjtfqO6G6vRb2z1w2CAW6tzWKJKC+jxHN4+UWOITtNjMoKmt
KVHCSO8K4/9kPaT2FWcptQMSdqEbjNfwZbmqttXN+rdqtfyj5aKqfRveBIVwk0Rh3K02mWUhz4SS
RFMLRkREem1XwBhsLqVImwGKpg3kxu/bh93RWUBF3INwec5EQLg8bzEfWhRYggasdJBHpHCKWUs7
+dCtZtr9V0NuZjzYxANW3x/vN0lIouGahkIK6C4iMmIRDp6XWQGKilbUq7IYCQVstdUhgg0R0c2I
3Fev3FSz9f1qmQ4/gqnUVWTj/wimJkF1Ig5D5GGesVxm3mM6u88VoSYEIYvXMC7qWpSfhojql6xs
XZY+Ad6fBpVYqMUs9SHuE0Jr2BhTQyfJ0oMxgQgEnCD8HceKFhhhDSKiDIZLQ15t8T2RMPqtly1a
SdNfdfFgV4QfCahX97j5ifftf+KvCBJlKJM5hrtjio9kCsx3kCEYbudhBoVc/08ggOpzKacDzns4
OAbX9mV5KOssJSExnMAIAisTrK4adH4ucLYW8NMTWLUYzUGTe53Zuqfg58vTftWfL1P+pmSAv6lp
/Knrr9/bxShoxEx1wiiOuNwlR2xeAX+8VwbMXwWyg1AGltcIEHq7uYQSNRBGUineZCCHX66uPz48
3S9XB0OzExZAvNPMgf2ng0SthmamlDYrqCtyWQZlS/JKKcDDlKTccDrETTen4uDn7fuMLZggXiJw
Wolhb8STzHqJ7sYiSExrLvxJyMik5ZS0AVCEStNuPbnfqs2qehgKGTc5tcJqWNlBPqE7m4HqWBZg
IDLQyzyVLpxEEWm3nFBmBxQRPDgqVuqwcbihdYjWMkUaTrWm6HNC4DmF6eklZquH4JVnhS6ew4B8
RqYcz6c8zAZeKIsYaPX27sMfj9NzecRmxgCQQLi0oL2WTqIq6CQiz9CMgNgjnMPTDEUnC6TVSNL7
lA4suFNBBtLPD+bJ5WoH44EeVRziWOUD/2M4cUHB/ISFNtdx346bzKGyGkprYLEVRTD+xYEpnd6e
D809XJnypwZmyNTcHZ7uptquH76BRtog+0XPkCReBpNRKwnWnkeQxxiHyUDF49T4srN5kDaTUHA3
YL3AwV5QKyjcm/W3qq3yg+WsPHeI/I5T0nsB9qVSGQ0gM4MlhREv8rod2h6JNdmfTaiez/retWo+
b2qc/j7dHJXRPYgqZ0SXQB7DyrA8x1IMOcxK0D1EMNISHjpacauRpPOFGtCBFrrJ2Lv7A+vKkKZ7
U+83ehEcz6xDGWMRgDHg5lleWs2VBX24s2+XtJL2r/sbZguy6GJDfb5sI4XWwyb4Pt/egTBmIIgL
jWAXOSaNE1hhCqWkz53JByPr+0PX7mN4+NpXtLlY0H6VSDzYDSO4CaE950pZwEIBqpWVuPdsgXCr
wdZkLHiEZPXGvSh2F5odphdOdMicDZHZ+HHz5fR+td7ulrOrarsFxXLbQfQgJJYBEBzEtMgYBZkN
i7nPbEDcBekYVYyjfZQO/+l2OyRWQyQ2CSHVqtrcf08SSGmDE0WcsDRgxRqB0Xol6HPWYi6Icbgj
yVQv7KnXXEIMHwAMWRxgIOqsr8f1KiTFe2Ei6GP5XkNzJ02ZOYImLFgF8M0G0DIZ2AilDS4f08W6
LaeEDaDrLngvJqsT3EgjEg8GN8YIeE18qZXEmrkWYfbAnpXBgbLISlNIXpjwMjDy58MaR0MaF4IN
PGGh+BEnojZ+UnXSe1pSZ3kmKSbHWaLQw6RRBvIyoFVSvlp5pVb/KeUDCRQLoRsl8m772BKb+MB1
gXWIRMicQfxHqUXtIZOgATsfNLOs89602kj6lqQfaLGQrPFZV7/vqlU7q1HHrMbcSpY7hRZ5QK+W
wlJOPEPUbUqDDFJ0VJlOOwkNegCUaGFo37n7sN5cf1/N0FFo99sutrahy8B1gbXVJSajwbihxx+z
bDEskJu8NPrVQ48aesaUnP3ps5QtPsTrXcdgWNWwu72nD2IEJRRHk1MpYmUeNDDNLWYhAdOwDGQC
cThlqcBAEyeh7Ab7SKkdgMTFg4PbYk+r5W57HnenPq9q6EW6z/SMeZ7awNpqWVYyhGZhDustMMQq
Bt1Xs1wTeXovpml5RFE/nO5wMDC3LO06PfMaaxJ6TMqropYs92mqYPUQKVgWPObA20AxIhZknEQA
6YJqaV9xL79Pz1hVg+51Cfe2GphtYKf0YNYaK2e9QRgFWcPs119irQws0iCLTLkcq3RpeN+lMRkj
QUlFdSleptImHY1tq7UuSZlZDOh3U9GEZs2evm5bQE68jqW1VBrhBMkwAg/WzQLWTUV5FgrGmAH1
VgfTiQxrtXOW9jUgK6daHKwSxPJcgr7e0MA5omLwaPspMPiACljSQadAUnDFzAzoZ1qDCctlR8vu
NJYSMhDisLgTXU0XtMvpvNrFyKztLMYs1qjJQtWRTtyZ0peZZ1h/BszozHFEgjbwyAxI+PyFidfQ
TX7oZjxwsXfZWUr9EEuma9Hm1d3Tfa0D4BsaC3LTCPHPYh0fyTNv0ZIwGt7PomAZGDHaYePyZdA9
7R7G8sePV6Q8DCDbLRA8uQ8Nc/9QayC1Ah+/RJyNwucYws7ghUJMQJsZzjXW0uHKoJKVm/9aGanP
JQTPBrYXFzPdFe8913cd/4oArXUVl7qOi/KOKGZJlgvMFJA0ZEaXsAgrWpSKliWRLxqBwe5e6JTv
zavZfED+z3rFkC9Qe4/L//ThGiZo9NLXe1+M26gpmmBAhAiTwbAgvDsHGRiKMhNKBwuLmwz+Ra/L
QFcj8YL9CxPWqj4O5ZSQan6sgjCbAhGNNWFV3OyHsQjE57j9UyAKcokZSXmZKeskD0Ww2nVy8ZKG
ztLeqj4JVDS7T7O//rW1+bVHCEJlLaccU25wY0dYA9Z/kJnCJ+lhLclpRxa2mjk7K37fO7Ku1vPl
4mCRXD89PsLzfgPkhekDCIdHEH2Tu++T9e5LtZl83awx4ReW9d10c19FUKbdl+X2cOJNZGs33f52
u1hvbr8u528mtD4WoZBvZ/B3V72ZkPbBbbW73e6a42nHzzVP/lzz8KPFFTyB2B9Cqi9X1SA7XPyH
XZ79cjXBXI/24/0EV31YPXyfoEMcz6wXk8bMeTO5We+mDz9JmGrmarKptss52OY/kbc/kL/8ONn+
CwtIzW/XT7tboOoJBvFhDeNXzfd3oFfgLz+e/bpZ7qZ3DxU0gJ03zSpY0S8m/4KzoLEeGj3RyeFQ
u6PYxr6fSeT89OeXy083n907+PapuLj88H5ytv9/84+Pxfht15f/jGfDh8/vbyY/rNarbLaePlTb
WTX/cXL20/Ez0kBz9vDlzIGm9w2z5m820xnO34EPI8K8bX5MzsLFZBszGydLtD23g12BUGvuEXBP
xIOsb5jgJs7gPSzpJ98XiASJijCOT/Gd7PQmzDm5at3zt+vJ3y5vJve1lAMSZ+v5QF/HfvjYPT/U
sBv4ZCNt5+Ti2M/hc7hmApN6Op8jws4EiMaQmdb8+PHsbdy1mDg8MvmwmlXD45OQdeXevfsQTs4j
yuk5P7BPVXPP/dN0M598xWc99OGs6UdPzj7W7/sEhujrtppcrhbrZ6fA9Y0LbycXn92nfJQ4qVpD
Y+Ge3XT22zMvBgWzrn3PL1e3kSN3c+K1mAjS0AbP4NfqDkP3ruLjH7mDg3J00XoG6T2doT80zc/t
xXF8/tMpcHubuxt3mn12HE5G5QTuubxyF8Xpm2T61tzevrt8/7bIYUZPRrkHe7+ZNhTvuSn+fnOa
NNy/S2n7/P4yfMhPUicla9P2GKXo6PtfP2Z5bq9aQ7MXNY/VI6aijHHUmtL2v5OENx9uokQ+9bG6
mQISX7d4z/9NHkE4bZOJUE+APWmN5Ij3nP0bUEsDBBQAAgAIAG8+g0tQdff+0gAAAD0BAABHABwA
YWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1yYW5nZS1zdGFsZS1ub2RlLWNy
YXNoLXN0ZGVyci50eHRVVAkAA4EdJFqBHSRadXgLAAEE9QEAAAQUAAAAXc1PS8MwGMfxe17F40VW
D+ZPu5YMPAzXwVBU1mCPI12essLSlDQZ+u51bgfX6+/zfXiWVVVu1eb9DdbLzWu5WsDg8dS5OMLd
E9zvo/fYB0I/3TFaHOlKB03LuqI1Ni9doMq54+8a7bDF3qBXHpFavZ9Mj9bOOCvSBBZwcp0BH3t1
8KjNLCEcANgXZzKTqRYMarV+9no8EHGFotCiZfnNUfrPsOFn+wgXPD94SEj2VxRt20ohZC6lgd1w
SXaNM99kPgm4ngT5TZClcw5XHoP2gfwAUEsDBAoAAAAAAG8+g0sAAAAAAAAAAAAAAAALABwAYW5p
bWF0aW9ucy9VVAkAA4EdJFquHSRadXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGs+g0sAAAAAAAAA
AAAAAAAOABwAYW5pbWF0aW9ucy8zZC9VVAkAA3odJFquHSRadXgLAAEE9QEAAAQUAAAAUEsDBBQA
AgAIAGs+g0tjTawt9QAAAH0BAAA5ABwAYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWlu
LWVuZC1ldmVudC1jcmFzaC1sb2cudHh0VVQJAAN6HSRaeh0kWnV4CwABBPUBAAAEFAAAAF2PwWqD
QBCG7/sU00uJPWTdVRMUegjVQGhJS5R6DKu7NoK6Mu6G9u0bkxyil2H4v2/4mb2GEsVwgkb/QKVt
Jy8TIbZtf1CdVJihUhH3g9BbEjIYqa2JrotCjMgmTZNDtvvcw3az+0jiCHpU51rbAZ5e4bm0iKoz
hH7rxrZqoLEwgiZ5SnNVvNeGZlo3l3TSRltRzqJl2y6Yu/YciOCsawlou+yESsiFQxgAuL/MLbmn
BHchz7Zv40uE34EI/KByV5Mj74Gpgo3sy9zgWPDiEP9qrKuqCjkPV2Eo4djflGOh5R8JZgITM2E1
EXwvYHDHgxFoCPkHUEsDBBQAAgAIAGs+g0tJmlMy0gAAAD0BAAA2ABwAYW5pbWF0aW9ucy8zZC9j
aGFuZ2UtdHJhbnNmb3JtLWluLWVuZC1ldmVudC1zdGRlcnIudHh0VVQJAAN6HSRaeh0kWnV4CwAB
BPUBAAAEFAAAAF3NS2vCQBSG4f38itNNMV10LrlIBBeiEaSlLWZoljLJnGDAyYTJjLT/vrW6qNl+
z3s4q7Is9nL3/gbb1e612CxgcHjubBjhYQmPTXAOe0/opz0FgyPdKK9oUZW0wvql81Rae/pdgxn2
2Gt00iFSo5rJ9GzMjLN5HMECzrbT4EIvjw6VnkWEAwD74qwRMSrBoJLbtVPjkYgbqDRJW5bdHcX/
DGt+sQ9/xcuDp4gkf8W8bdtciDzLcw2H4Zocaqu/SToJuJoE2V2QxCmHG49eOU9+AFBLAwQUAAIA
CABrPoNLzbQJovUAAAB9AQAAMwAcAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1lLW51
bGwtY3Jhc2gtbG9nLnR4dFVUCQADeh0kWnodJFp1eAsAAQT1AQAABBQAAABdj01rg0AQhu/7K6aX
EnuIu36lK/QQqoHQkpYo9RhWd2wEdcO6G9p/35jkUL0Mw/s8w8vsFFRaDEdo1TfUyvbyMjUktjvt
sZeoc40Ye0HI2ZKQwUhlTXxdUOuYrLMs3efbjx1s1tv3NInhpPHcKDvAwws8VlZr7A1xv1RrOxzc
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
7RX1AAAAfQEAAEUAHABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRlZC1p
bnNpZGUtaGlkZGVuLWNyYXNoLWxvZy50eHRVVAkAA3odJFp6HSRadXgLAAEE9QEAAAQUAAAAXY9N
a4NAEIbv+yumlxJ7yLp+hRV6CNVAaElLlHoMqzs2grqy7ob23zfGHmouw/A+z/AyBwWVFuMZWvUF
tbK9vE4Nie2GI/YSda4RYy8IOV8TMhqprIlvC2odk22Wpcd8/36A3Xb/liYxDBovjbIjPDzDY2W1
xt4Q+qla2+FIE2EETYuMFli+NobmSrXXdNFGO1HdReuuWzF34zsQw0U1ErTt87NGIVcOYQDgfjPm
RhgIz4Ui371MLxFvBi5yjGo3Whz5/xiWbGIfZoZTwZNDgpuxqeuaex6POJdwGmblVCr5Q8I7gYk7
IVoIgR8y+MOjEdoQ8gtQSwMEFAACAAgAaz6DS4M+XaPRAAAAPQEAAEIAHABjb21wb3NpdGluZy9h
bmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRlZC1pbnNpZGUtaGlkZGVuLXN0ZGVyci50eHRVVAkA
A3odJFp6HSRadXgLAAEE9QEAAAQUAAAAXc3BS8MwFMfxe/6K50VWDyZpu4wMPAzXwVBU1mCPI11e
WWFpSpoM/e911sPW6+/zfbxVWRY7tX1/g81q+1qsl9B7PLcuDnD3BPeH6D12gdBPd4oWB7rWQdOi
KmmF9UsbqHLu9LtG2++wM+iVR6RWHybTo7UzzhZZAks4u9aAj506etRmlhAOAOyLcyYw1ymDSm2e
vR6OJB2BoUTRMHFzlF0Z1vxiH2HEy4OHhOR/xaJpGpmmUkhpYN+Pyb525pvMJwHXk0DcBHk25/DP
Q9A+kB9QSwMECgAAAAAAaz6DSwAAAAAAAAAAAAAAACAAHABjb21wb3NpdGluZy9iYWNrZmFjZS12
aXNpYmlsaXR5L1VUCQADeh0kWq4dJFp1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAaz6DS5Ruyyv1
AAAAfQEAAEQAHABjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2li
aWxpdHktM2QtY3Jhc2gtbG9nLnR4dFVUCQADeh0kWnodJFp1eAsAAQT1AQAABBQAAABdj8Fqg0AQ
hu/7FNNLiT1kd9WYKvQQqoHQkpYo9RhWd2wEdWXdDe3bN8YcGi/D8H/f8DN7BaUWwwka9Q2Vsp28
TA2xbfsDdhJ1phEj1w8YXxIyGKmsia4Lah2RTZomh2z3sYftZveexBH0Gs+1sgM8vMBjabXGzhD6
pRrb4kBjYQRN8pTmWLzVhmZKNZf0ro22opxFy7ZdcLb2HIjgrGoJ2nbZSaOQC4dwAGA/nLNnGQqX
QZ5tX8eXiDsBhgX6FQvujrx/DAs+sk8zwbHgySH+1VhXVRW6bhiEoYRjPynHQslfspoJXMyE4E7w
vRWHGx6M0IaQP1BLAwQUAAIACABrPoNLhLDV19IAAAA9AQAAQQAcAGNvbXBvc2l0aW5nL2JhY2tm
YWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1zdGRlcnIudHh0VVQJAAN6HSRa
eh0kWnV4CwABBPUBAAAEFAAAAF3NwWvCMBTH8Xv+irfLsDssSVvrIuwgs4JM3LBhPUpqXrFgmpIm
sv3309XD7PX3+T7eoijynVx/bGG1WG/y5Rw6h+fGhh4eXuHxEJzD1hP6ZU/BYE+XyiualwUtsXpv
PJXWni5rMN0OW41OOkRq1GE0PRsz4WyWRDCHs200uNDKo0OlJxHhAMC+OWcvWqiYQSlXb071RxIP
wLDCtGbZ3VHyz7DiV/v0A14fPEUk/StmdV2LOBaZEBr23ZDsK6t/yHQUcDUKsrsgTaYcbtx75Tz5
BVBLAwQKAAAAAABvPoNLAAAAAAAAAAAAAAAAFAAcAGNvbXBvc2l0aW5nL2JhY2tpbmcvVVQJAAOB
HSRarh0kWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABsPoNLhwzBxfYAAAB9AQAAOgAcAGNvbXBv
c2l0aW5nL2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlwLWNyYXNoLWxvZy50eHRVVAkA
A3sdJFp7HSRadXgLAAEE9QEAAAQUAAAAXY/LboMwEEX3/orppgpdxDbPGqmLqBApapVWAZVlZLBp
kAAjY0ft3zckWRQ2o9E9Z3Q1ewWV5uMJWvUNtbK9uEwNie2Gg+yF1LmWMnb9kERrhEYjlDXxdZFa
x2iTZekh333sYbvZvadJDIOW50bZER5e4LGyWsveIPylWtvJESfccJwWGS5k+dYYnCvVXtJZG+54
tYjWXbeiJPIciOGsGgHa9vlJSy5WDqIAQH4oKYOAcpdAkW9fp5eQewfsOWA1CWdH3j8mSzqxT3OD
U8GTg/yrEdV1zVyXhYwJOA435Vgq8YuChUD5Qghngu8FFO54NFwbhP4AUEsDBBQAAgAIAGw+g0te
dATU0gAAAD0BAAA3ABwAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWZs
aXAtc3RkZXJyLnR4dFVUCQADex0kWnsdJFp1eAsAAQT1AQAABBQAAABdzcFPwjAUx/F7/4rnxTAP
tt3osCQeiIyEaNSwxh1JR9/CErouXUv0v1eEA+z6+3xf3qIsi41af7zDarF+K5Zz6D0eWxcHuHuG
+130HrtA6Jc7RIsDXeqgaVGVtML6tQ1UOXf4W6PtN9gZ9MojUqt3o+nR2glnsyyBORxda8DHTu09
ajNJCAcA9s1ZLQTXKYNKrV68HvYkvYB8ErJh+c1RdmVY85N9hjOeHjwkZPpfzJqmkWkqcykNbPtz
sq2d+SFiFHA9CvKbYJoJDhcegvaB/AJQSwMEFAACAAgAbz6DSxiE3MKQAAAA+gAAAEYAHABjb21w
b3NpdGluZy9iYWNraW5nL2JhY2tmYWNlLXZpc2liaWxpdHktaW4tM2R0cmFuc2Zvcm1lZC1jcmFz
aC1sb2cudHh0VVQJAAOBHSRagR0kWnV4CwABBPUBAAAEFAAAALXOsQ6CMBCA4d2nuM0JSxsMkVmc
iCaNTsaQ0p7QBDlyV2J4e3kJ13/5/tram63g4uKIARIBowuwVw9BFtUtcQwdJdXEjh2vqqFe1Dm6
fiJJ0VucidNWls9scQrId0ZsTa7LTOvMnDKTH0tTtPgVrYuDZyfDvoJnzTwRmBdcCWTxA7w3H4gh
REafiNfqzxO7H1BLAwQUAAIACABvPoNLizrd1NIAAAA9AQAAQwAcAGNvbXBvc2l0aW5nL2JhY2tp
bmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbi0zZHRyYW5zZm9ybWVkLXN0ZGVyci50eHRVVAkAA4Ed
JFqBHSRadXgLAAEE9QEAAAQUAAAAXc3BS8MwFMfxe/6K50VWDyZpu44OPAzXwVBU1mCPI21eWWFp
ymsy9L/XuR1cr7/P9/FWZVns1Pb9DTar7WuxXsJAeOpcGOHuCe6bQIS9Z/zTHYPFka+117yoSl5h
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
AgAAPQAcAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLWNy
YXNoLWxvZy50eHRVVAkAA1cdJFpXHSRadXgLAAEE9QEAAAQUAAAAxc+xDoIwFIXhnae4mxOWFpDI
LE5Gk0YnY0ihV2yiXHNbYnh72Z2R9Szn/yqtT7qEvXFPtBAIGI2Flbh4ZC+awT1tQ0EcXMOGR3Gg
zoudM11PPrhW45s4TMvwemvsLfKZEWuVyCKWMlbbWCX5RmU1fryU2bpl4x+rEq4Vc0+gbnAk8EP7
gPv0D8RgHWMbiMdy5oioml+ey3R5+U/EP+RZWiwv/4mIvlBLAwQUAAIACABYPoNLC5+SudEAAAA9
AQAAOgAcAGNvbXBvc2l0aW5nL2NvbG9yLW1hdGNoaW5nL2ltYWdlLWNvbG9yLW1hdGNoaW5nLXN0
ZGVyci50eHRVVAkAA1cdJFpXHSRadXgLAAEE9QEAAAQUAAAAXc3Ba8IwFMfxe/6Kt8uwOyxJaysV
PIhWkI1t2LAe5dW8YsE0JU1k++83p4fZ6+/zfbxlWRY7tX1/g81y+1qs59A7Orc2DPCwgMdDcI46
z/inPQVDA1+jR15UJa+ofmk9V9aeftdg+h11mpxyRNzgYTQ9GzORYpZEMIezbTW40KmjI9STiEkA
EF9S1CRTjAVUarNyOBxZfAOUEhuR3R0l/4xqebEPf8XLg6eITf+KWdM0eRznWZ5r2PfXZF9b/c3S
USBxFGR3wTRJJdx48Og8+wFQSwMECgAAAAAAbD6DSwAAAAAAAAAAAAAAABQAHABjb21wb3NpdGlu
Zy9jb2x1bW5zL1VUCQADex0kWq4dJFp1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAbD6DS82pwib1
AAAAfQEAAD8AHABjb21wb3NpdGluZy9jb2x1bW5zL2FuY2VzdG9yLWNsaXBwZWQtaW4tcGFnaW5h
dGVkLWNyYXNoLWxvZy50eHRVVAkAA3sdJFp7HSRadXgLAAEE9QEAAAQUAAAAXY/BaoNAEIbv+xTT
S4k9ZHc1GhR6CNVAaElLlHoMq7s2groy7ob27RuTHKKXYfi/b/iZvYYSxXCCRv9ApW0nLxMhtm1/
UJ1UmKFSkbsKuL8kZDBSWxNdF4UYkU2aJods97mH7Wb3kcQR9KjOtbYDPL3Cc2kRVWcI/daNbdVA
Y2EETfKU5qp4rw3NtG4u6aSNtqKcRcu2XXC29hyI4KxrCWi77IRKyIVDOACwX86k9AvhMsiz7dv4
EnHvoGRBWLFgcuQ9MFXwkX2ZGxwLXhyyuhrrqqpC1w2DMJRw7G/KsdDyj/gzgYuZEEyEledzuOPB
CDSE/ANQSwMEFAACAAgAbD6DS7u6oWfSAAAAPQEAADwAHABjb21wb3NpdGluZy9jb2x1bW5zL2Fu
Y2VzdG9yLWNsaXBwZWQtaW4tcGFnaW5hdGVkLXN0ZGVyci50eHRVVAkAA3sdJFp7HSRadXgLAAEE
9QEAAAQUAAAAXc1Pa8IwGMfxe17Fs8uwOyxJaysRdpBZQSZu2LAeJW2eYsE0JU1kvvvNP4fZ6+/z
fXgWRZHv5PpzC6vFepMv59A7PLU2DPD0Bs91cA47T+i3PQaDA10qr2heFrTE6qP1VFp7/FuD6XfY
aXTSIVKj6tH0asyEs1kSwRxOttXgQicPDpWeRIQDAPvhTOu0UjGDUq7enRoOJL5DzTLRsOzhKPln
WPGLffkbXh68RGR6LWZN04g4FpkQGvb9LdlXVp9JOgq4GgXZQzBNUg53HrxynvwCUEsDBAoAAAAA
AGw+g0sAAAAAAAAAAAAAAAAcABwAY29tcG9zaXRpbmcvY29udGVudHMtZm9ybWF0L1VUCQADex0k
Wq4dJFp1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAbD6DSxrM0MTzAAAAfQEAAEsAHABjb21wb3Np
dGluZy9jb250ZW50cy1mb3JtYXQvc3VicGl4ZWwtYW50aWFsaWFzZWQtbmVzdGVkLWxheWVyLWNy
YXNoLWxvZy50eHRVVAkAA3sdJFp7HSRadXgLAAEE9QEAAAQUAAAAXY/BaoNAEIbv+xTTS4k9ZF01
ikIPoRoILWmJUo9hdddGUFfG3dC+fTXJIXoZhv/7hp85KCiRD2do1A9UynRinAixafuj7ITEDKWM
HM9nwZqQQQtldHRdJGJEtmmaHLP95wF22/1HEkfQo7zUygzw9ArPpUGUnSb0WzWmlQONueY0yVOa
y+K91jRTqhnTWRttebmI1m27YnbgWhDBRdUC0HTZGSUXK4swALB/RyxDnzs25NnubXqJOHfgM+5W
tj87ch+YLNjEvvQNTgUvFvGuRlBVVeg4oR+GAk79TTkVSvyRzUJgfCH4M8FzNwzueNAcNSH/UEsD
BBQAAgAIAGw+g0s60A/P0AAAAD0BAABIABwAY29tcG9zaXRpbmcvY29udGVudHMtZm9ybWF0L3N1
YnBpeGVsLWFudGlhbGlhc2VkLW5lc3RlZC1sYXllci1zdGRlcnIudHh0VVQJAAN7HSRaex0kWnV4
CwABBPUBAAAEFAAAAF3NzYrCMBSG4X2u4sxmsLOYNK1GIsxCtIIozmDDdCmpOcWCaUqayMzd+7vQ
br/nPZxpnmdbufzewGK6XGfzCbQOT7UNHbx9wfs+OIeNJ/TXHoPBjs6VVzQrclpguao9ldYeL2sw
7RYbjU46RGrUvjd9GjNg8TiNYAInW2twoZEHh0oPIsIAIP67MAqukhgKuZg51R1I8gDOVFrF/OUo
fTIs2dV+/B2vDz4iMrwV46qqRJIILoSGXXtPdqXV/2TUC5jqBfwlGKYjBg/uvHKenAFQSwMECgAA
AAAAbD6DSwAAAAAAAAAAAAAAABwAHABjb21wb3NpdGluZy9jb250ZW50cy1vcGFxdWUvVVQJAAN7
HSRarh0kWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABsPoNLB82JPvQAAAB9AQAAOQAcAGNvbXBv
c2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAtY3Jhc2gtbG9nLnR4dFVUCQAD
ex0kWnsdJFp1eAsAAQT1AQAABBQAAABdj8Fqg0AQhu/7FNNLiT1kXTUbFHoI1UBoSUuUegyruzaC
ujLuhvbtG5Mcopdh+L9v+Jm9hhLFcIJG/0ClbScvEyG2bX9QnVSYoVKRF3AWLgkZjNTWRNdFIUZk
k6bJIdt97mG72X0kcQQ9qnOt7QBPr/BcWkTVGUK/dWNbNdBYGEGTPKW5Kt5rQzOtm0s6aaOtKGfR
sm0XzF37DkRw1rUEtF12QiXkwiEMANxf5vqMc+G5kGfbt/El4t0BC7isXD458h+YKtjIvswNjgUv
DgmuxrqqqtDzQh6GEo79TTkWWv6R1UxgYibwiRD4KwZ3PBiBhpB/UEsDBBQAAgAIAGw+g0vc8CeU
0QAAAD0BAAA2ABwAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL2JhY2tncm91bmQtY2xpcC1z
dGRlcnIudHh0VVQJAAN7HSRaex0kWnV4CwABBPUBAAAEFAAAAF3NwWvCMBTH8Xv+irfLsDssSVsj
FTyIVpDJNmxYj5KaVyyYpqSJzP9enR5mr7/P9/HmRZFv5frrE1bz9SZfTqFzeGps6OFlBq/74By2
ntAfewwGe7pUXtG8LGiJ1UfjqbT2eF2D6bbYanTSIVKj9oPp3ZgRZ5MkgimcbKPBhVYeHCo9iggH
APbLWcKFUDGDUq4WTvUHEj+Ap0LXTDwdJf8MK36zb3/H24O3iKR/xaSu6yyOM5FlGnbdPdlVVp/J
eBBwNQjEU5AmYw4P7r1ynlwAUEsDBAoAAAAAAGw+g0sAAAAAAAAAAAAAAAAbABwAY29tcG9zaXRp
bmcvY29udGVudHMtc2NhbGUvVVQJAAN7HSRarh0kWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABs
PoNLK8x8jvUAAAB9AQAAMgAcAGNvbXBvc2l0aW5nL2NvbnRlbnRzLXNjYWxlL2FuaW1hdGluZy1j
cmFzaC1sb2cudHh0VVQJAAN7HSRaex0kWnV4CwABBPUBAAAEFAAAAF2PwW6CQBCG7/sU00sjPcju
gigkPZiCiWljjZByNAu7VBJgzbBr2revqIfCZTL5v2/yZ3YaShT9CRr9DZW2nbxOhNi254PqpMIM
lYq4H3A2J6Q3UlsT3RaFGJF1miaHbPu5g816+5HEEZxRXWpte3h6hefSIqrOEPdLN7ZVvRsLI9wk
T91cFe+1cTOtm2s6anNbUU6iedvOGF16DkRw0bUEtF12QiXkzCEMAOgPo2JFueAU8mzzNrxE+AOs
CiorGoyOvH9MFWxge3OHQ8GLQ/ybsayqKuQ8DMJQwvF8V46Flr9kMRGYmAjBSPC9BYMH7o1AQ8gf
UEsDBBQAAgAIAGw+g0uoHMcS0QAAAD0BAAAvABwAY29tcG9zaXRpbmcvY29udGVudHMtc2NhbGUv
YW5pbWF0aW5nLXN0ZGVyci50eHRVVAkAA3sdJFp7HSRadXgLAAEE9QEAAAQUAAAAXc29bsIwFIbh
3VdxWCrCUP8EAkHqgCBIqBWtiNWMyMEnIhKOI8dG9O4LhaFk/Z736CzyPNvJzecW1ovNR7aaQ+vw
XNvQweANXg7BOWw8od/2FAx2dKW8olmR0wLL99pTae3pugbT7rDR6KRDpEYdetOrMUPOpnEEczjb
WoMLjTw6VHoYEQ4A7MKZmjGhBINCrpdOdUciHjArma5Y8nQU/zMs+c2+/B1vD0YRGf8V06qqUiHS
JE017Nt7si+t/iGTXsBVL0iegnE84fDgzivnyS9QSwMECgAAAAAAbD6DSwAAAAAAAAAAAAAAABQA
HABjb21wb3NpdGluZy9jdWxsaW5nL1VUCQADex0kWq4dJFp1eAsAAQT1AQAABBQAAABQSwMEFAAC
AAgAbD6DS+VHsk30AAAAfQEAADQAHABjb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlm
cmFtZS1jcmFzaC1sb2cudHh0VVQJAAN7HSRaex0kWnV4CwABBPUBAAAEFAAAAF2PwWqDQBCG7/sU
00uJPWR1NYpCD6EaCC1piVKPYXXXRlBXxt3Qvn01ySF6GYb/+4afOSgokQ9naNQPVMp0YpwIsWn7
o+yExAyljJjnM3dNyKCFMjq6LhIxIts0TY7Z/vMAu+3+I4kj6FFeamUGeHqF59Igyk4T+q0a08qB
xlxzmuQpzWXxXmuaKdWM6ayNtrxcROu2XTl24FoQwUXVAtB02RklFyuLOABg/45YFjZnNuTZ7m16
ibA78J0iqGx/duQ+MFk4E/vSNzgVvFjEuxpBVVUhY6EfhgJO/U05FUr8kc1CcPhC8GeC524cuONB
c9SE/ANQSwMEFAACAAgAbD6DSx3ac9LQAAAAPQEAADEAHABjb21wb3NpdGluZy9jdWxsaW5nL2Ns
ZWFyLWZpeGVkLWlmcmFtZS1zdGRlcnIudHh0VVQJAAN7HSRaex0kWnV4CwABBPUBAAAEFAAAAF3N
wWvCMBTH8Xv+irfLsDuYpNWWCjvIrCCTbdhgj5KYVyyYpqSJbP+9Oj1or7/P9/HmZVlsxOr7C5bz
1bpYzKBzeGps6OHlHV73wTlsPaFbewwGe7qQXtKiKmmF6rPxVFh7vKzBdBtsNTrhEKmR+8E0NmbE
WZZEMIOTbTS40IqDQ6lHEeEAwH4vjIrJmEEllh9O9gcS3yHlKqtZ+nSUPBgqfrUff8Prg7eITP6L
rK7rPI7zNM817LpbslNW/5HpIOByEKRPwSSZcrhz76Xz5AxQSwMECgAAAAAAbD6DSwAAAAAAAAAA
AAAAABQAHABjb21wb3NpdGluZy9maWx0ZXJzL1VUCQADfB0kWq4dJFp1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAbD6DS2kjPEH1AAAAfQEAADcAHABjb21wb3NpdGluZy9maWx0ZXJzL2JsZW5kLW1v
ZGUtc2F0dXJhdGlvbi1jcmFzaC1sb2cudHh0VVQJAAN8HSRafB0kWnV4CwABBPUBAAAEFAAAAF2P
TWuDQBCG7/srppcSe8jq+pEo9BCqgdCShij1GFZ3bQR1ZdwN7b+vJjnUXIbhfZ7hZfYKSuTDGRr1
DZUynRgnQmza/ig7ITFDKSPmBcxfEjJooYyOrotEjMgmTZNjtvvcw3az+0jiCHqUl1qZAZ5e4bk0
iLLThH6pxrRyoDHXnCZ5SnNZvNeaZko1Yzproy0vH6Jl2y4ce+VaEMFF1QLQdNkZJRcLizgAYP+M
mK8ZZzbk2fZteomwO/DF2q/sYHbk/mOycCZ20Dc4FbxYxLsaq6qqQsbCIAwFnPqbciqU+CX+g+Dw
ByGYCZ7rO3DHg+aoCfkDUEsDBBQAAgAIAGw+g0sOld7t0AAAAD0BAAA0ABwAY29tcG9zaXRpbmcv
ZmlsdGVycy9ibGVuZC1tb2RlLXNhdHVyYXRpb24tc3RkZXJyLnR4dFVUCQADfB0kWnwdJFp1eAsA
AQT1AQAABBQAAABdzcFrwjAUx/F7/oq3y7A7LE1qqxU8iFYQxQ0b1qOk5hULpilpIu6/n04P2uvv
8328WZ5nO7H62sJyttpkiwm0Fs+18R28TeH94K3FxhH6Y05eY0cX0kmaFTktsFzXjgpjTtfV63aH
jUIrLCLV8tCbPrUesHAUBTCBs6kVWN+Io0WpBgFhABBerizHXPIQCrGcW9kdCX9ArMZxFSYvR9GT
Yclu9u3ueHvwEZDhfzGqqirlPE3SVMG+vSf70qhfEvcCJntB8hIMo5jBgzsnrSN/UEsDBAoAAAAA
AGw+g0sAAAAAAAAAAAAAAAAWABwAY29tcG9zaXRpbmcvZnJhbWVzZXRzL1VUCQADfB0kWq4dJFp1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAbD6DS1U3Yfb1AAAAfQEAAD4AHABjb21wb3NpdGluZy9m
cmFtZXNldHMvY29tcG9zaXRlZC1mcmFtZS1hbGlnbm1lbnQtY3Jhc2gtbG9nLnR4dFVUCQADfB0k
WnwdJFp1eAsAAQT1AQAABBQAAABdj8Fqg0AQhu/7FNNLiT1k3Y1RFHoI1UBoSUuUegyruzaCujLu
hvbtG5Mcopdh+L9v+Jm9hhLFcIJG/0ClbScvEyG2bX9QnVSYoVIR93weLAkZjNTWRNdFIUZkk6bJ
Idt97mG72X0kcQQ9qnOt7QBPr/BcWkTVGUK/dWNbNdBYGEGTPKW5Kt5rQzOtm0s6aaOtKGfRsm0X
zA1WDkRw1rUEtF12QiXkwiEMANxf5hYF8wR3Ic+2b+NLhN9BqJioXH9ytHpgqmAj+zI3OBa8OMS7
GkFVVSHnoR+GEo79TTkWWv6R9UxgYib4E8FbrRnc8WAEGkL+AVBLAwQUAAIACABsPoNLODsnD9EA
AAA9AQAAOwAcAGNvbXBvc2l0aW5nL2ZyYW1lc2V0cy9jb21wb3NpdGVkLWZyYW1lLWFsaWdubWVu
dC1zdGRlcnIudHh0VVQJAAN8HSRafB0kWnV4CwABBPUBAAAEFAAAAF3NwWvCMBTH8Xv+irfLsDss
SVsrETyIVpCNbdiwHiUxr1gwTUkT2f77zelh9vr7fB9vWVXlTm7f32Cz3L6W6zn0Hs+tiwM8LODx
EL3HLhD66U7R4kDXKiha1hWtUb+0gUrnTr9rtP0OO4NeekRq1WE0PVs74WyWJTCHs2sN+NjJo0dl
JgnhAMC+ONOa5yplUMvNyqvhSNIbCOSqYcXdUfbPUPOLfYQrXh48JST/K2ZN04g0FYUQBvb9Ndlr
Z77JdBRwNQqKuyDPphxuPATlA/kBUEsDBAoAAAAAAG8+g0sAAAAAAAAAAAAAAAAVABwAY29tcG9z
aXRpbmcvZ2VvbWV0cnkvVVQJAAOBHSRarh0kWnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABvPoNL
GITcwpAAAAD6AAAAPgAcAGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Ficy1wb3NpdGlvbi1pbnNpZGUt
b3BhY2l0eS1jcmFzaC1sb2cudHh0VVQJAAOBHSRagR0kWnV4CwABBPUBAAAEFAAAALXOsQ6CMBCA
4d2nuM0JSxsMkVmciCaNTsaQ0p7QBDlyV2J4e3kJ13/5/tram63g4uKIARIBowuwVw9BFtUtcQwd
JdXEjh2vqqFe1Dm6fiJJ0VucidNWls9scQrId0ZsTa7LTOvMnDKTH0tTtPgVrYuDZyfDvoJnzTwR
mBdcCWTxA7w3H4ghREafiNfqzxO7H1BLAwQUAAIACABvPoNL+66zBNIAAAA9AQAAOwAcAGNvbXBv
c2l0aW5nL2dlb21ldHJ5L2Ficy1wb3NpdGlvbi1pbnNpZGUtb3BhY2l0eS1zdGRlcnIudHh0VVQJ
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
g0syy67hPTgAACa8AAAiABgAAAAAAAEAAACkgS1xAABEdW1wUmVuZGVyVHJlZS0yNDY2MS1jcmFz
aC1sb2cudHh0VVQFAAOsHSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAhj6DS2bLwM81OAAA
JrwAACIAGAAAAAAAAQAAAKSBxqkAAER1bXBSZW5kZXJUcmVlLTI0NjYyLWNyYXNoLWxvZy50eHRV
VAUAA6wdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACGPoNLcw24Uzo4AAAwvAAAIgAYAAAA
AAABAAAApIFX4gAARHVtcFJlbmRlclRyZWUtMjQ2NjMtY3Jhc2gtbG9nLnR4dFVUBQADrB0kWnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIY+g0ttQsZMNTgAACW8AAAiABgAAAAAAAEAAACkge0a
AQBEdW1wUmVuZGVyVHJlZS0yNDY2NC1jcmFzaC1sb2cudHh0VVQFAAOsHSRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAhj6DS7tpsVwyOAAAJbwAACIAGAAAAAAAAQAAAKSBflMBAER1bXBSZW5k
ZXJUcmVlLTI0NjY1LWNyYXNoLWxvZy50eHRVVAUAA6wdJFp1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAqPoNLAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UEMjAEAX3dwdF9jZXJ0cy9VVAUAA/8c
JFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAApPoNL+2hkrxkJAAA6EQAAFQAYAAAAAAABAAAA
pIFRjAEAX3dwdF9jZXJ0cy8wRjA0NDYucGVtVVQFAAP+HCRadXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAKj6DS/EgMR7sCQAAOxIAABUAGAAAAAAAAQAAAKSBuZUBAF93cHRfY2VydHMvMEYwNDQ3
LnBlbVVUBQAD/xwkWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACk+g0v7aGSvGQkAADoRAAAV
ABgAAAAAAAEAAACkgfSfAQBfd3B0X2NlcnRzL2NhY2VydC5wZW1VVAUAA/4cJFp1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAApPoNLTU3e2EQFAADXBgAAFAAYAAAAAAABAAAApIFcqQEAX3dwdF9j
ZXJ0cy9jYWtleS5wZW1VVAUAA/4cJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAqPoNLBuaj
/UwAAABlAAAAFAAYAAAAAAABAAAApIHurgEAX3dwdF9jZXJ0cy9pbmRleC50eHRVVAUAA/8cJFp1
eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAAqPoNLmFx5fxUAAAAVAAAAGQAYAAAAAAABAAAApIGI
rwEAX3dwdF9jZXJ0cy9pbmRleC50eHQuYXR0clVUBQAD/xwkWnV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAgAAACk+g0uYXHl/FQAAABUAAAAdABgAAAAAAAEAAACkgfCvAQBfd3B0X2NlcnRzL2luZGV4
LnR4dC5hdHRyLm9sZFVUBQAD/hwkWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAACk+g0todQpz
NwAAADcAAAAYABgAAAAAAAEAAACkgVywAQBfd3B0X2NlcnRzL2luZGV4LnR4dC5vbGRVVAUAA/4c
JFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAApPoNL4V9MmQYFAACLBgAAGAAYAAAAAAABAAAA
pIHlsAEAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQFAAP+HCRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAKj6DS/EgMR7sCQAAOxIAABgAGAAAAAAAAQAAAKSBPbYBAF93cHRfY2VydHMvbG9j
YWxob3N0LnBlbVVUBQAD/xwkWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAACo+g0uEXE7mBwAA
AAcAAAARABgAAAAAAAEAAACkgXvAAQBfd3B0X2NlcnRzL3NlcmlhbFVUBQAD/xwkWnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAgAAACk+g0tLQNZhBwAAAAcAAAAVABgAAAAAAAEAAACkgc3AAQBfd3B0
X2NlcnRzL3NlcmlhbC5vbGRVVAUAA/4cJFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAoPoNL
AAAAAAAAAAAAAAAADgAYAAAAAAAAAAAApIEjwQEAYWNjZXNzX2xvZy50eHRVVAUAA/scJFp1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABvPoNLAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UFrwQEA
YWNjZXNzaWJpbGl0eS9VVAUAA4EdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACGPoNLhtPC
ojU4AAAFvQAAPAAYAAAAAAABAAAApIGzwQEAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWNy
YXNoLXNldGF0dHJpYnV0ZS1jcmFzaC1sb2cudHh0VVQFAAOsHSRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgART6DS0JNXl3SAAAAPQEAADkAGAAAAAAAAQAAAKSBXvoBAGFjY2Vzc2liaWxpdHkv
YWNjZXNzaWJpbGl0eS1jcmFzaC1zZXRhdHRyaWJ1dGUtc3RkZXJyLnR4dFVUBQADMh0kWnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAIY+g0v3HQR3RjgAADG8AABLABgAAAAAAAEAAACkgaP7AQBh
Y2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktY3Jhc2gtd2l0aC1keW5hbWljLWlubGluZS1jb250
ZW50LWNyYXNoLWxvZy50eHRVVAUAA6wdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABYPoNL
CHNh/tEAAAA9AQAASAAYAAAAAAABAAAApIFuNAIAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5
LWNyYXNoLXdpdGgtZHluYW1pYy1pbmxpbmUtY29udGVudC1zdGRlcnIudHh0VVQFAANXHSRadXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbz6DS+dhDrE/OAAAGL0AAEAAGAAAAAAAAQAAAKSBwTUC
AGFjY2Vzc2liaWxpdHkvYWNjZXNzaWJpbGl0eS1ub2RlLW1lbW9yeS1tYW5hZ2VtZW50LWNyYXNo
LWxvZy50eHRVVAUAA4EdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABvPoNLmETHrdEAAAA9
AQAAPQAYAAAAAAABAAAApIF6bgIAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LW5vZGUtbWVt
b3J5LW1hbmFnZW1lbnQtc3RkZXJyLnR4dFVUBQADgR0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAG8+g0sAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQcJvAgBhY2Nlc3NpYmlsaXR5L21hYy9V
VAUAA4EdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACGPoNLA0wvYjQ4AAAFvQAAMwAYAAAA
AAABAAAApIEOcAIAYWNjZXNzaWJpbGl0eS9tYWMvQU9NLWJvb2wtcHJvcGVydGllcy1jcmFzaC1s
b2cudHh0VVQFAAOsHSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgART6DSwzhhR/RAAAAPQEA
ADAAGAAAAAAAAQAAAKSBr6gCAGFjY2Vzc2liaWxpdHkvbWFjL0FPTS1ib29sLXByb3BlcnRpZXMt
c3RkZXJyLnR4dFVUBQADMh0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIY+g0sIXaeFOzgA
ADG8AAA1ABgAAAAAAAEAAACkgeqpAgBhY2Nlc3NpYmlsaXR5L21hYy9BT00tbnVtYmVyLXByb3Bl
cnRpZXMtY3Jhc2gtbG9nLnR4dFVUBQADrB0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFg+
g0vZfsur0QAAAD0BAAAyABgAAAAAAAEAAACkgZTiAgBhY2Nlc3NpYmlsaXR5L21hYy9BT00tbnVt
YmVyLXByb3BlcnRpZXMtc3RkZXJyLnR4dFVUBQADVx0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAG8+g0tXbGxYNjgAADC8AAA1ABgAAAAAAAEAAACkgdHjAgBhY2Nlc3NpYmlsaXR5L21hYy9B
T00tc3RyaW5nLXByb3BlcnRpZXMtY3Jhc2gtbG9nLnR4dFVUBQADgR0kWnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAG8+g0sAcAEk0gAAAD0BAAAyABgAAAAAAAEAAACkgXYcAwBhY2Nlc3NpYmls
aXR5L21hYy9BT00tc3RyaW5nLXByb3BlcnRpZXMtc3RkZXJyLnR4dFVUBQADgR0kWnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAG8+g0sAAAAAAAAAAAAAAAAeABgAAAAAAAAAEADtQbQdAwBhY2Nl
c3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9VVAUAA4EdJFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACGPoNLq1iTFT84AAAqvAAAOQAYAAAAAAABAAAApIEMHgMAYWNjZXNzaWJpbGl0eS9tYWMv
c2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMS1jcmFzaC1sb2cudHh0VVQFAAOsHSRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgART6DSxLCq0jSAAAAPQEAADYAGAAAAAAAAQAAAKSBvlYDAGFjY2Vz
c2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L3NlbGVjdC10ZXh0LTEtc3RkZXJyLnR4dFVUBQADMh0k
WnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIY+g0tWUA2uQjgAADG8AAA5ABgAAAAAAAEAAACk
gQBYAwBhY2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0yLWNyYXNoLWxv
Zy50eHRVVAUAA6wdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABYPoNLxcjnX9EAAAA9AQAA
NgAYAAAAAAABAAAApIG1kAMAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRl
eHQtMi1zdGRlcnIudHh0VVQFAANXHSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAhj6DS94y
S805OAAAJrwAADkAGAAAAAAAAQAAAKSB9pEDAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0
L3NlbGVjdC10ZXh0LTMtY3Jhc2gtbG9nLnR4dFVUBQADrB0kWnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAG8+g0titXHZ0gAAAD0BAAA2ABgAAAAAAAEAAACkgaLKAwBhY2Nlc3NpYmlsaXR5L21h
Yy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0zLXN0ZGVyci50eHRVVAUAA4EdJFp1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAABvPoNLAAAAAAAAAAAAAAAAHwAYAAAAAAAAABAA7UHkywMAYWNjZXNz
aWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL1VUBQADgR0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAIY+g0unE3YxOTgAAB68AABTABgAAAAAAAEAAACkgT3MAwBhY2Nlc3NpYmlsaXR5L21hYy92
YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby1jb250ZW50ZWRpdGFibGUtY3Jhc2gt
bG9nLnR4dFVUBQADrB0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEU+g0vhkcF/0QAAAD0B
AABQABgAAAAAAAEAAACkgQMFBABhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUt
Y2hhbmdlLXVzZXItaW5mby1jb250ZW50ZWRpdGFibGUtc3RkZXJyLnR4dFVUBQADMh0kWnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAIY+g0torKm3QDgAABe9AABMABgAAAAAAAEAAACkgV4GBABh
Y2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10ZXh0
YXJlYS1jcmFzaC1sb2cudHh0VVQFAAOsHSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVz6D
S1LCINPSAAAAPQEAAEkAGAAAAAAAAQAAAKSBJD8EAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNo
YW5nZS92YWx1ZS1jaGFuZ2UtdXNlci1pbmZvLXRleHRhcmVhLXN0ZGVyci50eHRVVAUAA1YdJFp1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACGPoNL+cN7pzQ4AAAmvAAATQAYAAAAAAABAAAApIF5
QAQAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8t
dGV4dGZpZWxkLWNyYXNoLWxvZy50eHRVVAUAA6wdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABvPoNL1opsYdEAAAA9AQAASgAYAAAAAAABAAAApIE0eQQAYWNjZXNzaWJpbGl0eS9tYWMvdmFs
dWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tdGV4dGZpZWxkLXN0ZGVyci50eHRVVAUA
A4EdJFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABvPoNLAAAAAAAAAAAAAAAAGgAYAAAAAAAA
ABAA7UGJegQAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci9VVAUAA4EdJFp1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACGPoNLCpA1mTY4AAAUvAAAWQAYAAAAAAABAAAApIHdegQAYWNjZXNzaWJp
bGl0eS90ZXh0LW1hcmtlci9jaGFyYWN0ZXItb2Zmc2V0LXZpc2libGUtcG9zaXRpb24tY29udmVy
c2lvbi1oYW5nLWNyYXNoLWxvZy50eHRVVAUAA6wdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABFPoNLDrt80tEAAAA9AQAAVgAYAAAAAAABAAAApIGmswQAYWNjZXNzaWJpbGl0eS90ZXh0LW1h
cmtlci9jaGFyYWN0ZXItb2Zmc2V0LXZpc2libGUtcG9zaXRpb24tY29udmVyc2lvbi1oYW5nLXN0
ZGVyci50eHRVVAUAAzIdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACGPoNLe0bOMUA4AAAX
vQAAQQAYAAAAAAABAAAApIEHtQQAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtl
ci1wcmV2aW91cy1uZXh0LWNyYXNoLWxvZy50eHRVVAUAA6wdJFp1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABYPoNLYRqh5dEAAAA9AQAAPgAYAAAAAAABAAAApIHC7QQAYWNjZXNzaWJpbGl0eS90
ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LXN0ZGVyci50eHRVVAUAA1cdJFp1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACGPoNLmoI/7zs4AAAmvAAASgAYAAAAAAABAAAApIEL
7wQAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1yYW5nZS1zdGFsZS1ub2Rl
LWNyYXNoLWNyYXNoLWxvZy50eHRVVAUAA6wdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABv
PoNLUHX3/tIAAAA9AQAARwAYAAAAAAABAAAApIHKJwUAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtl
ci90ZXh0LW1hcmtlci1yYW5nZS1zdGFsZS1ub2RlLWNyYXNoLXN0ZGVyci50eHRVVAUAA4EdJFp1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABvPoNLAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UEd
KQUAYW5pbWF0aW9ucy9VVAUAA4EdJFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABrPoNLAAAA
AAAAAAAAAAAADgAYAAAAAAAAABAA7UFiKQUAYW5pbWF0aW9ucy8zZC9VVAUAA3odJFp1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABrPoNLY02sLfUAAAB9AQAAOQAYAAAAAAABAAAApIGqKQUAYW5p
bWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWluLWVuZC1ldmVudC1jcmFzaC1sb2cudHh0VVQF
AAN6HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaz6DS0maUzLSAAAAPQEAADYAGAAAAAAA
AQAAAKSBEisFAGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRyYW5zZm9ybS1pbi1lbmQtZXZlbnQtc3Rk
ZXJyLnR4dFVUBQADeh0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGs+g0vNtAmi9QAAAH0B
AAAzABgAAAAAAAEAAACkgVQsBQBhbmltYXRpb25zL0NTU0tleWZyYW1lc1J1bGUtbmFtZS1udWxs
LWNyYXNoLWxvZy50eHRVVAUAA3odJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrPoNL3WKF
8NEAAAA9AQAAMAAYAAAAAAABAAAApIG2LQUAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxlLW5h
bWUtbnVsbC1zdGRlcnIudHh0VVQFAAN6HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbz6D
SwT+EsmPAAAA+gAAADQAGAAAAAAAAQAAAKSB8S4FAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVs
ZS1wYXJhbWV0ZXJzLWNyYXNoLWxvZy50eHRVVAUAA4EdJFp1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABvPoNLJaabIdEAAAA9AQAAMQAYAAAAAAABAAAApIHuLwUAYW5pbWF0aW9ucy9DU1NLZXlm
cmFtZXNSdWxlLXBhcmFtZXRlcnMtc3RkZXJyLnR4dFVUBQADgR0kWnV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAGs+g0sAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADtQSoxBQBjYW52YXMvVVQFAAN6
HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAaz6DSwAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQ
AO1BazEFAGNhbnZhcy9waGlsaXAvVVQFAAN6HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
az6DSwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BszEFAGNhbnZhcy9waGlsaXAvdGVzdHMvVVQF
AAN6HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaz6DSyJVwrX0AAAAfQEAADQAGAAAAAAA
AQAAAKSBATIFAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFzLnJlYWRvbmx5LWNyYXNoLWxv
Zy50eHRVVAUAA3odJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrPoNL05y5idEAAAA9AQAA
MQAYAAAAAAABAAAApIFjMwUAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVhZG9ubHkt
c3RkZXJyLnR4dFVUBQADeh0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAG8+g0sAAAAAAAAA
AAAAAAAMABgAAAAAAAAAEADtQZ80BQBjb21wb3NpdGluZy9VVAUAA4EdJFp1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABrPoNLt+jHTPQAAAB9AQAAOwAYAAAAAAABAAAApIHlNAUAY29tcG9zaXRp
bmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLWNyYXNoLWxvZy50eHRVVAUAA3od
JFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrPoNLB89qN9AAAAA9AQAAOAAYAAAAAAABAAAA
pIFONgUAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3LWZpeGVkLXN0ZGVy
ci50eHRVVAUAA3odJFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABrPoNLAAAAAAAAAAAAAAAA
FgAYAAAAAAAAABAA7UGQNwUAY29tcG9zaXRpbmcvYW5pbWF0aW9uL1VUBQADeh0kWnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGs+g0sP9u0V9QAAAH0BAABFABgAAAAAAAEAAACkgeA3BQBjb21w
b3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRlZC1pbnNpZGUtaGlkZGVuLWNyYXNo
LWxvZy50eHRVVAUAA3odJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrPoNLgz5do9EAAAA9
AQAAQgAYAAAAAAABAAAApIFUOQUAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBv
c2l0ZWQtaW5zaWRlLWhpZGRlbi1zdGRlcnIudHh0VVQFAAN6HSRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAaz6DSwAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1BoToFAGNvbXBvc2l0aW5nL2Jh
Y2tmYWNlLXZpc2liaWxpdHkvVVQFAAN6HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaz6D
S5Ruyyv1AAAAfQEAAEQAGAAAAAAAAQAAAKSB+zoFAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2li
aWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1jcmFzaC1sb2cudHh0VVQFAAN6HSRadXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAaz6DS4Sw1dfSAAAAPQEAAEEAGAAAAAAAAQAAAKSBbjwFAGNv
bXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1zdGRl
cnIudHh0VVQFAAN6HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAbz6DSwAAAAAAAAAAAAAA
ABQAGAAAAAAAAAAQAO1Buz0FAGNvbXBvc2l0aW5nL2JhY2tpbmcvVVQFAAOBHSRadXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAbD6DS4cMwcX2AAAAfQEAADoAGAAAAAAAAQAAAKSBCT4FAGNvbXBv
c2l0aW5nL2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1mbGlwLWNyYXNoLWxvZy50eHRVVAUA
A3sdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsPoNLXnQE1NIAAAA9AQAANwAYAAAAAAAB
AAAApIFzPwUAY29tcG9zaXRpbmcvYmFja2luZy9iYWNrZmFjZS12aXNpYmlsaXR5LWZsaXAtc3Rk
ZXJyLnR4dFVUBQADex0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG8+g0sYhNzCkAAAAPoA
AABGABgAAAAAAAEAAACkgbZABQBjb21wb3NpdGluZy9iYWNraW5nL2JhY2tmYWNlLXZpc2liaWxp
dHktaW4tM2R0cmFuc2Zvcm1lZC1jcmFzaC1sb2cudHh0VVQFAAOBHSRadXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAbz6DS4s63dTSAAAAPQEAAEMAGAAAAAAAAQAAAKSBxkEFAGNvbXBvc2l0aW5n
L2JhY2tpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS1pbi0zZHRyYW5zZm9ybWVkLXN0ZGVyci50eHRV
VAUAA4EdJFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABsPoNLAAAAAAAAAAAAAAAAEwAYAAAA
AAAAABAA7UEVQwUAY29tcG9zaXRpbmcvY2FudmFzL1VUBQADex0kWnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAGw+g0sL5qu09AAAAH0BAABKABgAAAAAAAEAAACkgWJDBQBjb21wb3NpdGluZy9j
YW52YXMvYWNjZWxlcmF0ZWQtY2FudmFzLWNvbXBvc2l0aW5nLXNpemUtbGltaXQtY3Jhc2gtbG9n
LnR4dFVUBQADex0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGw+g0viL38C0AAAAD0BAABH
ABgAAAAAAAEAAACkgdpEBQBjb21wb3NpdGluZy9jYW52YXMvYWNjZWxlcmF0ZWQtY2FudmFzLWNv
bXBvc2l0aW5nLXNpemUtbGltaXQtc3RkZXJyLnR4dFVUBQADex0kWnV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAGw+g0sAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQStGBQBjb21wb3NpdGluZy9j
bGlwcGluZy9VVAUAA3sdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsPoNLKf2WzPUAAAB9
AQAAUQAYAAAAAAABAAAApIF6RgUAY29tcG9zaXRpbmcvY2xpcHBpbmcvYm9yZGVyLXJhZGl1cy1v
dmVyZmxvdy1oaWRkZW4tc3RhY2tpbmctY29udGV4dC1jcmFzaC1sb2cudHh0VVQFAAN7HSRadXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbD6DS6810ePSAAAAPQEAAE4AGAAAAAAAAQAAAKSB+kcF
AGNvbXBvc2l0aW5nL2NsaXBwaW5nL2JvcmRlci1yYWRpdXMtb3ZlcmZsb3ctaGlkZGVuLXN0YWNr
aW5nLWNvbnRleHQtc3RkZXJyLnR4dFVUBQADex0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AFg+g0sAAAAAAAAAAAAAAAAbABgAAAAAAAAAEADtQVRJBQBjb21wb3NpdGluZy9jb2xvci1tYXRj
aGluZy9VVAUAA1cdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABYPoNLUXFG3aYAAADuAgAA
PQAYAAAAAAABAAAApIGpSQUAY29tcG9zaXRpbmcvY29sb3ItbWF0Y2hpbmcvaW1hZ2UtY29sb3It
bWF0Y2hpbmctY3Jhc2gtbG9nLnR4dFVUBQADVx0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AFg+g0sLn5K50QAAAD0BAAA6ABgAAAAAAAEAAACkgcZKBQBjb21wb3NpdGluZy9jb2xvci1tYXRj
aGluZy9pbWFnZS1jb2xvci1tYXRjaGluZy1zdGRlcnIudHh0VVQFAANXHSRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAbD6DSwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BC0wFAGNvbXBvc2l0
aW5nL2NvbHVtbnMvVVQFAAN7HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbD6DS82pwib1
AAAAfQEAAD8AGAAAAAAAAQAAAKSBWUwFAGNvbXBvc2l0aW5nL2NvbHVtbnMvYW5jZXN0b3ItY2xp
cHBlZC1pbi1wYWdpbmF0ZWQtY3Jhc2gtbG9nLnR4dFVUBQADex0kWnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAGw+g0u7uqFn0gAAAD0BAAA8ABgAAAAAAAEAAACkgcdNBQBjb21wb3NpdGluZy9j
b2x1bW5zL2FuY2VzdG9yLWNsaXBwZWQtaW4tcGFnaW5hdGVkLXN0ZGVyci50eHRVVAUAA3sdJFp1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABsPoNLAAAAAAAAAAAAAAAAHAAYAAAAAAAAABAA7UEP
TwUAY29tcG9zaXRpbmcvY29udGVudHMtZm9ybWF0L1VUBQADex0kWnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAGw+g0sazNDE8wAAAH0BAABLABgAAAAAAAEAAACkgWVPBQBjb21wb3NpdGluZy9j
b250ZW50cy1mb3JtYXQvc3VicGl4ZWwtYW50aWFsaWFzZWQtbmVzdGVkLWxheWVyLWNyYXNoLWxv
Zy50eHRVVAUAA3sdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsPoNLOtAPz9AAAAA9AQAA
SAAYAAAAAAABAAAApIHdUAUAY29tcG9zaXRpbmcvY29udGVudHMtZm9ybWF0L3N1YnBpeGVsLWFu
dGlhbGlhc2VkLW5lc3RlZC1sYXllci1zdGRlcnIudHh0VVQFAAN7HSRadXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAbD6DSwAAAAAAAAAAAAAAABwAGAAAAAAAAAAQAO1BL1IFAGNvbXBvc2l0aW5n
L2NvbnRlbnRzLW9wYXF1ZS9VVAUAA3sdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsPoNL
B82JPvQAAAB9AQAAOQAYAAAAAAABAAAApIGFUgUAY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVl
L2JhY2tncm91bmQtY2xpcC1jcmFzaC1sb2cudHh0VVQFAAN7HSRadXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAbD6DS9zwJ5TRAAAAPQEAADYAGAAAAAAAAQAAAKSB7FMFAGNvbXBvc2l0aW5nL2Nv
bnRlbnRzLW9wYXF1ZS9iYWNrZ3JvdW5kLWNsaXAtc3RkZXJyLnR4dFVUBQADex0kWnV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAGw+g0sAAAAAAAAAAAAAAAAbABgAAAAAAAAAEADtQS1VBQBjb21w
b3NpdGluZy9jb250ZW50cy1zY2FsZS9VVAUAA3sdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABsPoNLK8x8jvUAAAB9AQAAMgAYAAAAAAABAAAApIGCVQUAY29tcG9zaXRpbmcvY29udGVudHMt
c2NhbGUvYW5pbWF0aW5nLWNyYXNoLWxvZy50eHRVVAUAA3sdJFp1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABsPoNLqBzHEtEAAAA9AQAALwAYAAAAAAABAAAApIHjVgUAY29tcG9zaXRpbmcvY29u
dGVudHMtc2NhbGUvYW5pbWF0aW5nLXN0ZGVyci50eHRVVAUAA3sdJFp1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAABsPoNLAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UEdWAUAY29tcG9zaXRpbmcv
Y3VsbGluZy9VVAUAA3sdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsPoNL5UeyTfQAAAB9
AQAANAAYAAAAAAABAAAApIFrWAUAY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJh
bWUtY3Jhc2gtbG9nLnR4dFVUBQADex0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGw+g0sd
2nPS0AAAAD0BAAAxABgAAAAAAAEAAACkgc1ZBQBjb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZp
eGVkLWlmcmFtZS1zdGRlcnIudHh0VVQFAAN7HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
bD6DSwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BCFsFAGNvbXBvc2l0aW5nL2ZpbHRlcnMvVVQF
AAN8HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbD6DS2kjPEH1AAAAfQEAADcAGAAAAAAA
AQAAAKSBVlsFAGNvbXBvc2l0aW5nL2ZpbHRlcnMvYmxlbmQtbW9kZS1zYXR1cmF0aW9uLWNyYXNo
LWxvZy50eHRVVAUAA3wdJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsPoNLDpXe7dAAAAA9
AQAANAAYAAAAAAABAAAApIG8XAUAY29tcG9zaXRpbmcvZmlsdGVycy9ibGVuZC1tb2RlLXNhdHVy
YXRpb24tc3RkZXJyLnR4dFVUBQADfB0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGw+g0sA
AAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQfpdBQBjb21wb3NpdGluZy9mcmFtZXNldHMvVVQFAAN8
HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbD6DS1U3Yfb1AAAAfQEAAD4AGAAAAAAAAQAA
AKSBSl4FAGNvbXBvc2l0aW5nL2ZyYW1lc2V0cy9jb21wb3NpdGVkLWZyYW1lLWFsaWdubWVudC1j
cmFzaC1sb2cudHh0VVQFAAN8HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbD6DSzg7Jw/R
AAAAPQEAADsAGAAAAAAAAQAAAKSBt18FAGNvbXBvc2l0aW5nL2ZyYW1lc2V0cy9jb21wb3NpdGVk
LWZyYW1lLWFsaWdubWVudC1zdGRlcnIudHh0VVQFAAN8HSRadXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAbz6DSwAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1B/WAFAGNvbXBvc2l0aW5nL2dlb21l
dHJ5L1VUBQADgR0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG8+g0sYhNzCkAAAAPoAAAA+
ABgAAAAAAAEAAACkgUxhBQBjb21wb3NpdGluZy9nZW9tZXRyeS9hYnMtcG9zaXRpb24taW5zaWRl
LW9wYWNpdHktY3Jhc2gtbG9nLnR4dFVUBQADgR0kWnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AG8+g0v7rrME0gAAAD0BAAA7ABgAAAAAAAEAAACkgVRiBQBjb21wb3NpdGluZy9nZW9tZXRyeS9h
YnMtcG9zaXRpb24taW5zaWRlLW9wYWNpdHktc3RkZXJyLnR4dFVUBQADgR0kWnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAG8+g0v/Ljt8wgIAAFQIAAANABgAAAAAAAEAAACkgZtjBQBlcnJvcl9s
b2cudHh0VVQFAAOCHSRadXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAhj6DS+0Ii0mmAwAAjxAA
ABEAGAAAAAAAAQAAAKSBpGYFAGZ1bGxfcmVzdWx0cy5qc29uVVQFAAOsHSRadXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAKD6DS1sEWA6iBQAATRAAAAoAGAAAAAAAAQAAAKSBlWoFAGh0dHBkLmNv
bmZVVAUAA/scJFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAoPoNLAAAAAAAAAAAAAAAAGgAY
AAAAAAAAAAAApIF7cAUAcHl3ZWJzb2NrZXQud3MubG9nLWVyci50eHRVVAUAA/wcJFp1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAAoPoNLAAAAAAAAAAAAAAAAGgAYAAAAAAAAAAAApIHPcAUAcHl3
ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAUAA/wcJFp1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAApPoNLAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIEjcQUAcHl3ZWJzb2NrZXQud3NzLmxvZy1l
cnIudHh0VVQFAAP9HCRadXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAKT6DSwAAAAAAAAAAAAAA
ABsAGAAAAAAAAAAAAKSBeHEFAHB5d2Vic29ja2V0Lndzcy5sb2ctb3V0LnR4dFVUBQAD/RwkWnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIc+g0uPylJacSkAAMavAAAMABgAAAAAAAEAAACkgc1x
BQByZXN1bHRzLmh0bWxVVAUAA60dJFp1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACGPoNLy+Id
gggEAABuDAAACgAYAAAAAAABAAAApIGEmwUAc3RhdHMuanNvblVUBQADrB0kWnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADU+g0upV2n7XwUAADQiAAAZABgAAAAAAAEAAACkgdCfBQB3cHR3a19w
cm9jZXNzX2xvZy5vdXQudHh0VVQFAAMVHSRadXgLAAEE9QEAAAQUAAAAUEsFBgAAAAB+AH4AQDgA
AIKlBQAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328295</attachid>
            <date>2017-12-03 08:44:55 -0800</date>
            <delta_ts>2017-12-03 21:18:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180308-20171204014453.patch</filename>
            <type>text/plain</type>
            <size>206540</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDI4ZTNiNzZhZGVjZWZkZGQyMjBmNjEzMGY4ZjM5ZGEzOThjMmU0Li4xNTE5ZDQyNTRkNmVhODAw
ZmMwMDA5NjliMThkYWNlZjM2NWFkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVh
ZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5l
VGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25TY29wZS5j
cHA6CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjp1bmV4cGVjdGVkRXhjZXB0aW9uTWVz
c2FnZSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpTQzo6SlNMb2Nr
OjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dpbmdUaHJlYWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpWTTo6Y2xlYXJFeGNlcHRpb24pOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5j
cHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6cHJpbnRWZXJpZmljYXRpb25IZWFkZXIp
OgorCiAyMDE3LTEyLTAxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBKYXZhU2NyaXB0Q29yZTogbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGluIE1hdGggZnVu
Y3Rpb25zIHRoYXQgdGFrZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA5YmU0YzQ1Y2Q0
NmQxODYyOTU2OWI3YzdhNTBjYWVkZTJhODk3YjAuLmM0YjMwZmE0ZTc1MDk1YTkwOWE0ZjI4OTQ5
NjgzNDU0Njk1ZmRhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTctMTItMDMgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgV1RGIHNob3VsZG4ndCBo
YXZlIGJvdGggVGhyZWFkIGFuZCBUaHJlYWRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGQgdXNlIGEgcG9pbnRlciBvZiBX
VEY6OlRocmVhZCBpbnN0ZWFkIG9mIFRocmVhZElkZW50aWZpZXIuCisKKyAgICAgICAgT25lIHBy
b2JsZW0gaXMgdGhhdCBXaW5kb3dzIHN1cHBvcnQgbGlicmFyeSB1c2VzIFdURjo6Y3JlYXRlVGhy
ZWFkLAorICAgICAgICB3aGljaCByZXR1cm5zIFRocmVhZElkZW50aWZpZXIuIFNvIHdlIGNhbm5v
dCBkcm9wIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaW4gV2luZG93cyBlbnZpcm9ubWVudC4g
VGhpcyBwYXRjaCBrZWVwcyBUaHJlYWRJZGVudGlmaWVyIGluIFdpbmRvd3MuCisKKyAgICAgICAg
KiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KToKKyAgICAgICAgKFdURjo6aXNNYWluVGhyZWFkKToKKyAgICAgICAgKFdURjo6Y2FuQWNjZXNz
VGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgor
ICAgICAgICAqIHd0Zi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6
cGFya0NvbmRpdGlvbmFsbHlJbXBsKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJr
T25lKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJrT25lSW1wbCk6CisgICAgICAg
IChXVEY6OlBhcmtpbmdMb3Q6OnVucGFya0NvdW50KToKKyAgICAgICAgKiB3dGYvUmVjdXJzaXZl
TG9ja0FkYXB0ZXIuaDoKKyAgICAgICAgKFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OmxvY2sp
OgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6dW5sb2NrKToKKyAgICAgICAg
KFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI6OnRyeUxvY2spOgorICAgICAgICAqIHd0Zi9UaHJl
YWRpbmcuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmR1bXAgY29uc3QpOgorICAgICAgICAq
IHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppZCBjb25zdCk6CisgICAg
ICAgIChXVEY6OlRocmVhZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXVEY6OmN1cnJlbnRUaHJlYWQpOiBEZWxldGVkLgorICAgICAg
ICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbik6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6ZGV0YWNoKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNw
ZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFu
ZGxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50SUQpOiBEZWxldGVkLgorICAgICAg
ICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OndhaXRGb3JD
b21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkOjpjdXJyZW50RHlpbmcpOgorICAgICAgICAqIHd0Zi9tYWMvTWFpblRocmVhZE1h
Yy5tbToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQpOgorICAg
ICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkUGxhdGZvcm0pOgorICAgICAgICAoV1RGOjpj
YW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQpOgorICAgICAgICAoV1RGOjppbml0aWFs
aXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RG
Ojppbml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcik6IERlbGV0ZWQuCisKIDIwMTctMTItMDIg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZhY3RvciBvdXQg
dGhlICJkYXRhYmFzZVRhc2tRdWV1ZSIgcGFydHMgb2YgSURCU2VydmVyIGludG8gc29tZXRoaW5n
IHJldXNhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJlYjc0ZWIwYWRhMzU0NDdiNzFiNjQzZmQ1ZjA4YmUy
MTYwM2I0Y2MuLmI1YjRmY2JkOGQxZjNjNzViMWY1YzBiMzEzNjY2ZDA0NzI2ZjliOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNTMgQEAKKzIwMTctMTItMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgV1RGIHNob3VsZG4ndCBoYXZlIGJvdGggVGhy
ZWFkIGFuZCBUaHJlYWRJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODAzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkFj
dGl2ZURPTU9iamVjdDo6b3JpZ2luVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkFjdGl2ZURPTU9iamVjdDo6cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpjYWxsRnVuY3Rpb25Pbk9yaWdpblRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6Om9yaWdpblRocmVhZElE
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpJREJDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjp+SURCQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6c291cmNlc0RlbGV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
Ojp0cmFuc2FjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmFkdmFuY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6dW5jaGVja2VkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJD
dXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c2V0
R2V0UmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6OnZlcnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpy
ZW5hbWVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6Om1heWJlQ2xvc2VJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OndpbGxDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OndpbGxBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
OjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpk
aWRDb21taXRPckFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRpZENy
ZWF0ZUluZGV4SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGlkRGVsZXRl
SW5kZXhJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6SURCSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6On5JREJJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bmFtZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6c2V0TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmtleVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OnVuaXF1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bXVsdGlFbnRyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6cm9sbGJhY2tJbmZvRm9yVmVyc2lvbkNoYW5nZUFi
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4Ojpkb0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsS2V5
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bWFya0FzRGVsZXRlZCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omdl
dEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Omlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpnZXRBbGxLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpt
YXJrQXNEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpyb2xsYmFj
a0ZvclZlcnNpb25DaGFuZ2VBYm9ydCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T3BlbkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojp+
SURCT3BlbkRCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojpv
bkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbkRpZEZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1
ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPcGVuREJSZXF1ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VDb21wbGV0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvbkRlbGV0ZURhdGFiYXNlU3VjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RCbG9ja2VkKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVxdWVzdDo6c2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6OnRyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2VJbmRleElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVxdWVzdGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnJlcXVlc3RlZEluZGV4UmVj
b3JkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpldmVudFRhcmdl
dEludGVyZmFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjphY3RpdmVE
T01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZW5xdWV1ZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6cmVzdWx0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OndpbGxJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6Y29tcGxldGVSZXF1ZXN0QW5kRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0OjpvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3Vj
Y2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp+SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlTmFtZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRiKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjplcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0
RHVlVG9GYWlsZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjp0
cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmludGVybmFsQWJv
cnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRD
YW5jZWxSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aXNGaW5pc2hlZE9yRmluaXNoaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjphZGRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpyZW1vdmVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzY2hl
ZHVsZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1
bGVQZW5kaW5nT3BlcmF0aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVDb21wbGV0ZWRPcGVyYXRpb25UaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tbWl0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZmluaXNoQWJvcnRPckNvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246Om5vdGlmeURpZEFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpkaWRBYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ29t
bWl0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVPYmplY3RTdG9yZU9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4T25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFJlbmFtZUluZGV4T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJl
Y29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJ
bmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmdldEFsbFJl
Y29yZHNPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
QWxsUmVjb3Jkc09uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0R2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJl
Y29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEdldENvdW50T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZVJlY29yZE9uU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVSZWNvcmRPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVP
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJPYmpl
Y3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0UHV0T3JBZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRk
T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RT
dG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWREZWxl
dGVPYmplY3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVsZXRl
SW5kZXhPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkRGVs
ZXRlSW5kZXhPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b3Bl
cmF0aW9uQ29tcGxldGVkT25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmVzdGFibGlzaE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjphY3RpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVhY3RpdmF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OnJlbW92ZUl0ZW1zTWF0Y2hpbmdD
dXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb246On5UcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRl
T25UaGlzVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OmRvQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6b3JpZ2luVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9yaWdp
blRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmxvY2spOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp0cnlMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6dW5sb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aXNBdWRp
b1RocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmlzR3JhcGhP
d25lciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c2V0QXVkaW9UaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjphdWRpb1RocmVhZCBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpwZXJm
b3JtQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzOjpEYXRhYmFzZURldGFpbHMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzOjp0aHJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VEZXRhaWxzOjp0aHJlYWRJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VDbG9zZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhy
ZWFkOjpnZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmdldFRo
cmVhZElEKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhh
bmRsZUNsb3NlZERhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OmRvQ2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ6Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24pOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0
YTo6SlNDYWxsYmFja0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6On5K
U0NhbGxiYWNrRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y3JlYXRlZE1lc3NhZ2VQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KToKKyAgICAg
ICAgKiBwYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVh
ZDo6aXNDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnByb3ZpZGVTdXBwbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpyZW1vdmVTdXBwbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpyZXF1aXJlU3VwcGxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6U3VwcGxlbWVudGFibGUpOgorICAgICAgICAq
IHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6c2V0
TmV4dEZpcmVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZXJCYXNlOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hv
dWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9z
aXRpbmdUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjpnZXRBdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YXBwZW5kVG9VbnVzZWRCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3YXBC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tOgorICAgICAgICAoUnVuV2ViVGhyZWFkKToKKyAgICAgICAgKFN0YXJ0V2ViVGhy
ZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzcWxpdGUzSGFuZGxlIGNv
bnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmlzQ29udGV4dFRocmVhZCBjb25zdCk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQcm94eSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5M
b29wOjpydW5DbGVhbnVwVGFza3MpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnRocmVhZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpv
Yik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRX
aXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVu
cmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdp
c3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2VySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAg
ICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bWF0Y2hGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVYTUxQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MUGFy
c2VyQ29udGV4dDo6Y3JlYXRlU3RyaW5nUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFBh
cnNlckNvbnRleHQ6OmNyZWF0ZU1lbW9yeVBhcnNlcik6CisKIDIwMTctMTItMDIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgcmVnaXN0cmF0aW9uIGFj
dGl2YXRpb24gYW5kIGNsZWFyaW5nIGZyb20gU1dTZXJ2ZXJKb2JRdWV1ZSB0byBTV1NlcnZlclJl
Z2lzdHJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NDM3NTAyYmNkZmQwN2JlYTIzNDZkYThlNWYyNDQxZjdh
MjVmNThkLi41NTZlN2I4OWEwNWJhYTJlYjY5Nzc4M2E3NzU0OWNjY2E2MDAzZDVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRuJ3QgaGF2ZSBib3RoIFRocmVhZCBh
bmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6OkdlbmVy
aWNDYWxsYmFjazo6fkdlbmVyaWNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWND
YWxsYmFjazo6cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKToKKwogMjAxNy0xMi0wMiAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldGFsbApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXgg
MWRlOGNhYTg5ZDQxODA2ODFiNzI3NjhjNzJlZjM5NWE1NTIxYjMxNi4uODI0NjI3MmFjOGE4ZWVh
NTk5ZTMzZjk3ZmM5MzdjZmNlNGI2YzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0xNjAsOCArMTYwLDggQEAgYm9vbCBN
YWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiBsb2NrZXIsIHZvaWQKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgdGhyZWFkcyB3
aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgVGhyZWFkR3JvdXAuIFRodXMsIHdlIGRvIG5vdCBkbyBh
bnl0aGluZyBoZXJlIGV4Y2VwdCBmb3IgcmVwb3J0aW5nLgogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0LmVycm9yKCkgIT0gS0VSTl9TVUNDRVNTKTsKICAgICAgICAgICAgICAgICAg
ICAgV1RGUmVwb3J0RXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9O
LAotICAgICAgICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9u
IGVuY291bnRlcmVkIGFuIGludmFsaWQgdGhyZWFkIChlcnIgMHgleCk6IFRocmVhZCBbJWQvJWQ6
ICVwXSBpZCAldS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9yKCksIGlu
ZGV4LCB0aHJlYWRzLnNpemUoKSwgdGhyZWFkLnB0cigpLCB0aHJlYWQtPmlkKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9uIGVuY291bnRl
cmVkIGFuIGludmFsaWQgdGhyZWFkIChlcnIgMHgleCk6IFRocmVhZCBbJWQvJWQ6ICVwXS4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9yKCksIGluZGV4LCB0aHJlYWRzLnNp
emUoKSwgdGhyZWFkLnB0cigpKTsKICNlbmRpZgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDIxZTkwMmQ0OTU1ZjhiY2JmNzI4MGY0ZjFiOWRhMzk3NzcxM2I1M2IuLjdhMTVlMjI5
ZWUwYTJjODE5NjQzNzg4ZThiMTZjYTMzMDk4YjRiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTkxLDggKzE5MSw4IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBk
YXRhTG9nRigiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQp
OiAlZDogJWRcbiIsCi0gICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0Yo
IjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
XG4iLAorICAgICAgICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
LApAQCAtMjE1LDggKzIxNSw4IEBAIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjCiAgICAgfSB1Owog
ICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgZGF0YUxvZ0YoCi0g
ICAgICAgICI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6
ICVkOiAlZDogJTA4eDolMDh4OiAlc1xuIiwKLSAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAg
ICAgICAiPCVwPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAl
ZDogJWQ6ICUwOHg6JTA4eDogJXNcbiIsCisgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgIGV4ZWMsCiAgICAgICAgIHN0YXRpY19j
YXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKSwKQEAgLTIzMiw3ICsyMzIsNyBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYwogCiBMTElO
VF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSkKIHsKLSAgICBkYXRhTG9nRigiPCVkPiAl
cCAvICVwOiBpbiBwcm9sb2d1ZSBvZiAiLCBjdXJyZW50VGhyZWFkKCksIGV4ZWMtPmNvZGVCbG9j
aygpLCBleGVjKTsKKyAgICBkYXRhTG9nRigiPCVwPiAlcCAvICVwOiBpbiBwcm9sb2d1ZSBvZiAi
LCAmVGhyZWFkOjpjdXJyZW50KCksIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKICAgICBkYXRh
TG9nKCpleGVjLT5jb2RlQmxvY2soKSwgIlxuIik7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0K
QEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlYwogICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSk7CiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsK
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcihraW5k
KTsKLSAgICBkYXRhTG9nRigiPCVkPiAlcCAvICVwOiBpbiAlcyBvZiAiLCBjdXJyZW50VGhyZWFk
KCksIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCk7CisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAl
cDogaW4gJXMgb2YgIiwgJlRocmVhZDo6Y3VycmVudCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1l
bnQpOwogICAgIGRhdGFMb2coKmNvZGVCbG9jayk7CiAgICAgZGF0YUxvZ0YoIiBmdW5jdGlvbiAl
cCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNh
bGxlZUxvY2FscyA9ICV1LCBjYWxsZXIgPSAlcC5cbiIsCiAgICAgICAgIGNhbGxlZSwgZXhlY3V0
YWJsZSwgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBj
b2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzLCBleGVjLT5jYWxsZXJGcmFtZSgpKTsKQEAgLTI3
NSw4ICsyNzUsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9j
b25zdHJ1Y3QpCiBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZSkKIHsKICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSk7Ci0gICAg
ZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBcbiIs
Ci0gICAgICAgICAgICBjdXJyZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAl
cDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHBjID0gJXBcbiIsCisgICAgICAgICAgICAmVGhyZWFk
OjpjdXJyZW50KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAgICAgICAg
IGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCkBAIC0yOTQsOCArMjk0LDggQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxf
dHJhY2UpCiB7Ci0gICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwg
Y2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCi0gICAgICAgICAgICBjdXJy
ZW50VGhyZWFkKCksCisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNp
YWwgY2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAgICAgICAm
VGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKICAgICAg
ICAgICAgIGV4ZWMsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVj
LT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHAKaW5kZXggNjkwYmMxMjI5ZjIx
NDBhMDhkYmE3N2I3ZTU1YmEyYzIxZjhjMjdiZi4uN2QxYzA2YTk1NDFiMTUwMTMwMjQ2OGFjYmIw
MWY4Njc0NDg5YWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvblNjb3BlLmNwcApAQCAtNTUsMTQgKzU1LDE0IEBAIENTdHJpbmcgRXhjZXB0aW9uU2Nv
cGU6OnVuZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlKCkKIHsKICAgICBTdHJpbmdQcmludFN0cmVh
bSBvdXQ7CiAKLSAgICBvdXQucHJpbnRsbigiVW5leHBlY3RlZCBleGNlcHRpb24gb2JzZXJ2ZWQg
b24gdGhyZWFkICIsIGN1cnJlbnRUaHJlYWQoKSwgIiBhdDoiKTsKKyAgICBvdXQucHJpbnRsbigi
VW5leHBlY3RlZCBleGNlcHRpb24gb2JzZXJ2ZWQgb24gdGhyZWFkICIsIFRocmVhZDo6Y3VycmVu
dCgpLCAiIGF0OiIpOwogICAgIGF1dG8gY3VycmVudFN0YWNrID0gU3RhY2tUcmFjZTo6Y2FwdHVy
ZVN0YWNrVHJhY2UoT3B0aW9uczo6dW5leHBlY3RlZEV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdCgp
LCAxKTsKICAgICBjdXJyZW50U3RhY2stPmR1bXAob3V0LCAiICAgICIpOwogCiAgICAgaWYgKCFt
X3ZtLm5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdygpKQogICAgICAgICByZXR1cm4gQ1N0cmlu
ZygpOwogICAgIAotICAgIG91dC5wcmludGxuKCJUaGUgZXhjZXB0aW9uIHdhcyB0aHJvd24gZnJv
bSB0aHJlYWQgIiwgbV92bS50aHJvd2luZ1RocmVhZCgpLCAiIGF0OiIpOworICAgIG91dC5wcmlu
dGxuKCJUaGUgZXhjZXB0aW9uIHdhcyB0aHJvd24gZnJvbSB0aHJlYWQgIiwgKm1fdm0udGhyb3dp
bmdUaHJlYWQoKSwgIiBhdDoiKTsKICAgICBtX3ZtLm5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJv
dygpLT5kdW1wKG91dCwgIiAgICAiKTsKIAogICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IGRlYTA1MDI4Y2Q3MzVlYjYz
OTE3NDcwYzE1MjJiMTgyNDVkZTU3NTUuLmJlZGYyYjU3MjgwNjc3NDY0N2RlMjFiN2MzMThmZmEz
OGVlMzc2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC05OCw3
ICs5OCw3IEBAIGNsYXNzIEpTTG9jayA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxKU0xv
Y2s+IHsKICAgICAgICAgICAgIHJldHVybiBtX293bmVyVGhyZWFkOwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KLSAgICBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2Nr
KCkgeyByZXR1cm4gbV9oYXNPd25lclRocmVhZCAmJiBtX293bmVyVGhyZWFkLT5pZCgpID09IGN1
cnJlbnRUaHJlYWQoKTsgfQorICAgIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB7
IHJldHVybiBtX2hhc093bmVyVGhyZWFkICYmIG1fb3duZXJUaHJlYWQuZ2V0KCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpOyB9CiAKICAgICB2b2lkIHdpbGxEZXN0cm95Vk0oVk0qKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDVhYmRmYmJkODhiYTI4NWYxYTM1OGQ4NzEz
YjY1YTIyZTY1NDkxZTAuLjY4ZmJjZTdiZWZhM2JiMjhiODI1ZjIzY2I1NzNhY2M1YTVhODZiODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTY4OSw3ICs2ODksNyBAQCB2
b2lkIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0
aW9uKQogCiAjaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAgICAgbV9u
YXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3cgPSBTdGFja1RyYWNlOjpjYXB0dXJlU3RhY2tUcmFj
ZShPcHRpb25zOjp1bmV4cGVjdGVkRXhjZXB0aW9uU3RhY2tUcmFjZUxpbWl0KCkpOwotICAgIG1f
dGhyb3dpbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgbV90aHJvd2luZ1RocmVhZCA9
ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCAzNjY4NzNiMmI3OWQ5ZDUzZmNmOWJhZjM2ZjZjNWUyNTlkM2Y5YjAwLi5hNmMy
ZDUzZmM4MDFkMWNkYWRkZmYxYTFmYWNjNTQ1NDljYWJhY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTcxMSw3ICs3MTEsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAj
aWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04pCiAgICAgU3RhY2tUcmFjZSog
bmF0aXZlU3RhY2tUcmFjZU9mTGFzdFRocm93KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVTdGFj
a1RyYWNlT2ZMYXN0VGhyb3cuZ2V0KCk7IH0KLSAgICBUaHJlYWRJZGVudGlmaWVyIHRocm93aW5n
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd2luZ1RocmVhZDsgfQorICAgIFRocmVhZCog
dGhyb3dpbmdUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3Rocm93aW5nVGhyZWFkLmdldCgpOyB9
CiAjZW5kaWYKIAogI2lmIFVTRShDRikKQEAgLTc1NCw3ICs3NTQsNyBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgICAg
ICBtX25lZWRFeGNlcHRpb25DaGVjayA9IGZhbHNlOwogICAgICAgICBtX25hdGl2ZVN0YWNrVHJh
Y2VPZkxhc3RUaHJvdyA9IG51bGxwdHI7Ci0gICAgICAgIG1fdGhyb3dpbmdUaHJlYWQgPSAwOwor
ICAgICAgICBtX3Rocm93aW5nVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgogICAgICAgICBtX2V4
Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgfQpAQCAtODA2LDcgKzgwNiw3IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgbXV0YWJsZSBib29sIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIHsgZmFsc2Ug
fTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tUcmFjZT4gbV9uYXRpdmVTdGFja1RyYWNlT2ZM
YXN0VGhyb3c7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IG1fbmF0aXZlU3RhY2tU
cmFjZU9mTGFzdFNpbXVsYXRlZFRocm93OwotICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJvd2lu
Z1RocmVhZDsKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Rocm93aW5nVGhyZWFkOwogI2VuZGlmCiAK
ICAgICBib29sIG1fZmFpbE5leHROZXdDb2RlQmxvY2sgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCA5YTJkMmFjYmEzZjQ3MDEy
YTAyMTNhNWRiMDZmOWM2OGI2ZDFhOTYwLi5jZDkxZWUxYTRlMDMwZThlOGNhYTE1Y2E3ZjllYWFh
YTQxMDJjZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZl
cmlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVy
LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSGVhcFZlcmlmaWVyOjpwcmludFZlcmlmaWNh
dGlvbkhlYWRlcigpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUo
KSk7CiAgICAgQ29sbGVjdGlvblNjb3BlIHNjb3BlID0gY3VycmVudEN5Y2xlKCkuc2NvcGU7CiAg
ICAgTW9ub3RvbmljVGltZSBnY0N5Y2xlVGltZXN0YW1wID0gY3VycmVudEN5Y2xlKCkudGltZXN0
YW1wOwotICAgIGRhdGFMb2coIlZlcmlmeWluZyBoZWFwIGluIFtwIiwgZ2V0Q3VycmVudFByb2Nl
c3NJRCgpLCAiLCB0IiwgY3VycmVudFRocmVhZCgpLCAiXSB2bSAiLAorICAgIGRhdGFMb2coIlZl
cmlmeWluZyBoZWFwIGluIFtwIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiLCAiLCBUaHJlYWQ6
OmN1cnJlbnQoKSwgIl0gdm0gIiwKICAgICAgICAgUmF3UG9pbnRlcihtX2hlYXAtPnZtKCkpLCAi
IG9uICIsIHNjb3BlLCAiIEdDIEAgIiwgZ2NDeWNsZVRpbWVzdGFtcCwgIlxuIik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYv
TWFpblRocmVhZC5jcHAKaW5kZXggMmM0MTYyN2Q2ZTc5NDBkNDhjOTVkYzczYWNlM2ZiYjI2MTM4
NmJkMy4uNGMyMjNlYTNjMjQ0ZWMyNjE3ZDRiYmJkMzkwNmZiNzAzOGM5Y2E0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWFp
blRocmVhZC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHN0YXRpYyBi
b29sIGNhbGxiYWNrc1BhdXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgb25seSBhY2Nl
c3NlZCBmcm9tIG1haW4gdGhyZWFkLgogI2lmICFQTEFURk9STShDT0NPQSkKLXN0YXRpYyBUaHJl
YWRJZGVudGlmaWVyIG1haW5UaHJlYWRJZGVudGlmaWVyOworc3RhdGljIFRocmVhZCogbWFpblRo
cmVhZCB7IG51bGxwdHIgfTsKICNlbmRpZgogCiBzdGF0aWMgU3RhdGljTG9jayBtYWluVGhyZWFk
RnVuY3Rpb25RdWV1ZU11dGV4OwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGluaXRpYWxpemVNYWlu
VGhyZWFkKCkKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplS2V5LCBbXSB7CiAgICAgICAg
IGluaXRpYWxpemVUaHJlYWRpbmcoKTsKICNpZiAhUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIG1h
aW5UaHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBtYWluVGhyZWFk
ID0gJlRocmVhZDo6Y3VycmVudCgpOwogI2VuZGlmCiAgICAgICAgIGluaXRpYWxpemVNYWluVGhy
ZWFkUGxhdGZvcm0oKTsKICAgICAgICAgaW5pdGlhbGl6ZUdDVGhyZWFkcygpOwpAQCAtNzIsNyAr
NzIsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCkKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiBib29sIGlzTWFpblRocmVhZCgpCiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBt
YWluVGhyZWFkSWRlbnRpZmllcjsKKyAgICByZXR1cm4gJlRocmVhZDo6Y3VycmVudCgpID09IG1h
aW5UaHJlYWQ7CiB9CiAjZW5kaWYKIApAQCAtOTgsOSArOTgsOSBAQCB2b2lkIGluaXRpYWxpemVX
ZWJUaHJlYWQoKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgIVVTRShXRUJfVEhS
RUFEKQotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRp
ZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFRo
cmVhZCYgdGhyZWFkKQogewotICAgIHJldHVybiB0aHJlYWRJZCA9PSBjdXJyZW50VGhyZWFkKCk7
CisgICAgcmV0dXJuIHRocmVhZCA9PSBUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmgKaW5kZXggYzk1ZjkyZmJkZjNhNGJkMzU4NzlkYmRlZWEwZDE1MWE0YzAyOTAy
Yi4uZWQxZDQ5NWZlYmQ3MmY1ZTgwM2FjNWRiNDY0MTFkNzc4ZTI0MmVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3Ry
ZWFtOworY2xhc3MgVGhyZWFkOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CkBA
IC01NCwxNCArNTUsMTMgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWFpblRocmVhZENh
bGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlz
TWFpblRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5BY2Nlc3NUaHJlYWRM
b2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkJik7CiAKICNpZiBV
U0UoV0VCX1RIUkVBRCkKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV2ViVGhyZWFkKCk7CiBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1VJVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0aWFsaXplV2ViVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0
aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRJZGVudGlmaWVyKCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogdm9pZCBpbml0aWFsaXpl
V2ViVGhyZWFkUGxhdGZvcm0oKTsKICNlbHNlCiBpbmxpbmUgYm9vbCBpc1dlYlRocmVhZCgpIHsg
cmV0dXJuIGlzTWFpblRocmVhZCgpOyB9CkBAIC0xMTMsOCArMTEzLDcgQEAgdXNpbmcgV1RGOjpj
YWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQ7CiAjZW5kaWYKICNpZiBV
U0UoV0VCX1RIUkVBRCkKIHVzaW5nIFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZDsKLXVzaW5nIFdU
Rjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyOwotdXNpbmcgV1RGOjpp
bml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcjsKK3VzaW5nIFdURjo6aW5pdGlhbGl6ZUFwcGxp
Y2F0aW9uVUlUaHJlYWQ7CiAjZW5kaWYKIAogI2VuZGlmIC8vIE1haW5UaHJlYWRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJr
aW5nTG90LmNwcAppbmRleCBmOGZlZDg4YjFmN2M5OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNjZTFj
Li5iMTRkN2EyY2RlZDhmNWVkM2QzNDAyZjc4ODBkMzcxNjI2ODllOGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5n
TG90LmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICB2b2lkIGVucXVl
dWUoVGhyZWFkRGF0YSogZGF0YSkKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVucXVldWVpbmcgIiwg
UmF3UG9pbnRlcihkYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2ludGVyKGRhdGEtPmFk
ZHJlc3MpLCAiIG9udG8gIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAgICAgICAgICAg
ZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyAiLCBSYXdQ
b2ludGVyKGRhdGEpLCAiIHdpdGggYWRkcmVzcyA9ICIsIFJhd1BvaW50ZXIoZGF0YS0+YWRkcmVz
cyksICIgb250byAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIEFTU0VSVChk
YXRhLT5hZGRyZXNzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLT5uZXh0SW5RdWV1ZSk7CiAgICAg
ICAgIApAQCAtOTksMTEgKzk5LDExIEBAIHN0cnVjdCBCdWNrZXQgewogICAgIHZvaWQgZ2VuZXJp
Y0RlcXVldWUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRl
cXVldWVpbmcgZnJvbSBidWNrZXQgYXQgIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAg
ICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZGVxdWV1ZWlu
ZyBmcm9tIGJ1Y2tldCBhdCAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIXF1ZXVlSGVhZCkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAg
ICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVtcHR5Llxu
IikpOworICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCks
ICI6IGVtcHR5LlxuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0
MywxNCArMTQzLDE0IEBAIHN0cnVjdCBCdWNrZXQgewogICAgICAgICB3aGlsZSAoc2hvdWxkQ29u
dGludWUpIHsKICAgICAgICAgICAgIFRocmVhZERhdGEqIGN1cnJlbnQgPSAqY3VycmVudFB0cjsK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJp
bmcoY3VycmVudFRocmVhZCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCks
ICJcbiIpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVu
dCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJcbiIpKTsKICAgICAg
ICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IERlcXVldWVSZXN1bHQgcmVzdWx0ID0gZnVuY3RvcihjdXJyZW50LCB0aW1lVG9CZUZhaXIpOwog
ICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJl
c3VsdDo6SWdub3JlOgogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3VycmVudFB0ciA9
ICIsIFJhd1BvaW50ZXIoY3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRl
cigqY3VycmVudFB0ciksICJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0
cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3VycmVudFB0ciA9ICIsIFJhd1BvaW50ZXIoY3Vy
cmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigqY3VycmVudFB0ciksICJc
biIpKTsKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAg
ICAgY3VycmVudFB0ciA9ICYoKmN1cnJlbnRQdHIpLT5uZXh0SW5RdWV1ZTsKICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICAgICAg
ICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJlc3VsdDo6UmVt
b3ZlQW5kQ29udGludWU6CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBkZXF1ZXVlaW5n
ICIsIFJhd1BvaW50ZXIoY3VycmVudCksICIgZnJvbSAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4i
KSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50
KCksICI6IGRlcXVldWVpbmcgIiwgUmF3UG9pbnRlcihjdXJyZW50KSwgIiBmcm9tICIsIFJhd1Bv
aW50ZXIodGhpcyksICJcbiIpKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBxdWV1
ZVRhaWwpCiAgICAgICAgICAgICAgICAgICAgIHF1ZXVlVGFpbCA9IHByZXZpb3VzOwogICAgICAg
ICAgICAgICAgIGRpZERlcXVldWUgPSB0cnVlOwpAQCAtMjcxLDcgKzI3MSw3IEBAIEhhc2h0YWJs
ZSogZW5zdXJlSGFzaHRhYmxlKCkKICAgICAgICAgICAgIGN1cnJlbnRIYXNodGFibGUgPSBIYXNo
dGFibGU6OmNyZWF0ZShtYXhMb2FkRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChoYXNodGFibGUu
Y29tcGFyZUV4Y2hhbmdlV2VhayhudWxscHRyLCBjdXJyZW50SGFzaHRhYmxlKSkgewogICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3Ry
aW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBpbml0aWFsIGhhc2h0YWJsZSAiLCBSYXdQ
b2ludGVyKGN1cnJlbnRIYXNodGFibGUpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IGNyZWF0ZWQgaW5pdGlhbCBoYXNo
dGFibGUgIiwgUmF3UG9pbnRlcihjdXJyZW50SGFzaHRhYmxlKSwgIlxuIikpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBjdXJyZW50SGFzaHRhYmxlOwogICAgICAgICAgICAgfQogCkBAIC0zNDYs
NyArMzQ2LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51bVRocmVhZHMp
CiAgICAgSGFzaHRhYmxlKiBvbGRIYXNodGFibGUgPSBoYXNodGFibGUubG9hZCgpOwogICAgIGlm
IChvbGRIYXNodGFibGUgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihvbGRIYXNodGFibGUtPnNpemUp
IC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihudW1UaHJlYWRzKSA+PSBtYXhMb2FkRmFjdG9yKSB7CiAg
ICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50
VGhyZWFkKCksICI6IG5vIG5lZWQgdG8gcmVoYXNoIGJlY2F1c2UgIiwgb2xkSGFzaHRhYmxlLT5z
aXplLCAiIC8gIiwgbnVtVGhyZWFkcywgIiA+PSAiLCBtYXhMb2FkRmFjdG9yLCAiXG4iKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBubyBuZWVk
IHRvIHJlaGFzaCBiZWNhdXNlICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVh
ZHMsICIgPj0gIiwgbWF4TG9hZEZhY3RvciwgIlxuIikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVk
IG51bVRocmVhZHMpCiAgICAgb2xkSGFzaHRhYmxlID0gaGFzaHRhYmxlLmxvYWQoKTsKICAgICBp
ZiAob2xkSGFzaHRhYmxlICYmIHN0YXRpY19jYXN0PGRvdWJsZT4ob2xkSGFzaHRhYmxlLT5zaXpl
KSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obnVtVGhyZWFkcykgPj0gbWF4TG9hZEZhY3Rvcikgewog
ICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVu
dFRocmVhZCgpLCAiOiBhZnRlciBsb2NraW5nLCBubyBuZWVkIHRvIHJlaGFzaCBiZWNhdXNlICIs
IG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMsICIgPj0gIiwgbWF4TG9hZEZh
Y3RvciwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJl
bnQoKSwgIjogYWZ0ZXIgbG9ja2luZywgbm8gbmVlZCB0byByZWhhc2ggYmVjYXVzZSAiLCBvbGRI
YXNodGFibGUtPnNpemUsICIgLyAiLCBudW1UaHJlYWRzLCAiID49ICIsIG1heExvYWRGYWN0b3Is
ICJcbiIpKTsKICAgICAgICAgdW5sb2NrSGFzaHRhYmxlKGJ1Y2tldHNUb1VubG9jayk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIGVuc3VyZUhhc2h0
YWJsZVNpemUodW5zaWduZWQgbnVtVGhyZWFkcykKICAgICAKICAgICBIYXNodGFibGUqIG5ld0hh
c2h0YWJsZSA9IEhhc2h0YWJsZTo6Y3JlYXRlKG5ld1NpemUpOwogICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBuZXcg
aGFzaHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKKyAgICAgICAg
ZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3JlYXRlZCBuZXcgaGFzaHRh
YmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKICAgICBmb3IgKFRocmVh
ZERhdGEqIHRocmVhZERhdGEgOiB0aHJlYWREYXRhcykgewogICAgICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiByZWhhc2hp
bmcgdGhyZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3Mg
PSAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAg
ICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiByZWhhc2hpbmcgdGhyZWFk
IGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQ
b2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CiAgICAgICAgIHVuc2lnbmVkIGhh
c2ggPSBoYXNoQWRkcmVzcyh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAgICAgdW5zaWduZWQg
aW5kZXggPSBoYXNoICUgbmV3SGFzaHRhYmxlLT5zaXplOwogICAgICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBpbmRleCA9
ICIsIGluZGV4LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6
Y3VycmVudCgpLCAiOiBpbmRleCA9ICIsIGluZGV4LCAiXG4iKSk7CiAgICAgICAgIEJ1Y2tldCog
YnVja2V0ID0gbmV3SGFzaHRhYmxlLT5kYXRhW2luZGV4XS5sb2FkKCk7CiAgICAgICAgIGlmICgh
YnVja2V0KSB7CiAgICAgICAgICAgICBpZiAocmV1c2FibGVCdWNrZXRzLmlzRW1wdHkoKSkKQEAg
LTQ4NSw3ICs0ODUsNyBAQCBib29sIGVucXVldWUoY29uc3Qgdm9pZCogYWRkcmVzcywgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFk
KCksICI6IGVucXVldWVpbmcgb250byBidWNrZXQgIiwgUmF3UG9pbnRlcihidWNrZXQpLCAiIHdp
dGggaW5kZXggIiwgaW5kZXgsICIgZm9yIGFkZHJlc3MgIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwg
IiB3aXRoIGhhc2ggIiwgaGFzaCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyBvbnRvIGJ1Y2tldCAiLCBSYXdQb2lu
dGVyKGJ1Y2tldCksICIgd2l0aCBpbmRleCAiLCBpbmRleCwgIiBmb3IgYWRkcmVzcyAiLCBSYXdQ
b2ludGVyKGFkZHJlc3MpLCAiIHdpdGggaGFzaCAiLCBoYXNoLCAiXG4iKSk7CiAgICAgICAgIGJ1
Y2tldC0+bG9jay5sb2NrKCk7CiAKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaGFzaHRh
YmxlIGNvdWxkIGhhdmUgcmVoYXNoZWQgdW5kZXIgdXMuCkBAIC00OTgsNyArNDk4LDcgQEAgYm9v
bCBlbnF1ZXVlKGNvbnN0IHZvaWQqIGFkZHJlc3MsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAg
ICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICBpZiAodGhyZWFkRGF0YSkgewogICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50
VGhyZWFkKCksICI6IHByb2NlZWRpbmcgdG8gZW5xdWV1ZSAiLCBSYXdQb2ludGVyKHRocmVhZERh
dGEpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1
cnJlbnQoKSwgIjogcHJvY2VlZGluZyB0byBlbnF1ZXVlICIsIFJhd1BvaW50ZXIodGhyZWFkRGF0
YSksICJcbiIpKTsKICAgICAgICAgICAgIGJ1Y2tldC0+ZW5xdWV1ZSh0aHJlYWREYXRhKTsKICAg
ICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNTY3LDcgKzU2Nyw3
IEBAIE5FVkVSX0lOTElORSBQYXJraW5nTG90OjpQYXJrUmVzdWx0IFBhcmtpbmdMb3Q6OnBhcmtD
b25kaXRpb25hbGx5SW1wbCgKICAgICBjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIHRp
bWVvdXQpCiB7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3Vy
cmVudFRocmVhZCgpLCAiOiBwYXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5n
KFRocmVhZDo6Y3VycmVudCgpLCAiOiBwYXJraW5nLlxuIikpOwogICAgIAogICAgIFRocmVhZERh
dGEqIG1lID0gbXlUaHJlYWREYXRhKCk7CiAgICAgbWUtPnRva2VuID0gMDsKQEAgLTY2MSw3ICs2
NjEsNyBAQCBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6UGFya1Jlc3VsdCBQYXJraW5nTG90Ojpw
YXJrQ29uZGl0aW9uYWxseUltcGwoCiBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6VW5wYXJrUmVz
dWx0IFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKQogewogICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjog
dW5wYXJraW5nIG9uZS5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1
cnJlbnQoKSwgIjogdW5wYXJraW5nIG9uZS5cbiIpKTsKICAgICAKICAgICBVbnBhcmtSZXN1bHQg
cmVzdWx0OwogCkBAIC03MDYsNyArNzA2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgUGFya2luZ0xv
dDo6dW5wYXJrT25lSW1wbCgKICAgICBjb25zdCBTY29wZWRMYW1iZGE8aW50cHRyX3QoUGFya2lu
Z0xvdDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJraW5nIG9uZSB0
aGUgaGFyZCB3YXkuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJy
ZW50KCksICI6IHVucGFya2luZyBvbmUgdGhlIGhhcmQgd2F5LlxuIikpOwogICAgIAogICAgIFJl
ZlB0cjxUaHJlYWREYXRhPiB0aHJlYWREYXRhOwogICAgIGJvb2wgdGltZVRvQmVGYWlyID0gZmFs
c2U7CkBAIC03NTEsNyArNzUxLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6
OnVucGFya0NvdW50KGNvbnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICAgICAg
cmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJp
bmcoY3VycmVudFRocmVhZCgpLCAiOiB1bnBhcmtpbmcgY291bnQgPSAiLCBjb3VudCwgIiBmcm9t
ICIsIFJhd1BvaW50ZXIoYWRkcmVzcyksICIuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJp
bmcoVGhyZWFkOjpjdXJyZW50KCksICI6IHVucGFya2luZyBjb3VudCA9ICIsIGNvdW50LCAiIGZy
b20gIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpKTsKICAgICAKICAgICBWZWN0b3I8UmVm
UHRyPFRocmVhZERhdGE+LCA4PiB0aHJlYWREYXRhczsKICAgICBkZXF1ZXVlKApAQCAtNzYxLDcg
Kzc2MSw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChj
b25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3VuCiAgICAgICAgIEJ1Y2tldE1vZGU6Okln
bm9yZUVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQsIGJvb2wpIHsKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmco
Y3VycmVudFRocmVhZCgpLCAiOiBPYnNlcnZpbmcgZWxlbWVudCB3aXRoIGFkZHJlc3MgPSAiLCBS
YXdQb2ludGVyKGVsZW1lbnQtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0
YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogT2JzZXJ2aW5nIGVsZW1lbnQgd2l0
aCBhZGRyZXNzID0gIiwgUmF3UG9pbnRlcihlbGVtZW50LT5hZGRyZXNzKSwgIlxuIikpOwogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPmFkZHJlc3MgIT0gYWRkcmVzcykKICAgICAgICAgICAgICAg
ICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICAgICAgdGhyZWFkRGF0YXMu
YXBwZW5kKGVsZW1lbnQpOwpAQCAtNzczLDcgKzc3Myw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25l
ZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBj
b3VuCiAKICAgICBmb3IgKFJlZlB0cjxUaHJlYWREYXRhPiYgdGhyZWFkRGF0YSA6IHRocmVhZERh
dGFzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhjdXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEu
Z2V0KCkpLCAiIHdpdGggYWRkcmVzcyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3Mp
LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgp
LCAiOiB1bnBhcmtpbmcgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLmdldCgpKSwgIiB3aXRoIGFk
ZHJlc3MgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLT5hZGRyZXNzKSwgIlxuIikpOwogICAgICAg
ICBBU1NFUlQodGhyZWFkRGF0YS0+YWRkcmVzcyk7CiAgICAgICAgIHsKICAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcih0aHJlYWREYXRhLT5wYXJraW5nTG9jayk7CkBAIC03ODMsNyArNzgz
LDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVucGFya0NvdW50KGNvbnN0
IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICB9CiAKICAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRvbmUgdW5wYXJr
aW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAi
OiBkb25lIHVucGFya2luZy5cbiIpKTsKICAgICAKICAgICByZXR1cm4gdGhyZWFkRGF0YXMuc2l6
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIu
aCBiL1NvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmgKaW5kZXggOTdhMjQzYjkw
YmNhYzAwYjJkN2VlY2RmMjdlMDQyNWZjNTJkNjdhNy4uYmVmOWNiYzJlMzQ3MGVkYjY5OTQzMjg0
NDViZDllODAxN2I2MjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9j
a0FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oCkBA
IC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAKICAgICB2
b2lkIGxvY2soKQogICAgIHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRU
aHJlYWQoKTsKLSAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBt
ZSA9IFRocmVhZDo6Y3VycmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAg
ICAgICAgICAgIG1fcmVjdXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZWN1cnNpdmVMb2NrQWRhcHRlciB7CiAgICAg
ICAgIG1fbG9jay5sb2NrKCk7CiAgICAgICAgIEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFT
U0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAg
bV9vd25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1cnNpb25Db3VudCA9IDE7CiAgICAgfQogICAg
IApAQCAtNTUsMTQgKzU1LDE0IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICB7
CiAgICAgICAgIGlmICgtLW1fcmVjdXJzaW9uQ291bnQpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIG1fb3duZXIgPSAwOworICAgICAgICBtX293bmVyID0gbnVsbHB0cjsKICAgICAgICAg
bV9sb2NrLnVubG9jaygpOwogICAgIH0KICAgICAKICAgICBib29sIHRyeUxvY2soKQogICAgIHsK
LSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAg
aWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9IFRocmVhZDo6Y3VycmVu
dCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAgICAgICAgIG1fcmVjdXJz
aW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC03Miw3
ICs3Miw3IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0g
ICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9vd25lciA9ICZtZTsKICAgICAgICAgbV9y
ZWN1cnNpb25Db3VudCA9IDE7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTgzLDcg
KzgzLDcgQEAgY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgewogICAgIH0KICAgICAKIHByaXZh
dGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX293bmVyIHsgMCB9OworICAgIFRocmVhZCogbV9v
d25lciB7IG51bGxwdHIgfTsgLy8gVXNlIFRocmVhZCogaW5zdGVhZCBvZiBSZWZQdHI8VGhyZWFk
PiBzaW5jZSBvd25lciB0aHJlYWQgaXMgYWx3YXlzIGFsaXZlIHdoaWxlIG1fb253ZXIgaXMgZXQu
CiAgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsKICAgICBMb2NrVHlwZSBtX2xv
Y2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMGJlNWExMGVkMGY3MjVmOGQzZTE3ZTFjZjE5
YWIyMDlhOTAwYTgyOS4uYzU2ZjE1NmRkOWNiZWM0OTk5Njk3YzZkNTQ5ZTg3NTZmNzNiMjlmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgcW9zX2NsYXNzX3QgVGhyZWFk
OjphZGp1c3RlZFFPU0NsYXNzKHFvc19jbGFzc190IG9yaWdpbmFsQ2xhc3MpCiAKIHZvaWQgVGhy
ZWFkOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1faWQp
OworICAgIG91dC5wcmludCgiVGhyZWFkOiIsIFJhd1BvaW50ZXIodGhpcykpOwogfQogCiAjaWYg
IUhBVkUoRkFTVF9UTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGVlMTMwM2ExOTFiMDlkNGVjOWRkYzg3
Y2NjODgxNTQyOTdmYTIzMDYuLjlkNTk1Mzc5NmVkNTgyNjg0NzY3OTBjMjAxNGFmZTkwNmM4OTRl
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCkBAIC04MCw3ICs4MCw5IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFk
R3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogICAgIGZyaWVuZCBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgT1MoV0lO
RE9XUykKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbihUaHJlYWRJZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5UaHJlYWQoKTsKIApAQCAtOTEsMTIgKzkzLDE2IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAvLyBSZXR1cm5zIFRocmVhZCBv
YmplY3QuCiAgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCisjaWYgT1MoV0lORE9XUykK
ICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBp
ZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4g
QXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJ
ZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQogICAgIC8vIHRoYXQgdGhlIHRocmVhZCBpbmZvcm1h
dGlvbiBpcyBhbGl2ZS4gV2hpbGUgVGhyZWFkOjpjdXJyZW50KCkgaXMgbm90IHNhZmUgaWYgaXQg
aXMgY2FsbGVkCiAgICAgLy8gZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3RoZXIgVExTIGRh
dGEsIGN1cnJlbnRJRCgpIGFsd2F5cyByZXR1cm5zIG1lYW5pbmdmdWwgdGhyZWFkIElELgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsK
IAorICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisjZW5k
aWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNoYW5nZVByaW9yaXR5KGludCk7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaCgpOwpAQCAtMTM3LDE2ICsxNDMsMTQgQEAgY2xhc3Mg
VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIAotICAg
IFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0KICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgVGhyZWFkJiB0aHJlYWQpCiAgICAgewotICAgICAgICByZXR1cm4g
aWQoKSA9PSB0aHJlYWQuaWQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMgPT0gJnRocmVhZDsKICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGhyZWFkJiB0aHJlYWQpCiAgICAgewot
ICAgICAgICByZXR1cm4gaWQoKSAhPSB0aHJlYWQuaWQoKTsKKyAgICAgICAgcmV0dXJuIHRoaXMg
IT0gJnRocmVhZDsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1U
aHJlYWRpbmcoKTsKQEAgLTI4MCw3ICsyODQsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAKICAgICAvLyBXb3JkTG9jayAmIExvY2sgcmVs
eSBvbiBUaHJlYWRTcGVjaWZpYy4gQnV0IFRocmVhZCBvYmplY3QgY2FuIGJlIGRlc3Ryb3llZCBl
dmVuIGFmdGVyIFRocmVhZFNwZWNpZmljIHRoaW5ncyBhcmUgZGVzdHJveWVkLgogICAgIHN0ZDo6
bXV0ZXggbV9tdXRleDsKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAwIH07CiAgICAgSm9p
bmFibGVTdGF0ZSBtX2pvaW5hYmxlU3RhdGUgeyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9pc1No
dXR0aW5nRG93biB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwpAQCAt
Mjg4LDcgKzI5MSw5IEBAIGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxUaHJlYWQ+IHsKICAgICBTdGFja0JvdW5kcyBtX3N0YWNrIHsgU3RhY2tCb3VuZHM6OmVtcHR5
Qm91bmRzKCkgfTsKICAgICBWZWN0b3I8c3RkOjp3ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhy
ZWFkR3JvdXBzOwogICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxlOwotI2lmIE9TKERB
UldJTikKKyNpZiBPUyhXSU5ET1dTKQorICAgIFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsK
KyNlbGlmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwogI2Vs
aWYgVVNFKFBUSFJFQURTKQogICAgIFBsYXRmb3JtUmVnaXN0ZXJzKiBtX3BsYXRmb3JtUmVnaXN0
ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMzA3LDExICszMTIsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgdm9pZCogbV9zYXZlZExhc3RT
dGFja1RvcDsKIH07CiAKLWlubGluZSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQot
ewotICAgIHJldHVybiBUaHJlYWQ6OmN1cnJlbnRJRCgpOwotfQotCiBpbmxpbmUgVGhyZWFkKiBU
aHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQogewogI2lmICFIQVZFKEZBU1RfVExTKQpAQCAtMzQ1
LDExICszNDUsMTAgQEAgaW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6
VGhyZWFkOwotdXNpbmcgV1RGOjpjdXJyZW50VGhyZWFkOwogCiAjaWYgT1MoV0lORE9XUykKK3Vz
aW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwogdXNp
bmcgV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oCmluZGV4IDZlODhhYTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZhZGMz
MGM2ZDIuLjRhY2UyOGYxZjU5Zjg4Njk3MDkxMDA4YTBhMGIxMjAxMGM5NzYyYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKLXVzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFRocmVh
ZEZ1bmN0aW9uID0gdm9pZCAoKikodm9pZCogYXJndW1lbnQpOwogCiAjaWYgVVNFKFBUSFJFQURT
KQpAQCAtNTMsNiArNTIsNyBAQCB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRf
dDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0Zm9y
bUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90OwogI2VsaWYgT1MoV0lORE9XUykKK3VzaW5nIFRo
cmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0g
SEFORExFOwogc3RydWN0IFBsYXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04gbV9p
bnRlcm5hbE11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDgzYjlk
NTA5OTUyNWIwNmI2MGU5MTEwM2RkZjUyNjQ5YmE5MDgwM2MuLjJjNTYyZTY2OWQwYTE3MzU1ODdi
NjY0MzIzZWFmMTM2ODhkMTYyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAK
QEAgLTI4MCw5ICsyODAsOSBAQCBpbnQgVGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbigpCiAgICAg
aW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pvaW4oaGFuZGxlLCAwKTsKIAogICAgIGlmIChqb2lu
UmVzdWx0ID09IEVERUFETEspCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAl
dSB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAg
ICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlp
bmcgdG8gcXVpdCIsIHRoaXMpOwogICAgIGVsc2UgaWYgKGpvaW5SZXN1bHQpCi0gICAgICAgIExP
R19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIs
IG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGpv
aW5lZC5cbiIsIHRoaXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tl
cihtX211dGV4KTsKICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAg
LTMwMCw3ICszMDAsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwogICAgIGludCBkZXRhY2hSZXN1bHQgPSBw
dGhyZWFkX2RldGFjaChtX2hhbmRsZSk7CiAgICAgaWYgKGRldGFjaFJlc3VsdCkKLSAgICAgICAg
TE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyB1bmFibGUgdG8gYmUgZGV0YWNoZWRc
biIsIG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJl
IGRldGFjaGVkXG4iLCB0aGlzKTsKIAogICAgIGlmICghaGFzRXhpdGVkKCkpCiAgICAgICAgIGRp
ZEJlY29tZURldGFjaGVkKCk7CkBAIC0zMTcsMTEgKzMxNyw2IEBAIFRocmVhZCYgVGhyZWFkOjpp
bml0aWFsaXplQ3VycmVudFRMUygpCiAgICAgcmV0dXJuIGluaXRpYWxpemVUTFMoV1RGTW92ZSh0
aHJlYWQpKTsKIH0KIAotVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCi17Ci0g
ICAgcmV0dXJuIGN1cnJlbnQoKS5pZCgpOwotfQotCiBib29sIFRocmVhZDo6c2lnbmFsKGludCBz
aWduYWxOdW1iZXIpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlciht
X211dGV4KTsKQEAgLTMzMyw3ICszMjgsNyBAQCBib29sIFRocmVhZDo6c2lnbmFsKGludCBzaWdu
YWxOdW1iZXIpCiAKIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9pZCwgUGxh
dGZvcm1TdXNwZW5kRXJyb3I+CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGlk
KCkgIT0gY3VycmVudFRocmVhZCgpLCAiV2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUg
Y3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FH
RSh0aGlzICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1c3BlbmRp
bmcgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICAvLyBEdXJpbmcgc3VzcGVuZCwg
c3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9tIHRoZSBvdGhlciB0
aHJlYWRzLgogICAgIC8vIFdlIHVzZSBnbG9iYWwgbG9jayBpbnN0ZWFkIG9mIHBlciB0aHJlYWQg
bG9jay4KICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNhc2UsIHRoZXJlIGFyZSB0aHJl
YWRzIEEgYW5kIEIuCkBAIC00NTEsMTMgKzQ0Niw5IEBAIHZvaWQgVGhyZWFkOjplc3RhYmxpc2hQ
bGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCBoYW5kbGUpCiB7CiAgICAgc3RkOjpsb2Nr
X2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBtX2hhbmRsZSA9IGhhbmRs
ZTsKLSAgICBpZiAoIW1faWQpIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6YXRvbWljPFRocmVhZElk
ZW50aWZpZXI+IHByb3ZpZGVyIHsgMCB9OwotICAgICAgICBtX2lkID0gKytwcm92aWRlcjsKICNp
ZiBPUyhEQVJXSU4pCi0gICAgICAgIG1fcGxhdGZvcm1UaHJlYWQgPSBwdGhyZWFkX21hY2hfdGhy
ZWFkX25wKGhhbmRsZSk7CisgICAgbV9wbGF0Zm9ybVRocmVhZCA9IHB0aHJlYWRfbWFjaF90aHJl
YWRfbnAoaGFuZGxlKTsKICNlbmRpZgotICAgIH0KIH0KIAogI2lmICFIQVZFKEZBU1RfVExTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggYmVjMGQzNDNkYWU1ZWVkNDFmOTUxYjNlOTZiZGZm
ZjA1NjU3ZDgxNy4uYTgxNTkwNDA2OTY3ZDZlODU2NjkxNTM3ZTIwY2M1ZTgxZTFiOWMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgaW50IFRocmVhZDo6d2Fp
dEZvckNvbXBsZXRpb24oKQogCiAgICAgRFdPUkQgam9pblJlc3VsdCA9IFdhaXRGb3JTaW5nbGVP
YmplY3QoaGFuZGxlLCBJTkZJTklURSk7CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gV0FJVF9GQUlM
RUQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQgdG8g
YmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0dfRVJST1Io
IlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIHRo
aXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsK
ICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTIxNiw3ICsyMTYs
NyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKIAogYXV0byBUaHJlYWQ6OnN1c3BlbmQoKSAtPiBF
eHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsKLSAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX01FU1NBR0UoaWQoKSAhPSBjdXJyZW50VGhyZWFkKCksICJXZSBkbyBub3Qgc3VwcG9y
dCBzdXNwZW5kaW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7CisgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMgIT0gJlRocmVhZDo6Y3VycmVudCgpLCAiV2UgZG8gbm90
IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOwogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKICAgICBEV09SRCByZXN1bHQgPSBT
dXNwZW5kVGhyZWFkKG1faGFuZGxlKTsKICAgICBpZiAocmVzdWx0ICE9IChEV09SRCktMSkKQEAg
LTI5Myw3ICsyOTMsNyBAQCBUaHJlYWQqIFRocmVhZDo6Y3VycmVudER5aW5nKCkKICAgICBBU1NF
UlQoc19rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKICAgICAvLyBBZnRlciBGTFMg
aXMgZGVzdHJveWVkLCB0aGlzIG1hcCBvZmZlcnMgdGhlIHZhbHVlIHVudGlsIHRoZSBzZWNvbmQg
dGhyZWFkIGV4aXQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6
Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgcmV0dXJuIHRocmVhZE1hcCgp
LmdldChjdXJyZW50VGhyZWFkKCkpOworICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoY3VycmVu
dElEKCkpOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2RlIG9uY2Ug
PHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJl
YWRNYWMubW0KaW5kZXggMzFkODE0YmY3YTdiOTY1Nzk1MmU4NWY4ZGZkNjQ2MDg4ZTNlZDcyNS4u
MTQyMTU5MGJjZTdkMzVlYWEzMDdhZjY4Yjk3MGU5NWM2MmJkOTRkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KKysrIGIvU291cmNlL1dURi93dGYvbWFj
L01haW5UaHJlYWRNYWMubW0KQEAgLTY2LDggKzY2LDggQEAgc3RhdGljIHB0aHJlYWRfdCBtYWlu
VGhyZWFkUHRocmVhZDsKIHN0YXRpYyBOU1RocmVhZCogbWFpblRocmVhZE5TVGhyZWFkOwogCiAj
aWYgVVNFKFdFQl9USFJFQUQpCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzQXBwbGljYXRpb25V
SVRocmVhZElkZW50aWZpZXI7Ci1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzV2ViVGhyZWFkSWRl
bnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIHNBcHBsaWNhdGlvblVJVGhyZWFkOworc3RhdGljIFRo
cmVhZCogc1dlYlRocmVhZDsKICNlbmRpZgogCiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxh
dGZvcm0oKQpAQCAtMTczLDE2ICsxNzMsMTAgQEAgYm9vbCBpc1dlYlRocmVhZCgpCiAgICAgcmV0
dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5UaHJlYWRQdGhyZWFkKTsKIH0K
IAotdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKQordm9pZCBp
bml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpCiB7CiAgICAgQVNTRVJUKHB0aHJlYWRfbWFp
bl9ucCgpKTsKLSAgICBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhy
ZWFkKCk7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZVdlYlRocmVhZElkZW50aWZpZXIoKQotewotICAg
IEFTU0VSVCghcHRocmVhZF9tYWluX25wKCkpOwotICAgIHNXZWJUaHJlYWRJZGVudGlmaWVyID0g
Y3VycmVudFRocmVhZCgpOworICAgIHNBcHBsaWNhdGlvblVJVGhyZWFkID0gJlRocmVhZDo6Y3Vy
cmVudCgpOwogfQogCiB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCkBAIC0xOTIs
MTYgKzE4NiwxOCBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCiAgICAgbWFp
blRocmVhZEVzdGFibGlzaGVkQXNQdGhyZWFkTWFpbiA9IGZhbHNlOwogICAgIG1haW5UaHJlYWRQ
dGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CiAgICAgbWFpblRocmVhZE5TVGhyZWFkID0gW1tOU1Ro
cmVhZCBjdXJyZW50VGhyZWFkXSByZXRhaW5dOworCisgICAgc1dlYlRocmVhZCA9ICZUaHJlYWQ6
OmN1cnJlbnQoKTsKIH0KIAotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQo
VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRh
Rm9yVGhyZWFkKFRocmVhZCYgdGhyZWFkKQogewotICAgIFRocmVhZElkZW50aWZpZXIgY3VycmVu
dFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIGlmICh0aHJlYWRJZCA9PSBjdXJyZW50
VGhyZWFkSWQpCisgICAgVGhyZWFkJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CisgICAgaWYgKHRocmVhZCA9PSBjdXJyZW50VGhyZWFkKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGlmICh0aHJlYWRJZCA9PSBzV2ViVGhyZWFkSWRlbnRpZmllciB8fCB0aHJlYWRJZCA9
PSBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiAoY3VycmVu
dFRocmVhZElkID09IHNXZWJUaHJlYWRJZGVudGlmaWVyIHx8IGN1cnJlbnRUaHJlYWRJZCA9PSBz
QXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIpICYmIHdlYlRocmVhZElzVW5pbml0aWFsaXpl
ZE9yTG9ja2VkT3JEaXNhYmxlZCgpOworICAgIGlmICgmdGhyZWFkID09IHNXZWJUaHJlYWQgfHwg
JnRocmVhZCA9PSBzQXBwbGljYXRpb25VSVRocmVhZCkKKyAgICAgICAgcmV0dXJuICgmY3VycmVu
dFRocmVhZCA9PSBzV2ViVGhyZWFkIHx8ICZjdXJyZW50VGhyZWFkID09IHNBcHBsaWNhdGlvblVJ
VGhyZWFkKSAmJiB3ZWJUaHJlYWRJc1VuaW5pdGlhbGl6ZWRPckxvY2tlZE9yRGlzYWJsZWQoKTsK
IAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggMTNmMzEyMTU2YzY0OGZmMjUy
YTg2Y2I0ZWRlZGE2NGM4MWU5N2YwMi4uNWRlNjlhODJkNDhlMDQ5NTFjYTA4ZjZjYTYzZTM5ZWZh
MWY0NmRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTM1LDEwICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQkFjdGl2ZURPTU9iamVjdCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogcHVibGljOgotICAgIFRocmVhZElkZW50aWZpZXIgb3JpZ2luVGhyZWFkSUQoKSBjb25zdCB7
IHJldHVybiBtX29yaWdpblRocmVhZElEOyB9CisgICAgVGhyZWFkJiBvcmlnaW5UaHJlYWQoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZC5nZXQoKTsgfQogCiAgICAgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCkgZmluYWwgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9v
cmlnaW5UaHJlYWQuZ2V0KCkpOwogCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dExvY2spOwogICAgICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHRE
ZXN0cm95ZWQoKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0IDog
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gUGFyYW1ldGVycywgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZvaWQgcGVyZm9y
bUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoVCYgb2JqZWN0LCB2b2lkIChUOjoqbWV0aG9kKShQYXJh
bWV0ZXJzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKG9yaWdpblRocmVhZElEKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZElEKCkpOworICAgICAg
ICBBU1NFUlQob3JpZ2luVGhyZWFkKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZCgpKTsKIAotICAg
ICAgICBpZiAob2JqZWN0Lm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7Cisg
ICAgICAgIGlmIChvYmplY3Qub3JpZ2luVGhyZWFkKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpIHsK
ICAgICAgICAgICAgIChvYmplY3QuKm1ldGhvZCkoYXJndW1lbnRzLi4uKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBJREJBY3RpdmVET01P
YmplY3QgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIAogICAgIHZvaWQgY2FsbEZ1bmN0aW9u
T25PcmlnaW5UaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgIHsK
LSAgICAgICAgaWYgKG9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7CisgICAg
ICAgIGlmIChvcmlnaW5UaHJlYWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSkgewogICAgICAgICAg
ICAgZnVuY3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODcsNyAr
ODcsNyBAQCBjbGFzcyBJREJBY3RpdmVET01PYmplY3QgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX29yaWdpblRocmVh
ZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9vcmlnaW5UaHJlYWQg
eyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogICAgIExvY2sgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
TG9jazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuY3BwCmluZGV4IDYyZmExNTFjYWIwOTdiZjQ5ZGUzMTExYzczOTBjNGExZTdlMDRjZWYuLmZj
MDZiMzEzMDMzM2U3ODQ2M2VkNjNjNGU5NDBjNTU2NDg5MmEwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtNjEsNyArNjEsNyBAQCBJ
REJDdXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQk9iamVj
dFN0b3JlJiBvYmplY3RTdG9yZSwgYwogICAgICwgbV9pbmZvKGluZm8pCiAgICAgLCBtX3NvdXJj
ZSgmb2JqZWN0U3RvcmUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3Rp
dmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUo
KS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgc3VzcGVu
ZElmTmVlZGVkKCk7CiB9CkBAIC03MSwxOSArNzEsMTkgQEAgSURCQ3Vyc29yOjpJREJDdXJzb3Io
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQkN1
cnMKICAgICAsIG1faW5mbyhpbmZvKQogICAgICwgbV9zb3VyY2UoJmluZGV4KQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKTsKIAogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBJREJDdXJz
b3I6On5JREJDdXJzb3IoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0
aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3Jl
KCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIH0KIAogYm9vbCBJ
REJDdXJzb3I6OnNvdXJjZXNEZWxldGVkKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBlZmZl
Y3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSk7CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NvdXJjZSwKICAgICAgICAgW10gKGNv
bnN0IFJlZlB0cjxJREJPYmplY3RTdG9yZT4mIG9iamVjdFN0b3JlKSB7IHJldHVybiBvYmplY3RT
dG9yZS0+aXNEZWxldGVkKCk7IH0sCkBAIC0xMDEsMTQgKzEwMSwxNCBAQCBJREJPYmplY3RTdG9y
ZSYgSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpIGNvbnN0CiAKIElEQlRyYW5zYWN0
aW9uJiBJREJDdXJzb3I6OnRyYW5zYWN0aW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBl
ZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSk7CiAgICAgcmV0dXJuIGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKTsK
IH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJD
dXJzb3I6OnVwZGF0ZSIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZl
T2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCku
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChzb3Vy
Y2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ3VwZGF0ZScgb24gJ0lEQkN1cnNv
cic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVl
biBkZWxldGVkLiIpIH07CkBAIC0xNDksNyArMTQ5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogRXhjZXB0aW9uT3I8dm9pZD4gSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmFkdmFuY2UiKTsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkBAIC0yMzQsNyArMjM0LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlY1N0YXRl
LCBKU1ZhbHVlIGtleVYKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGludWVGdW5j
dGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1
cnNvcjo6Y29udGludWVGdW5jdGlvbiAodG8ga2V5ICVzKSIsIGtleS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVP
YmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3Jl
cXVlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpA
QCAtMjY4LDcgKzI2OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAKIHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNr
ZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgY291bnQpCiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRy
YW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgKyttX291dHN0YW5kaW5nUmVxdWVzdENv
dW50OwogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJh
dGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBjb3VudCkKIAogdm9pZCBJ
REJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBj
b25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2
ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsK
IAogICAgICsrbV9vdXRzdGFuZGluZ1JlcXVlc3RDb3VudDsKIApAQCAtMjg5LDcgKzI4OSw3IEBA
IHZvaWQgSURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQktleURhdGEm
IGtleSwgY29uc3QgSURCS2V5RGF0YSYKIEV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJREJSZXF1
ZXN0Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgaWYgKHNvdXJjZXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8g
ZXhlY3V0ZSAnZGVsZXRlJyBvbiAnSURCQ3Vyc29yJzogVGhlIGN1cnNvcidzIHNvdXJjZSBvciBl
ZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTMyMCw3ICsz
MjAsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZQogdm9pZCBJREJDdXJzb3I6OnNldEdldFJl
c3VsdChJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50
IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygw
LCAxMDApLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IGVmZmVjdGl2ZU9iamVjdFN0
b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGF1
dG8qIGNvbnRleHQgPSByZXF1ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAo
IWNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKaW5kZXggOGY2ZTc3NWRhMmRjNzJmMTYwNTg0YTViYzgyZGFlNjdlNjE5MjQ0My4u
YTAwOGRkZjYzZjhkNDdmNTcwOTU5NzJkNzU4NWQyNWNmYTU0ZDQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgSURCQ2xpZW50OjpJREJDb25uZWN0aQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNl
KCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAoIW1fY2xvc2VkSW5TZXJ2ZXIpCiAgICAgICAgIG1fY29ubmVjdGlvblByb3h5LT5kYXRhYmFz
ZUNvbm5lY3Rpb25DbG9zZWQoKnRoaXMpOwpAQCAtNzQsNyArNzQsNyBAQCBJREJEYXRhYmFzZTo6
fklEQkRhdGFiYXNlKCkKIAogYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkg
fHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKIAogICAgIGlmIChtX2Nsb3NlZEluU2Vy
dmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NywxOSArODcsMTkgQEAgYm9vbCBJREJE
YXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogY29uc3QgU3RyaW5nIElEQkRh
dGFiYXNlOjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9CiAKIHVpbnQ2NF90IElEQkRh
dGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faW5mby52ZXJzaW9uKCk7CiB9CiAKIFJlZlB0cjxE
T01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
ICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVOYW1lcygpKQpAQCAtMTEw
LDcgKzExMCw3IEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3Rv
cmVOYW1lcygpIGNvbnN0CiAKIHZvaWQgSURCRGF0YWJhc2U6OnJlbmFtZU9iamVjdFN0b3JlKElE
Qk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogewotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV92ZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgIEFTU0VSVChtX2luZm8uaGFzT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmUuaW5mbygpLm5hbWUoKSkpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJ
REJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3Jl
LCBjb25zdCBTdHJpbmcmIG4KIAogdm9pZCBJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoSURCSW5k
ZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbik7CiAgICAgQVNTRVJUKG1faW5mby5oYXNPYmplY3RTdG9yZShpbmRleC5vYmplY3RTdG9y
ZSgpLmluZm8oKS5uYW1lKCkpKTsKICAgICBBU1NFUlQobV9pbmZvLmluZm9Gb3JFeGlzdGluZ09i
amVjdFN0b3JlKGluZGV4Lm9iamVjdFN0b3JlKCkuaW5mbygpLm5hbWUoKSktPmhhc0luZGV4KGlu
ZGV4LmluZm8oKS5uYW1lKCkpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCT2JqZWN0U3RvcmU+PiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUgLSAoJXMgJXMpIiwgbV9pbmZvLm5hbWUoKS51dGY4KCkuZGF0YSgpLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIGlmICghbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24pCkBAIC0xNjUsNyArMTY1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlRy
YW5zYWN0aW9uPj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFN0cmluZ09yVmVjdG9yT2ZTdHJp
bmcKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uIik7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9j
bG9zZVBlbmRpbmcpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAndHJhbnNhY3Rpb24nIG9uICdJREJE
YXRhYmFzZSc6IFRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3NpbmcuIikgfTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBB
U0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdkZWxldGVPYmplY3RTdG9yZScgb24gJ0lE
QkRhdGFiYXNlJzogVGhlIGRhdGFiYXNlIGlzIG5vdCBydW5uaW5nIGEgdmVyc2lvbiBjaGFuZ2Ug
dHJhbnNhY3Rpb24uIikgfTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpj
bG9zZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjbG9zZSAtICUiIFBS
SXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghbV9jbG9zZVBlbmRpbmcpIHsK
ICAgICAgICAgbV9jbG9zZVBlbmRpbmcgPSB0cnVlOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoY29uc3QgSURCRXJyb3ImIGVycm9y
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6Y29ubmVjdGlvblRvU2VydmVy
TG9zdCAtICUiIFBSSXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fY2xvc2VQZW5k
aW5nID0gdHJ1ZTsKICAgICBtX2Nsb3NlZEluU2VydmVyID0gdHJ1ZTsKQEAgLTI4NCw3ICsyODQs
NyBAQCB2b2lkIElEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIoKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyIC0gJSIgUFJJdTY0LCBt
X2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fY2xvc2VkSW5TZXJ2ZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTMwMSwxMyArMzAxLDEzIEBAIHZvaWQgSURCRGF0YWJhc2U6Om1heWJlQ2xv
c2VJblNlcnZlcigpCiAKIGNvbnN0IGNoYXIqIElEQkRhdGFiYXNlOjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7
CiAgICAgcmV0dXJuICJJREJEYXRhYmFzZSI7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHZhbHVlIHdpbGwg
c29tZXRpbWVzIGJlIGZhbHNlIHdoZW4gZGF0YWJhc2Ugb3BlcmF0aW9ucyBhcmUgYWN0dWFsbHkg
aW4gcHJvZ3Jlc3MuCiAgICAgLy8gU3VjaCBkYXRhYmFzZSBvcGVyYXRpb25zIGRvIG5vdCB5ZXQg
ZXhpc3QuCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6c3RvcCgpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpzdG9wIC0gJSIgUFJJdTY0LCBtX2RhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKIApAQCAtMzQx
LDcgKzM0MSw3IEBAIFJlZjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0CiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiAlcyIsIGluZm8u
aWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQoaW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rp
b25Nb2RlOjpWZXJzaW9uY2hhbmdlKTsKICAgICBBU1NFUlQoIW1fY2xvc2VQZW5kaW5nKTsKQEAg
LTM1OSw3ICszNTksNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uKElE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0
YWJhc2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fdmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNsaWVudCB0byBoYXZl
IGFib3J0ZWQgYSB0cmFuc2FjdGlvbiBiZWZvcmUgdGhlIHNlcnZlciByZXBsaWVzIGJhY2sgdGhh
dCBpdCBoYXMgc3RhcnRlZC4KICAgICBpZiAobV9hYm9ydGluZ1RyYW5zYWN0aW9ucy5jb250YWlu
cyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSkKQEAgLTM3Miw3ICszNzIsNyBAQCB2
b2lkIElEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbENvbW1p
dFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAKICAgICBhdXRvIHJlZlRyYW5zYWN0aW9uID0gbV9hY3RpdmVUcmFuc2Fj
dGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQo
cmVmVHJhbnNhY3Rpb24pOwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRp
ZENvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZENvbW1pdFRyYW5zYWN0aW9uICVzIiwgdHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gJnRyYW5zYWN0aW9uKQogICAgICAgICBt
X2luZm8uc2V0VmVyc2lvbih0cmFuc2FjdGlvbi5pbmZvKCkubmV3VmVyc2lvbigpKTsKQEAgLTM5
NSw3ICszOTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFi
YXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byByZWZUcmFuc2FjdGlvbiA9IG1f
YWN0aXZlVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7
CiAgICAgaWYgKCFyZWZUcmFuc2FjdGlvbikKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIElEQkRh
dGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24g
JXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsK
IAogICAgIGlmICh0cmFuc2FjdGlvbi5pc1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAgICBBU1NF
UlQodHJhbnNhY3Rpb24ub3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CkBAIC00MzEsNyArNDMxLDcg
QEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6
OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uID09ICZ0cmFuc2FjdGlvbikKICAgICAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24gPSBudWxscHRyOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlCiAgICAgdWludDY0X3QgY3VycmVudFZlcnNpb24gPSBtX2luZm8udmVyc2lvbigpOwogICAg
IExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCAtIGN1
cnJlbnQgdmVyc2lvbiAlIiBQUkl1NjQgIiwgcmVxdWVzdGVkIHZlcnNpb24gJSIgUFJJdTY0ICIs
IGNvbm5lY3Rpb24gJSIgUFJJdTY0ICIgKCVwKSIsIGN1cnJlbnRWZXJzaW9uLCByZXF1ZXN0ZWRW
ZXJzaW9uLCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRoaXMpOwogCi0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgfHwgbV9jbG9zZVBlbmRpbmcpIHsKICAgICAgICAgY29ubmVjdGlvblBy
b3h5KCkuZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIElEQkRh
dGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZQogdm9pZCBJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50ICgl
IiBQUkl1NjQgIikgKCVwKSIsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcyk7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lk
IElEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIAogdm9pZCBJREJEYXRh
YmFzZTo6ZGlkQ3JlYXRlSW5kZXhJbmZvKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZSA9IG1faW5mby5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZShpbmZvLm9iamVjdFN0
b3JlSWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUpOwpAQCAtNDk3LDcgKzQ5
Nyw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpZENyZWF0ZUluZGV4SW5mbyhjb25zdCBJREJJbmRl
eEluZm8mIGluZm8pCiAKIHZvaWQgSURCRGF0YWJhc2U6OmRpZERlbGV0ZUluZGV4SW5mbyhjb25z
dCBJREJJbmRleEluZm8mIGluZm8pCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBv
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2lu
VGhyZWFkKCkpOwogCiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0ZvckV4aXN0
aW5nT2JqZWN0U3RvcmUoaW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJU
KG9iamVjdFN0b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcAppbmRleCA0OTdkZWMxYTQwZmQwZDdjNmY1MTEyOWI1MTgxZGYyZjFlODczM2MwLi45
ZTM1ZjkwZWQ4ZDQ0NTRhNjAzMTVkNGQwOTQ5OTM1ZWIwZWY2ZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC00OCwxNCArNDgsMTQgQEAg
SURCSW5kZXg6OklEQkluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IElEQkluZGV4SW5mbyYgaW5mbywgSUQKICAgICAsIG1fb3JpZ2luYWxJbmZvKGluZm8pCiAgICAg
LCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIHN1c3BlbmRJZk5l
ZWRlZCgpOwogfQogCiBJREJJbmRleDo6fklEQkluZGV4KCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiB9CiAKIGNvbnN0
IGNoYXIqIElEQkluZGV4OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTc1LDEzICs3
NSwxMyBAQCBib29sIElEQkluZGV4OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBjb25z
dCBTdHJpbmcmIElEQkluZGV4OjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1f
aW5mby5uYW1lKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkluZGV4OjpzZXROYW1lKGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2Jq
ZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHNldCBwcm9wZXJ0eSAnbmFtZScgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IGhhcyBiZWVu
IGRlbGV0ZWQuIikgfTsKQEAgLTEwOSwzMSArMTA5LDMxIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElE
QkluZGV4OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogSURCT2JqZWN0U3RvcmUmIElE
QkluZGV4OjpvYmplY3RTdG9yZSgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX29iamVjdFN0b3Jl
OwogfQogCiBjb25zdCBJREJLZXlQYXRoJiBJREJJbmRleDo6a2V5UGF0aCgpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkpOwogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCiBib29sIElEQkluZGV4Ojp1
bmlxdWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RT
dG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9pbmZvLnVuaXF1ZSgpOwogfQog
CiBib29sIElEQkluZGV4OjptdWx0aUVudHJ5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJu
IG1faW5mby5tdWx0aUVudHJ5KCk7CiB9CiAKIHZvaWQgSURCSW5kZXg6OnJvbGxiYWNrSW5mb0Zv
clZlcnNpb25DaGFuZ2VBYm9ydCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gT25seSByb2xsYmFjayB0
byB0aGUgb3JpZ2luYWwgaW5mbyBpZiB0aGlzIGluZGV4IHN0aWxsIGV4aXN0cyBpbiB0aGUgcm9s
bGVkLWJhY2sgZGF0YWJhc2UgaW5mby4KICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX29i
amVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5pbmZvKCkuaW5mb0ZvckV4aXN0aW5n
T2JqZWN0U3RvcmUobV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTE1Miw3
ICsxNTIsNyBAQCB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJv
cnQoKQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNv
ciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS5pc0RlbGV0
ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJ
SUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdvcGVuQ3Vyc29yJyBvbiAnSURCSW5kZXgnOiBU
aGUgaW5kZXggb3IgaXRzIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0x
NzMsNyArMTczLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3Bl
bkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmEKIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpT
VmFsdWUga2V5LCBJREJDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGF1dG8ga2V5UmFu
Z2UgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKGtleVJhbmdl
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFs
dWUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3Io
RXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdlKiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5LZXlD
dXJzb3IiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNE
ZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1cnNvcicgb24gJ0lEQklu
ZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9
OwpAQCAtMjI3LDcgKzIyNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5k
ZXg6OmNvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9k
ZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0
ZSAnY291bnQnIG9uICdJREJJbmRleCc6IFRoZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0b3JlIGhh
cyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI2Miw3ICsyNjIsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUg
a2V5KQogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldChFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZXhlY3V0ZSAnZ2V0JyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggb3IgaXRzIG9i
amVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yOTcsNyArMjk3LDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0S2V5KEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJ
bmRleDo6ZG9HZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3Jl
LmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQkluZGV4
JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpA
QCAtMzE1LDcgKzMxNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6
OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLCiBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
aWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMzM4LDcgKzMzOCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSlNWYWx1ZSBrZXksCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpn
ZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCSW5kZXg6OmdldEFsbEtleXMiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1f
b2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsS2V5
cycgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4g
ZGVsZXRlZC4iKSB9OwpAQCAtMzYwLDcgKzM2MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUK
IAogdm9pZCBJREJJbmRleDo6bWFya0FzRGVsZXRlZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9vYmplY3RTdG9y
ZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgQVNTRVJU
KCFtX2RlbGV0ZWQpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMDhhNzg0YmEy
NDIyMzBlNjM1MzcyNTYwMDEzMWJlNjFiMzJiYmQwZC4uZDQ1MGQ3ODM3NTNmM2MzNmFjMGQ1Njhl
MDRlZTRlYmUzMTk3MjQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjEsMTQgKzYxLDE0IEBAIElEQk9iamVjdFN0
b3JlOjpJREJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBJREJPYmplY3RTCiAgICAgLCBtX29yaWdpbmFsSW5mbyhpbmZvKQogICAgICwgbV90cmFuc2Fj
dGlvbih0cmFuc2FjdGlvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsK
IAogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBJREJPYmplY3RTdG9yZTo6fklEQk9iamVj
dFN0b3JlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIH0KIAogY29u
c3QgY2hhciogSURCT2JqZWN0U3RvcmU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAt
ODgsMTMgKzg4LDEzIEBAIGJvb2wgSURCT2JqZWN0U3RvcmU6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CiAKIGNvbnN0IFN0cmluZyYgSURCT2JqZWN0U3RvcmU6Om5hbWUoKSBjb25zdAogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2luZm8ubmFt
ZSgpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAK
ICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHNldCBwcm9wZXJ0eSAnbmFtZScgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBA
IC0xMTksMTMgKzExOSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9pbmZvLmtleVBhdGgoKTsKIH0KIAogUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFu
c2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIFJlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAKQEAgLTE0MCwy
MCArMTQwLDIwIEBAIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhO
YW1lcygpIGNvbnN0CiAKIElEQlRyYW5zYWN0aW9uJiBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rp
b24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBt
X3RyYW5zYWN0aW9uOwogfQogCiBib29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4g
bV9pbmZvLmF1dG9JbmNyZW1lbnQoKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRy
PElEQktleVJhbmdlPiByYW5nZSwgSURCQ3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWls
ZWQgdG8gZXhlY3V0ZSAnb3BlbkN1cnNvcicgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVj
dCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3Rh
dGUmIGV4ZWNTdGF0ZSwgSlMKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4
ZWN1dGUgJ29wZW5LZXlDdXJzb3InIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBvYmplY3Qgc3Rv
cmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjAxLDcgKzIwMSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhlY1N0YXRl
JiBleGVjU3RhdGUsCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
OjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5KQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dl
dCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVk
LiIpIH07CkBAIC0yMTksNyArMjE5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGsKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIGtleVJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJPYmplY3RTdG9yZTo6Z2V0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVh
ZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBA
IC0yMzcsNyArMjM3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dG9yZTo6Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW4KIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpn
ZXRLZXkiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICht
X2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCT2JqZWN0U3Rv
cmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI1NSw3ICsy
NTUsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRL
ZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlS
YW5nZSoga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpn
ZXRLZXkiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICht
X2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0S2V5JyBvbiAnSURCT2JqZWN0U3Rv
cmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTI5Nyw3ICsy
OTcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpwdXRP
ckFkZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
Q0FUQ0hfU0NPUEUodm0pOwogCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpw
dXRPckFkZCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0
byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKTsK
ICAgICBpZiAoIWNvbnRleHQpCkBAIC0zNjksNyArMzY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVj
U3RhdGUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvRGVs
ZXRlKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbiIpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9u
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gVGhlIElEQiBzcGVjIGZvciBz
ZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQgdHJhbnNhY3Rpb24gcmVs
YXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8vIHRoZSBleGNlcHRpb24g
Zm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNDAzLDcgKzQwMyw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9i
amVjdFN0b3JlOjpjbGVhcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCT2JqZWN0U3RvcmU6OmNsZWFyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICAvLyBUaGUgSURCIHNwZWMgZm9yIHNldmVyYWwgSURCT2JqZWN0U3Rv
cmUgbWV0aG9kcyBzdGF0ZXMgdGhhdCB0cmFuc2FjdGlvbiByZWxhdGVkIGV4Y2VwdGlvbnMgc2hv
dWxkIGZpcmUgYmVmb3JlCiAgICAgLy8gdGhlIGV4Y2VwdGlvbiBmb3IgYW4gb2JqZWN0IHN0b3Jl
IGJlaW5nIGRlbGV0ZWQuCkBAIC00MjUsNyArNDI1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoRXhlY1N0YXRlJiBleGVjU3RhdGUpCiBFeGNl
cHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhlY1N0
YXRlJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBJREJLZXlQYXRoJiYga2V5UGF0aCwgY29uc3QgSW5k
ZXhQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXggJXMgKGtleVBhdGg6ICVzLCB1bmlxdWU6ICVpLCBtdWx0aUVu
dHJ5OiAlaSkiLCBuYW1lLnV0ZjgoKS5kYXRhKCksIGxvZ2dpbmdTdHJpbmcoa2V5UGF0aCkudXRm
OCgpLmRhdGEoKSwgcGFyYW1ldGVycy51bmlxdWUsIHBhcmFtZXRlcnMubXVsdGlFbnRyeSk7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rp
b24uaXNWZXJzaW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRlSW5kZXgn
IG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBkYXRhYmFzZSBpcyBub3QgcnVubmluZyBhIHZlcnNp
b24gY2hhbmdlIHRyYW5zYWN0aW9uLiIpIH07CkBAIC00NjYsNyArNDY2LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSYs
IGNvbnN0IFN0cmluZyYKIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3Jl
OjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCT2JqZWN0U3RvcmU6OmluZGV4Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQo
KSk7CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07IC8vIEZJWE1FOiBJcyB0aGlzIGNvZGUg
dGVzdGVkPyBJcyBpdGV2ZW4gcmVhY2hhYmxlPwpAQCAtNDk4LDcgKzQ5OCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGlu
ZGV4TmFtZSkKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpkZWxldGVJbmRleCAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4
ZWN1dGUgJ2RlbGV0ZUluZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3Jl
IGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTU1MSw3ICs1NTEsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpjb3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSURCS2V5UgogCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
Ojpkb0NvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gVGhl
IElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQg
dHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8v
IHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNTcz
LDcgKzU3Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6
OmRvQ291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0CiBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fdHJhbnNhY3Rpb24u
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBz
dG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC01OTYsNyArNTk2LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKU1ZhbHUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyIpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRl
ICdnZXRBbGxLZXlzJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBi
ZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTYxOCwxMyArNjE4LDEzIEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3Rh
dGUsIEpTCiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6Om1hcmtBc0RlbGV0ZWQoKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX3RyYW5zYWN0aW9u
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CiB9CiAK
IHZvaWQgSURCT2JqZWN0U3RvcmU6OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0KCkKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV90cmFu
c2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKTsKIAogICAgIFN0cmluZyBjdXJyZW50
TmFtZSA9IG1faW5mby5uYW1lKCk7CiAgICAgbV9pbmZvID0gbV9vcmlnaW5hbEluZm87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwCmluZGV4IDc4ZGE5NzAyMmE3Y2U0OWI1MTAzZjQ4ZGJlZGM2NDExOGQzNjA5NjIuLmI0Zjc5
MzFjOTdkOTViMGU1NzAyODdmY2U0NjVmODYyNzU1NWY0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC02Mywx
MiArNjMsMTIgQEAgSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJDbGllbnQ6OkkKIAogSURCT3BlbkRCUmVxdWVzdDo6
fklEQk9wZW5EQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRo
cmVhZCgpKTsKIH0KIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvbkVycm9yKGNvbnN0IElEQlJl
c3VsdERhdGEmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFk
KCkpOwogCiAgICAgbV9kb21FcnJvciA9IGRhdGEuZXJyb3IoKS50b0RPTUV4Y2VwdGlvbigpOwog
ICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIHRydWUsIHRydWUsICp0aGlzKSk7CkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRh
KQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbkRpZEZp
bmlzaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAg
ICAgLy8gMy4zLjcgInZlcnNpb25jaGFuZ2UiIHRyYW5zYWN0aW9uIHN0ZXBzCiAgICAgLy8gV2hl
biB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQsIGFmdGVyIGZpcmluZyBjb21wbGV0ZS9hYm9y
dCBvbiB0aGUgdHJhbnNhY3Rpb24sIGltbWVkaWF0ZWx5IHNldCByZXF1ZXN0J3MgdHJhbnNhY3Rp
b24gcHJvcGVydHkgdG8gbnVsbC4KQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpmaXJlU3VjY2Vzc0FmdGVyVmVyc2lvbkNoYW5nZUNvbW1pdCgpCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdl
Q29tbWl0KCkgLSAlcyIsIHJlc291cmNlSWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQoaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIG1fdHJhbnNhY3Rpb24tPmFk
ZFJlcXVlc3QoKnRoaXMpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpmaXJlRXJyb3JBZnRlclZlcnNpb25DaGFuZ2VDb21wbGV0aW9uKCkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJzaW9uQ2hhbmdl
Q29tcGxldGlvbigpIC0gJXMiLCByZXNvdXJjZUlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKIAogICAgIElEQkVycm9yIGlk
YkVycm9yKEFib3J0RXJyb3IpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSURCT3BlbkRCUmVx
dWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6ZGlzcGF0Y2hF
dmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhy
ZWFkKCkpOwogCiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAKQEAg
LTEzMyw3ICsxMzMsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyhjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPcGVu
REJSZXF1ZXN0OjpvblN1Y2Nlc3MoKSIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgc2V0UmVzdWx0KElEQkRhdGFiYXNlOjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5KCksIHJlc3VsdERhdGEpKTsKICAg
ICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25lOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3Jp
Z2luVGhyZWFkKCkpOwogCiAgICAgUmVmPElEQkRhdGFiYXNlPiBkYXRhYmFzZSA9IElEQkRhdGFi
YXNlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5KCks
IHJlc3VsdERhdGEpOwogICAgIFJlZjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBkYXRh
YmFzZS0+c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24ocmVzdWx0RGF0YS50cmFuc2FjdGlv
bkluZm8oKSwgKnRoaXMpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVz
dDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAKIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6b25EZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5U
aHJlYWQoKSk7CiAKICAgICB1aW50NjRfdCBvbGRWZXJzaW9uID0gcmVzdWx0RGF0YS5kYXRhYmFz
ZUluZm8oKS52ZXJzaW9uKCk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIElEQk9wZW5EQlJl
cXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZCIpOwog
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgLy8gSWYg
YW4gT3BlbiByZXF1ZXN0IHdhcyBjb21wbGV0ZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIG5hdmlnYXRl
ZCwgbGVhdmluZyB0aGlzIHJlcXVlc3QKICAgICAvLyB3aXRoIGEgc3RvcHBlZCBzY3JpcHQgZXhl
Y3V0aW9uIGNvbnRleHQsIHdlIG5lZWQgdG8gbWVzc2FnZSBiYWNrIHRvIHRoZSBzZXJ2ZXIgc28g
aXQKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RDb21w
bGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0
OjpyZXF1ZXN0QmxvY2tlZCh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9u
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAogICAgIExP
RyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0QmxvY2tlZCIpOwogICAgIGVu
cXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBuZXdW
ZXJzaW9uLCBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGNkYzliYWY1MzllZGZmMjE0
MTVmOTQ0ZDgxODc4NWRjMjRhNjgyNTcuLjYyMTYyNTkwOTQyY2YxOWVkYmYwMzVmOTAyYTdmZjg5
NjUxZDVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWQKIAog
SURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9y
aWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX3Jlc3VsdCkgewogICAgICAgICBXVEY6OnN3aXRj
aE9uKG1fcmVzdWx0LnZhbHVlKCksCkBAIC0xNjMsNyArMTYzLDcgQEAgRXhjZXB0aW9uT3I8c3Rk
OjpvcHRpb25hbDxJREJSZXF1ZXN0OjpSZXN1bHQ+PiBJREJSZXF1ZXN0OjpyZXN1bHQoKSBjb25z
dAogCiBFeGNlcHRpb25PcjxET01FeGNlcHRpb24qPiBJREJSZXF1ZXN0OjplcnJvcigpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYg
KCFpc0RvbmUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byByZWFkIHRoZSAnZXJyb3InIHByb3BlcnR5IGZyb20g
J0lEQlJlcXVlc3QnOiBUaGUgcmVxdWVzdCBoYXMgbm90IGZpbmlzaGVkLiIpIH07CkBAIC0xNzMs
NyArMTczLDcgQEAgRXhjZXB0aW9uT3I8RE9NRXhjZXB0aW9uKj4gSURCUmVxdWVzdDo6ZXJyb3Io
KSBjb25zdAogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJREJDdXJzb3ImIGN1cnNvcikK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KCFtX2N1cnNvclJlcXVlc3ROb3RpZmllcik7CiAKICAgICBtX3NvdXJjZSA9IFNvdXJjZSB7ICZj
dXJzb3IgfTsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJ
REJDdXJzb3ImIGN1cnNvcikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb24pOwog
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5pc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKCF0
cmFuc2FjdGlvbi5pc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CkBAIC0xOTUsMTMgKzE5NSwxMyBA
QCB2b2lkIElEQlJlcXVlc3Q6OnNldFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiAKIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4gSURC
UmVxdWVzdDo6dHJhbnNhY3Rpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9zaG91bGRFeHBvc2VUcmFuc2FjdGlvblRv
RE9NID8gbV90cmFuc2FjdGlvbiA6IG51bGxwdHI7CiB9CiAKIHVpbnQ2NF90IElEQlJlcXVlc3Q6
OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0yMTUsNyArMjE1LDcgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNl
T2JqZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3QKIAogdWludDY0X3QgSURCUmVxdWVzdDo6c291
cmNlSW5kZXhJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBv
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fc291cmNlKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTIyOSwxNCArMjI5LDE0IEBAIHVpbnQ2NF90IElEQlJlcXVlc3Q6OnNvdXJjZUluZGV4SWRl
bnRpZmllcigpIGNvbnN0CiAKIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVSZWNvcmRUeXBlIElEQlJl
cXVlc3Q6OnJlcXVlc3RlZE9iamVjdFN0b3JlUmVjb3JkVHlwZSgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIG1fcmVxdWVz
dGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBlOwogfQogCiBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlw
ZSBJREJSZXF1ZXN0OjpyZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGUoKSBjb25zdAogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRo
cmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zb3VyY2Up
OwogICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJJbmRleD4+KG1f
c291cmNlLnZhbHVlKCkpKTsKIApAQCAtMjQ1LDMzICsyNDUsMzMgQEAgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgSURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29uc3QK
IAogRXZlbnRUYXJnZXRJbnRlcmZhY2UgSURCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgpKTsKIAog
ICAgIHJldHVybiBJREJSZXF1ZXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCiBjb25z
dCBjaGFyKiBJREJSZXF1ZXN0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICByZXR1cm4gIklEQlJl
cXVlc3QiOwogfQogCiBib29sIElEQlJlcXVlc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3Bl
bnNpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gb3JpZ2luVGhyZWFkKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKICAgICByZXR1cm4gbV9o
YXNQZW5kaW5nQWN0aXZpdHk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c3RvcCgpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9jb250
ZXh0U3RvcHBlZCk7CiAKICAgICBjYW5jZWxGb3JTdG9wKCk7CkBAIC0yODgsNyArMjg4LDcgQEAg
dm9pZCBJREJSZXF1ZXN0OjpjYW5jZWxGb3JTdG9wKCkKIAogdm9pZCBJREJSZXF1ZXN0OjplbnF1
ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8fCBt
X2NvbnRleHRTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICszMDAsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50IC0gJXMgKCVwKSIsIGV2ZW50LnR5
cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9oYXNQZW5kaW5nQWN0aXZpdHkp
OwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2
b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5k
bGVyIik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAobV90cmFuc2FjdGlvbiAmJiBtX2lkYkVycm9yLmNvZGUoKSAhPSBBYm9ydEVycm9yKQog
ICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydER1ZVRvRmFpbGVkUmVxdWVzdChET01FeGNlcHRp
b246OmNyZWF0ZShBYm9ydEVycm9yLCBBU0NJSUxpdGVyYWwoIklEQlRyYW5zYWN0aW9uIHdpbGwg
YWJvcnQgZHVlIHRvIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBhbiBldmVudCBoYW5kbGVyIikpKTsK
QEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5F
dmVudEhhbmRsZXIoKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBJREJLZXlE
YXRhJiBrZXlEYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYga2V5RGF0YXMpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0zOTMsNyArMzkzLDcg
QEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQktleURhdGE+JiBr
ZXlEYXRhcykKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgVmVjdG9yPElEQlZh
bHVlPiYgdmFsdWVzKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVhZCgp
KTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFjb250ZXh0KQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVz
dWx0KGNvbnN0IFZlY3RvcjxJREJWYWx1ZT4mIHZhbHVlcykKIAogdm9pZCBJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHQodWludDY0X3QgbnVtYmVyKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9y
aWdpblRocmVhZCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgSURCUmVx
dWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRS
ZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBJREJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhy
ZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lIik7CiAKQEAgLTQ0NCw3ICs0
NDQsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKGNvbnN0
IElEQlZhbHVlJiB2YWx1ZSkKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVmaW5l
ZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
YXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVm
aW5lZCgpCiAKIElEQkN1cnNvciogSURCUmVxdWVzdDo6cmVzdWx0Q3Vyc29yKCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fcmVzdWx0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBJREJDdXJzb3Iq
IElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcigpCiAKIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJh
dGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChpc0RvbmUoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOwpAQCAtNDkw
LDcgKzQ5MCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29y
JiBjdXJzb3IpCiAKIHZvaWQgSURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09
IG9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsKIAogICAgIG1f
cmVzdWx0ID0gc3RkOjpudWxsb3B0OwpAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogCiB2b2lkIElEQlJlcXVlc3Q6OmNvbXBsZXRlUmVxdWVzdEFuZERpc3BhdGNoRXZlbnQoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBvcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25l
OwogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6b25FcnJvciIpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9pZGJFcnJvci5pc051
bGwoKSk7CiAKICAgICBtX2RvbUVycm9yID0gbV9pZGJFcnJvci50b0RPTUV4Y2VwdGlvbigpOwpA
QCAtNTM0LDE0ICs1MzQsMTQgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6
b25TdWNjZXNzIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KFJlZjxJ
REJEYXRhYmFzZT4mJiBkYXRhYmFzZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBvcmln
aW5UaHJlYWQoKSk7CiAKICAgICBtX3Jlc3VsdCA9IFJlc3VsdCB7IFJlZlB0cjxJREJEYXRhYmFz
ZT4geyBXVEZNb3ZlKGRhdGFiYXNlKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYzFlMWRlZjU1ZWI2MWMy
ODZjYTNmYWVhMWQ5ODQwNTc4Y2RiMTM2Ni4uYzQ0NjY5ZWRlMmY0OTIzZDEwMTkzNmI1MzNkODEw
ZTMyYjQ0NTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtODAsNyArODAsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURC
VHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mCiAKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0
aW9uIC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KTsKIAogICAgIGlmIChtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lv
bmNoYW5nZSkgewogICAgICAgICBBU1NFUlQobV9vcGVuREJSZXF1ZXN0KTsKQEAgLTEwNiw3ICsx
MDYsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFi
YXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAKIElEQlRyYW5zYWN0aW9uOjp+SURCVHJh
bnNhY3Rpb24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIH0KIAogSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkmIElEQlRyYW5zYWN0aW9uOjpjb25uZWN0aW9uUHJveHkoKQpAQCAtMTE2LDcgKzExNiw3IEBA
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBJREJUcmFuc2FjdGlvbjo6Y29ubmVjdGlv
blByb3h5KCkKIAogUmVmPERPTVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9y
ZU5hbWVzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBu
YW1lcyA9IGlzVmVyc2lvbkNoYW5nZSgpID8gbV9kYXRhYmFzZS0+aW5mbygpLm9iamVjdFN0b3Jl
TmFtZXMoKSA6IG1faW5mby5vYmplY3RTdG9yZXMoKTsKIApAQCAtMTMwLDIwICsxMzAsMjAgQEAg
UmVmPERPTVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3QKIAogSURCRGF0YWJhc2UqIElEQlRyYW5zYWN0aW9uOjpkYigpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAg
IHJldHVybiBtX2RhdGFiYXNlLnB0cigpOwogfQogCiBET01FeGNlcHRpb24qIElEQlRyYW5zYWN0
aW9uOjplcnJvcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2RvbUVycm9yLmdl
dCgpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSIpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAog
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBvYmplYwogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVl
c3QoRE9NRXhjZXB0aW9uJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OmFib3J0RHVlVG9GYWlsZWRSZXF1ZXN0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFk
OjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKGlz
RmluaXNoZWRPckZpbmlzaGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xOTQsNyArMTk0LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9NRXhjZXB0
aW9uJiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6dHJhbnNpdGlvbmVkVG9GaW5pc2hp
bmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlIHN0YXRlKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAg
IEFTU0VSVCghaXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsK
QEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjp0cmFuc2l0aW9uZWRUb0Zp
bmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGUgc3RhdGUpCiBFeGNlcHRpb25Pcjx2
b2lkPiBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJU
cmFuc2FjdGlvbjo6YWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hlZE9yRmlu
aXNoaW5nKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnYWJvcnQnIG9uICdJREJUcmFuc2FjdGlv
bic6IFRoZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKSB9OwpAQCAtMjE3
LDcgKzIxNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQlRyYW5zYWN0aW9uOjphYm9ydCgpCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjppbnRlcm5hbEFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KCFpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CiAKICAgICBtX2RhdGFiYXNlLT53aWxsQWJvcnRU
cmFuc2FjdGlvbigqdGhpcyk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6YWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzIik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1w
dHkoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5hYm9ydFRyYW5zYWN0
aW9uKCp0aGlzKTsKQEAgLTMwOSwyNiArMzA5LDI2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmFi
b3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
CiAKIGNvbnN0IGNoYXIqIElEQlRyYW5zYWN0aW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuICJJREJUcmFuc2FjdGlvbiI7CiB9CiAKIGJvb2wg
SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpIHx8IG1heUJlR0NUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
IHx8IG1heUJlR0NUaHJlYWQoKSk7CiAgICAgcmV0dXJuICFtX2NvbnRleHRTdG9wcGVkICYmIG1f
c3RhdGUgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KIAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpzdG9wIC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpKTsKIAogICAgIC8vIElEQkRhdGFiYXNlOjpzdG9wKCkgY2FsbHMgSURCVHJhbnNh
Y3Rpb246OnN0b3AoKSBmb3IgZWFjaCBvZiBpdHMgYWN0aXZlIHRyYW5zYWN0aW9ucy4KICAgICAv
LyBTaW5jZSB0aGUgb3JkZXIgb2YgY2FsbGluZyBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSBpcyBy
YW5kb20sIHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIHN0b3BwZWQuCkBAIC0zNDcsMTMgKzM0
NywxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIAogYm9vbCBJREJUcmFuc2FjdGlv
bjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9zdGF0ZSA9PSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFjdGl2ZTsKIH0KIAogYm9vbCBJREJUcmFuc2Fj
dGlvbjo6aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBy
ZXR1cm4gbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcK
ICAgICAgICAgfHwgbV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFib3J0
aW5nCkBAIC0zNjIsMTMgKzM2MiwxMyBAQCBib29sIElEQlRyYW5zYWN0aW9uOjppc0ZpbmlzaGVk
T3JGaW5pc2hpbmcoKSBjb25zdAogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjphZGRSZXF1ZXN0KElE
QlJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIG1fb3BlblJlcXVlc3RzLmFkZCgm
cmVxdWVzdCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURCUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fb3BlblJlcXVlc3RzLmNv
bnRhaW5zKCZyZXF1ZXN0KSk7CiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsK
IH0KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1ZXN0
KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJh
dGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24p
CiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJh
dGlvbi0+aWRlbnRpZmllcigpKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgbV9wZW5kaW5nVHJhbnNhY3Rp
b25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uKTsKICAgICBtX3RyYW5zYWN0aW9uT3Bl
cmF0aW9uTWFwLnNldChvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgV1RGTW92ZShvcGVyYXRpb24p
KTsKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJh
dGlvbihSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJgogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcigpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgaWYgKCFtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAg
ICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTM5NSw3ICsz
OTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1l
cigpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGlt
ZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3N0YXJ0ZWRPblNl
cnZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNDI5LDggKzQyOSw4IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246OnBlbmRpbmdPcGVyYXRpb25UaW1lckZpcmVkKCkKIAogdm9pZCBJREJUcmFuc2FjdGlv
bjo6b3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSwg
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogewotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcGVyYXRpb24ub3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVh
ZCgpKTsKIAogICAgIG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9u
LCBkYXRhIH0pOwogICAgIHNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKTsKQEAgLTQz
OCw3ICs0MzgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNl
cnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbAogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVyKCkKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAg
ICBpZiAoIW1fY29tcGxldGVkT3BlcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9j
b21wbGV0ZWRPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTQ0Nyw3ICs0NDcs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVy
KCkKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlvblRpbWVyRmlyZWQoKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9u
VGltZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgaWYgKG1fY29tcGxldGVk
T25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgfHwgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmZpbmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpjb21taXQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFpc0ZpbmlzaGVkT3JG
aW5pc2hpbmcoKSk7CiAKICAgICB0cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRy
YW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSURC
VHJhbnNhY3Rpb246OmNvbW1pdCgpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlciIpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsK
IAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNvbW1pdFRyYW5zYWN0aW9uKCp0
aGlzKTsKIApAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdE9u
U2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKIHZvaWQg
SURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0T3JDb21taXQoKQogewogICAgIEFTU0VSVChtX3N0
YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsK
IAogICAgIG1fc3RhdGUgPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlzaGVkOwog
fQpAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmZpbmlzaEFib3J0T3JD
b21taXQoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQoY29uc3QgSURCRXJyb3ImIGVy
cm9yKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkU3RhcnQiKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5kaWRTdGFydFRyYW5zYWN0aW9uKCp0aGlzKTsK
IApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KGNvbnN0
IElEQkVycm9yJiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQo
Y29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmRp
ZEFib3J0VHJhbnNhY3Rpb24oKnRoaXMpOwogICAgIG1faWRiRXJyb3IgPSBlcnJvcjsKQEAgLTU2
MCw3ICs1NjAsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpub3RpZnlEaWRBYm9ydChjb25zdCBJ
REJFcnJvciYgZXJyb3IpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydChjb25zdCBJREJF
cnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRB
Ym9ydCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNh
Y3Rpb25TdGF0ZTo6RmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRBYm9ydChjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRDb21taXQoY29uc3QgSURCRXJyb3ImIGVycm9yKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ29tbWl0Iik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogICAgIEFTU0VSVChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6Q29t
bWl0dGluZyk7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTU5MCwyMSArNTkwLDIx
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdChjb25zdCBJREJFcnJvciYgZXJyb3Ip
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBl
bnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY29tcGxldGVFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmZpcmVPbkFib3J0KCkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmZpcmVPbkFib3J0Iik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpOwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hYm9ydEV2
ZW50LCB0cnVlLCBmYWxzZSkpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZl
bnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewogICAgIEFTU0VSVChtX3N0YXRlICE9IEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIHx8IG1fY29udGV4dFN0b3BwZWQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50
KEV2ZW50JiBldmVudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
c3BhdGNoRXZlbnQiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBBU1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwogICAgIEFTU0VSVChldmVu
dC50YXJnZXQoKSA9PSB0aGlzKTsKQEAgLTY0Nyw3ICs2NDcsNyBAQCBSZWY8SURCT2JqZWN0U3Rv
cmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RT
dG9yZSIpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihtX3JlZmVyZW5jZWRPYmplY3RTdG9yZUxvY2spOwogCkBAIC02NjQsNyArNjY0LDcgQEAgUmVm
PElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3Rv
cmVPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAg
QVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmNyZWF0ZU9iamVjdFN0b3JlKG9wZXJhdGlvbiwgaW5mbyk7CkBAIC02NzMsNyArNjcz
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ3Jl
YXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3Rv
cmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJl
c3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkNyZWF0ZU9iamVjdFN0b3JlU3VjY2Vz
cyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKQEAg
LTY4NSw3ICs2ODUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZShJ
REJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZwogCiAgICAgQVNTRVJUKGlz
VmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBBU1NFUlQobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLmNvbnRhaW5z
KG9iamVjdFN0b3JlLmluZm8oKS5uYW1lKCkpKTsKICAgICBBU1NFUlQoIW1fcmVmZXJlbmNlZE9i
amVjdFN0b3Jlcy5jb250YWlucyhuZXdOYW1lKSk7CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0
b3JlLCBjb25zdCBTdHJpbmcKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3Jl
T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25z
dCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9y
ZU9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAK
ICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5yZW5hbWVPYmplY3RTdG9yZShvcGVy
YXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03MTEsNyArNzExLDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1l
T2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmVP
blNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3Vs
dERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OlJlbmFtZU9iamVjdFN0b3JlU3VjY2VzcyB8
fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKQEAgLTcx
OSw3ICs3MTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpj
cmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcgogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgiKTsKICAgICBBU1NFUlQoaXNWZXJzaW9u
Q2hhbmdlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTczMyw3ICs3MzMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9y
ZSYgb2JqZWN0U3Rvcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNyZWF0
ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgp
KTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNyZWF0ZUluZGV4KG9wZXJh
dGlvbiwgaW5mbyk7CkBAIC03NDIsNyArNzQyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXQK
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAocmVzdWx0
RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6Q3JlYXRlSW5kZXhTdWNjZXNzKQogICAgICAg
ICByZXR1cm47CkBAIC03NjQsNyArNzY0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1l
SW5kZXgoSURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiAKICAgICBBU1NF
UlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVChtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuY29u
dGFpbnMoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFtZSgpKSk7CiAgICAgQVNTRVJUKG1f
cmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5nZXQoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFt
ZSgpKSA9PSAmaW5kZXgub2JqZWN0U3RvcmUoKSk7CkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgoSURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcm
IG5ld05hbWUpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVyKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgdWludDY0X3QmIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgdWludDY0X3QmIGluZGV4SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBuZXdOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlQoaXNWZXJzaW9u
Q2hhbmdlKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkucmVuYW1lSW5k
ZXgob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3
TmFtZSk7CkBAIC03OTAsMTQgKzc5MCwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJ
bmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlcihjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
ZGlkUmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OlJlbmFtZUluZGV4
U3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9
CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhl
Y1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJDdXJz
b3JJbmZvJiBpbmZvKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdE9wZW5DdXJzb3IiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkg
PT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9SZXF1
ZXN0T3BlbkN1cnNvcihzdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIG9iamVjdFN0b3Jl
LCBpbmZvKSk7CkBAIC04MDgsNyArODA4LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG8KIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRl
JiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IiKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBlKCkgPT0gSW5kZXhlZERCOjpDdXJz
b3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihzdGF0
ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIGluZGV4LCBpbmZvKSk7CkBAIC04MTksNyArODE5
LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihF
eGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW4KIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBSZWY8SURCQ3Vyc29y
PiYmIGN1cnNvcikKIHsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
VGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAg
QVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogCkBAIC04MzUsNyArODM1LDcg
QEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKEV4
ZWNTdGF0ZSYgc3RhdGUsIFJlZjxJREJDdXIKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZW5DdXJz
b3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNv
bnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNl
LT5jb25uZWN0aW9uUHJveHkoKS5vcGVuQ3Vyc29yKG9wZXJhdGlvbiwgaW5mbyk7CiB9CkBAIC04
NDMsNyArODQzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVyKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGkKIHZvaWQgSURCVHJhbnNhY3Rp
b246OmRpZE9wZW5DdXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgY29tcGxldGVD
dXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwogfQpAQCAtODUzLDcgKzg1Myw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNv
bnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjppdGVyYXRlQ3Vyc29yIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VS
VChjdXJzb3IucmVxdWVzdCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBhZGRSZXF1ZXN0KCpjdXJzb3Iu
cmVxdWVzdCgpKTsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0
ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRh
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0
YSYgZGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVD
dXJzb3JPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLml0ZXJhdGVDdXJzb3Iob3BlcmF0aW9uLCBkYXRhKTsKIH0KQEAgLTg3Myw3ICs4NzMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRl
cmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpk
aWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJl
bnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBjb21wbGV0ZUN1cnNv
clJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CiB9CkBAIC04ODIsNyArODgyLDcgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNv
cmRzKEpTQzo6RXhlY1N0YXRlJgogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KSk7CiAKQEAgLTkwMSw3ICs5MDEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3Jk
cyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5V
U0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTkxOSw3ICs5MTksNyBAQCBSZWY8SURC
UmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2VydmVyIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZ2V0QWxsUmVjb3JkcyhvcGVyYXRp
b24sIGdldEFsbFJlY29yZHNEYXRhKTsKIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpnZXRBbGxSZWNvcmRzT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRz
T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gSURC
UmVzdWx0VHlwZTo6RXJyb3IpIHsKICAgICAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJl
cXVlc3QsIHJlc3VsdERhdGEpOwpAQCAtOTU0LDcgKzk1NCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmpl
Y3RTdG9yCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVj
b3JkIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghZ2V0UmVjb3JkRGF0
YS5rZXlSYW5nZURhdGEuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0
YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBSZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
T2JqZWN0U3RvcgogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0VmFs
dWUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldFZhbHVlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChz
dGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpWYWx1ZSwgcmFuZ2UpOwog
fQpAQCAtOTgwLDcgKzk4MCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEdldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRlCiBSZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
SW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
CiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6
SW5kZXhSZWNvcmRUeXBlOjpLZXksIHJhbmdlKTsKIH0KQEAgLTk5MCw3ICs5OTAsNyBAQCBSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZChFeGVjU3RhdGUm
IHN0YXRlLCBJREJJbmRleCYgaQogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdEdldFZhbHVlIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCgh
cmFuZ2UuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUoJnN0YXRlKSk7CiAKQEAgLTEwMDgsNyArMTAwOCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4
JiBpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdl
dFJlY29yZERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpnZXRS
ZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmdldFJlY29yZChvcGVyYXRpb24sIGdldFJlY29yZERhdGEpOwogfQpAQCAtMTAxNiw3
ICsxMDE2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW8KIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkaWRHZXRSZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVu
dCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIGlmIChyZXN1bHREYXRh
LnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgewogICAgICAgICBjb21wbGV0ZU5vbmN1
cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChFeGVjU3RhdGUmIHN0
YXRlLCBJREJPYmplY3RTdG9yZSYgbwogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdENvdW50IChJREJPYmplY3RTdG9yZSkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUo
KSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6
Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVF9V
TlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0
ZSwgSURCSW5kZXgmIGluZGV4LAogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdENvdW50IChJREJJbmRleCkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAg
QVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5k
ZXgmIGluZGV4LAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpnZXRD
b3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblBy
b3h5KCkuZ2V0Q291bnQob3BlcmF0aW9uLCBrZXlSYW5nZSk7CiB9CkBAIC0xMDkzLDcgKzEwOTMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRDb3VudE9uU2VydmVyKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
Q291bnRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
Q291bnRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3Vs
dERhdGEucmVzdWx0SW50ZWdlcigpKTsKICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVx
dWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
T2JqZWN0UwogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERlbGV0
ZVJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdlLmlz
TnVsbCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0
ZSkpOwogCkBAIC0xMTE5LDcgKzExMTksNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0Uwogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25T
ZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5k
ZWxldGVSZWNvcmQob3BlcmF0aW9uLCBrZXlSYW5nZSk7CiB9CkBAIC0xMTI3LDcgKzExMjcsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVSZWNvcmRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRl
UmVjb3JkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZERl
bGV0ZVJlY29yZE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogCiAgICAgcmVxdWVzdC5zZXRSZXN1bHRU
b1VuZGVmaW5lZCgpOwogICAgIGNvbXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1
bHREYXRhKTsKQEAgLTExMzcsNyArMTEzNyw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RT
dG9yZSIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6
OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBBU1NFUlRf
VU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTExNTUsNyArMTE1NSw3IEBAIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoRXhl
Y1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVhck9iamVjdFN0
b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBj
b25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
OwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuY2xlYXJPYmplY3RTdG9yZShv
cGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiB9CkBAIC0xMTYzLDcgKzExNjMsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgbwogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZU9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpk
aWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICByZXF1ZXN0LnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0KHJlcXVl
c3QsIHJlc3VsdERhdGEpOwpAQCAtMTE3NSw3ICsxMTc1LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0
U3RvcmUKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFpc1JlYWRPbmx5KCkp
OwogICAgIEFTU0VSVChvYmplY3RTdG9yZS5pbmZvKCkuYXV0b0luY3JlbWVudCgpIHx8IGtleSk7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwog
CkBAIC0xMTkxLDcgKzExOTEsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJl
cXVlc3RQdXRPckFkZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZQogdm9pZCBJREJU
cmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXRpb24sIFJlZlB0cjxJREJLZXk+IGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2Rl
JiBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cHV0T3JBZGRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9yaWdpblRocmVh
ZCgpKTsKICAgICBBU1NFUlQoIWlzUmVhZE9ubHkoKSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKIApA
QCAtMTIyNCw3ICsxMjI0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICBvcGVyYXRp
b24uc2V0TmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyKGZhbHNlKTsKIAogICAgIHZhbHVlLT53cml0
ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiA9IFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uPihvcGVyYXRpb24pLCBrZXlEYXRhID0gSURCS2V5RGF0YShrZXkuZ2V0KCkpLmlzb2xh
dGVkQ29weSgpLCBvdmVyd3JpdGVNb2RlXShjb25zdCBJREJWYWx1ZSYgaWRiVmFsdWUpIG11dGFi
bGUgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gb3JpZ2luVGhyZWFkKCkpOwog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoaWRiVmFsdWUuZGF0
YSgpLmRhdGEoKSkgewogICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCku
cHV0T3JBZGQocHJvdGVjdGVkT3BlcmF0aW9uLmdldCgpLCBXVEZNb3ZlKGtleURhdGEpLCBpZGJW
YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlcihJREJS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlciIpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZCgpKTsKIAogICAgIGlmIChhdXRvKiByZXN1bHQgPSByZXN1bHREYXRhLnJlc3VsdEtleSgp
KQogICAgICAgICByZXF1ZXN0LnNldFJlc3VsdCgqcmVzdWx0KTsKQEAgLTEyNTUsNyArMTI1NSw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9jayk7CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24mCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5n
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5kZWxl
dGVPYmplY3RTdG9yZShvcGVyYXRpb24sIG9iamVjdFN0b3JlTmFtZSk7CiB9CkBAIC0xMjgyLDE0
ICsxMjgyLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2
ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZU9i
amVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHRE
YXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpEZWxldGVPYmplY3RTdG9y
ZVN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwog
fQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgiKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJl
YWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIExPRyhJbmRleGVkREJPcGVyYXRpb25zLCAiSURC
IGRlbGV0ZSBpbmRleCBvcGVyYXRpb246ICVzICglIiBQUkl1NjQgIikiLCBpbmRleE5hbWUudXRm
OCgpLmRhdGEoKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKQEAgLTEzMDAsNyArMTMwMCw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5n
ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5kZWxl
dGVJbmRleChvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKIH0K
QEAgLTEzMDgsNyArMTMwOCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25T
ZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0CiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpkaWREZWxldGVJbmRleE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWREZWxl
dGVJbmRleE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0
YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5kZXhTdWNjZXNz
IHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApAQCAt
MTMxNiw4ICsxMzE2LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVk
T25DbGllbnQoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG9wZXJhdGlvbi5v
cmlnaW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuZ2V0
KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpID09ICZvcGVyYXRpb24pOwogICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jlc3NRdWV1ZS5maXJzdCgpID09ICZvcGVyYXRpb24p
OwogCkBAIC0xMzMwLDE0ICsxMzMwLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlv
bkNvbXBsZXRlZE9uQ2xpZW50KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlcigpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjplc3RhYmxpc2hPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAogICAg
IG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmVzdGFibGlzaFRyYW5zYWN0aW9uKCp0aGlz
KTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKTsKIAog
ICAgIGlmIChpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM0
Nyw3ICsxMzQ3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkZWFjdGl2YXRlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1
cnJlbnQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9zdGF0
ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFjdGl2ZSkKICAgICAgICAgbV9zdGF0
ZSA9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6SW5hY3RpdmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwCmluZGV4IDllYjNmMjVhOGQ5MmEwZjM3NzUxNDY5OTllZTg5NzEyNDVjMTEy
MzkuLmJlNGRiNDgwNWUyMzA1NTkwMzU1YjUyM2FiMGM4NzU3MmU0YmY0MjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCkBAIC01MTksMTIgKzUxOSwxMiBAQCB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6Zm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5z
YWN0aW9uTwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPgog
dm9pZCByZW1vdmVJdGVtc01hdGNoaW5nQ3VycmVudFRocmVhZChIYXNoTWFwPEtleVR5cGUsIFZh
bHVlVHlwZT4mIG1hcCkKIHsKLSAgICBhdXRvIGN1cnJlbnRUaHJlYWRJRCA9IGN1cnJlbnRUaHJl
YWQoKTsKKyAgICBhdXRvJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAKICAg
ICBWZWN0b3I8S2V5VHlwZT4ga2V5czsKICAgICBrZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bWFwLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1hcCkgewotICAgICAgICBp
ZiAoaXRlcmF0b3IudmFsdWUtPm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZElEKQor
ICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUtPm9yaWdpblRocmVhZCgpID09IGN1cnJlbnRUaHJl
YWQpCiAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChpdGVyYXRvci5rZXkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBjNzI0NTMxYjJlMWU1OTYyNDVj
NTY5M2I1NjU1NWE5ZjY4ZGMzNmE1Li42MGMwOGQ2ZDM3MTY2NjY2MTU2YzMyZTFmNzIwODRlMThm
YjBhMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNTEsMTIgKzUxLDEyIEBA
IGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhbnNhY3Rp
b25PcGVyYXRpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0g
Y3VycmVudFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLmdldCgpID09
IFRocmVhZDo6Y3VycmVudCgpKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZvcm0oKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAg
ICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsK
ICAgICAgICAgQVNTRVJUKG1fcGVyZm9ybUZ1bmN0aW9uKTsKICAgICAgICAgbV9wZXJmb3JtRnVu
Y3Rpb24oKTsKICAgICAgICAgbV9wZXJmb3JtRnVuY3Rpb24gPSB7IH07CkBAIC02NCw3ICs2NCw3
IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAKICAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbXBs
ZXRlT25UaGlzVGhyZWFkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewotICAgICAg
ICBBU1NFUlQobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAgICBB
U1NFUlQobV9vcmlnaW5UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAg
ICBtX3RyYW5zYWN0aW9uLT5vcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihkYXRhLCAqdGhpcyk7
CiAgICAgfQogCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIGlmIChtX29yaWdp
blRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSkKKyAgICAgICAgaWYgKG1fb3JpZ2luVGhyZWFk
LmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKQogICAgICAgICAgICAgdHJhbnNpdGlvblRvQ29t
cGxldGVPblRoaXNUaHJlYWQoZGF0YSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV90
cmFuc2FjdGlvbi0+cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoKnRoaXMsICZUcmFuc2Fj
dGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQsIGRhdGEpOwpA
QCAtODMsNyArODMsNyBAQCBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gewogCiAgICAgdm9pZCBkb0Nv
bXBsZXRlKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgICAgICBBU1NFUlQobV9v
cmlnaW5UaHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgICAgIC8vIER1
ZSB0byByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiB0aGUgc2VydmVyIHNlbmRpbmcgYW4gIm9wZXJh
dGlvbiBjb21wbGV0ZSIgbWVzc2FnZSBhbmQgdGhlIGNsaWVudAogICAgICAgICAvLyBmb3JjZWZ1
bGx5IGFib3J0aW5nIGFuIG9wZXJhdGlvbiwgaXQncyB1bmF2b2lkYWJsZSB0aGF0IHRoaXMgbWV0
aG9kIG1pZ2h0IGJlIGNhbGxlZCB0d2ljZS4KQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBUcmFu
c2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUcmFuc2FjdGlv
bk9wZXJhdGlvbj4gewogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICBUaHJlYWRJZGVudGlm
aWVyIG9yaWdpblRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWRJRDsgfQor
ICAgIFRocmVhZCYgb3JpZ2luVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5UaHJlYWQu
Z2V0KCk7IH0KIAogICAgIElEQlJlcXVlc3QqIGlkYlJlcXVlc3QoKSB7IHJldHVybiBtX2lkYlJl
cXVlc3QuZ2V0KCk7IH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3Bl
cmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9u
PiB7CiAgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCkgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbi5nZXQoKTsgfQogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIGluZGV4UmVjb3Jk
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhSZWNvcmRUeXBlOyB9CiAKLSAgICBUaHJlYWRJ
ZGVudGlmaWVyIG1fb3JpZ2luVGhyZWFkSUQgeyBjdXJyZW50VGhyZWFkKCkgfTsKKyAgICBSZWY8
VGhyZWFkPiBtX29yaWdpblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAgICAgUmVmUHRy
PElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKICAgICBib29sIG1fbmV4dFJlcXVlc3RDYW5Hb1Rv
U2VydmVyIHsgdHJ1ZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCBkOTUwNDdjOTAzMDUxYzBiYzNkNWU2MzhiMjdiNDU4
NTQyNGIwNTMyLi5hMDM4MWExYmQ0NDRmMDBjOGUxODg1MmE2NTllNWUzY2MxNDE1NGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBA
IC0xMDAsOSArMTAwLDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0vLyBGSVhNRTogY2hlY2sgdGhlIHByb3BlciB3YXkg
dG8gcmVmZXJlbmNlIGFuIHVuZGVmaW5lZCB0aHJlYWQgSUQKLWNvbnN0IGludCBVbmRlZmluZWRU
aHJlYWRJZGVudGlmaWVyID0gMHhmZmZmZmZmZjsKLQogY29uc3QgdW5zaWduZWQgTWF4UGVyaW9k
aWNXYXZlTGVuZ3RoID0gNDA5NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM2LDcgKzEz
Myw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6
Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCi0gICAgLCBtX2dyYXBoT3du
ZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKKyAgICAsIG1fZ3JhcGhPd25lclRo
cmVhZChudWxscHRyKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTIsNyArMTQ5
LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0
cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgq
dGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQotICAgICwgbV9ncmFwaE93bmVyVGhyZWFkKFVuZGVmaW5lZFRocmVhZElk
ZW50aWZpZXIpCisgICAgLCBtX2dyYXBoT3duZXJUaHJlYWQobnVsbHB0cikKIHsKICAgICBjb25z
dHJ1Y3RDb21tb24oKTsKIApAQCAtNjk2LDIzICs2OTMsMjMgQEAgdm9pZCBBdWRpb0NvbnRleHQ6
OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAgIC8vIERvbid0IGFsbG93IHJlZ3VsYXIg
bG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBUaHJlYWRJZGVudGlmaWVyIHRoaXNUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7
CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAKLSAgICBpZiAo
dGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICBpZiAoJnRoaXNUaHJlYWQg
PT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUg
bG9jay4KICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KICAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRleC5s
b2NrKCk7Ci0gICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IHRoaXNUaHJlYWQ7CisgICAgICAg
IG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOwogICAgICAgICBtdXN0UmVsZWFzZUxv
Y2sgPSB0cnVlOwogICAgIH0KIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYg
bXVzdFJlbGVhc2VMb2NrKQogewotICAgIFRocmVhZElkZW50aWZpZXIgdGhpc1RocmVhZCA9IGN1
cnJlbnRUaHJlYWQoKTsKLSAgICBib29sIGlzQXVkaW9UaHJlYWQgPSB0aGlzVGhyZWFkID09IGF1
ZGlvVGhyZWFkKCk7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9UaHJlYWQoKTsK
IAogICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9jayBvbiBtYWluIHRo
cmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgogICAgIEFTU0VSVChpc0F1ZGlvVGhy
ZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKQEAgLTcyNSw3ICs3MjIsNyBAQCBib29s
IEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCiAgICAgCiAgICAg
Ym9vbCBoYXNMb2NrOwogICAgIAotICAgIGlmICh0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRo
cmVhZCkgeworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKICAg
ICAgICAgLy8gVGhyZWFkIGFscmVhZHkgaGFzIHRoZSBsb2NrLgogICAgICAgICBoYXNMb2NrID0g
dHJ1ZTsKICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CkBAIC03MzQsNyArNzMxLDcg
QEAgYm9vbCBBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAg
ICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoaGFzTG9jaykKLSAgICAgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IHRo
aXNUaHJlYWQ7CisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVhZDsK
IAogICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOwogICAgIH0KQEAgLTc0NCwyMCAr
NzQxLDIwIEBAIGJvb2wgQXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykKIAogdm9pZCBBdWRpb0NvbnRleHQ6OnVubG9jaygpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQpOworICAgIEFTU0VSVCgmVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV9ncmFwaE93bmVyVGhyZWFkKTsKIAotICAgIG1fZ3JhcGhPd25lclRocmVhZCA9
IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXI7CisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVs
bHB0cjsKICAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOwogfQogCiBib29sIEF1ZGlv
Q29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2F1ZGlvVGhyZWFkOworICAgIHJldHVybiAmVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9hdWRpb1RocmVhZDsKIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OmlzR3JhcGhPd25lcigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQ7
CisgICAgcmV0dXJuICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2dyYXBoT3duZXJUaHJlYWQ7CiB9
CiAKIHZvaWQgQXVkaW9Db250ZXh0OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSog
bm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CmluZGV4IDQ3NGU2ODdhYmM4MDA5OGE3ZWZjMzk0ZDI1NDg3YzQ4ZGZlMGUzZTQuLmQ2M2Q0NDE2
MDgzYmM4YzRhY2RlMjU4M2FkMTVkMmM5MDkwZGYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTc4LDggKzE3OCw4IEBAIGNsYXNz
IEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBdWRpb0NvCiAgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2lu
ZzoKICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkSWRlbnRpZmll
ciB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9IHRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0
aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQotICAgIFRocmVhZElkZW50aWZpZXIgYXVk
aW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9CisgICAgdm9pZCBzZXRB
dWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAv
LyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIFRo
cmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFRocmVhZCo+KG1f
YXVkaW9UaHJlYWQpOyB9CiAgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3Q7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0
ZWQgYW5kIHRoZW4gc2h1dGRvd24uCkBAIC0zODEsOCArMzgxLDEwIEBAIGNsYXNzIEF1ZGlvQ29u
dGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxBdWRpb0NvCiAKICAgICAvLyBHcmFwaCBsb2NraW5nLgogICAgIExvY2sgbV9jb250ZXh0R3Jh
cGhNdXRleDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fYXVkaW9UaHJlYWQgeyAw
IH07Ci0gICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmllciBtX2dyYXBoT3duZXJUaHJlYWQ7IC8v
IGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBp
dCwgb3RoZXJ3aXNlID09IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIKKyAgICAvLyBGSVhNRTog
VXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICB2b2xhdGlsZSBUaHJlYWQqIG1fYXVk
aW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgdm9sYXRpbGUgVGhyZWFkKiBtX2dyYXBoT3duZXJU
aHJlYWQ7IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hp
Y2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IG51bGxwdHIuCiAKICAgICBBc3luY0F1ZGlvRGVjb2Rl
ciBtX2F1ZGlvRGVjb2RlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA1MTEyODE4NTE4NGYzY2Ni
NWE1ZDBmOGU5MDAzNzYxZTlhMzUwYzdjLi42Mjk3NjZjM2I4ZTc1Y2FlMDExMWEzN2EzM2M4ZmZi
ZTI4ZjFiOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpyZW5kZXIoQXVkaW9CdXMqLCBBdWRpb0J1cyogZGVzdGluYXRpb25C
dXMsIHNpemVfdCBudQogICAgIC8vIFRoaXMgd2lsbCB0YWtlIGNhcmUgb2YgYWxsIEF1ZGlvTm9k
ZXMgYmVjYXVzZSB0aGV5IGFsbCBwcm9jZXNzIHdpdGhpbiB0aGlzIHNjb3BlLgogICAgIERlbm9y
bWFsRGlzYWJsZXIgZGVub3JtYWxEaXNhYmxlcjsKICAgICAKLSAgICBjb250ZXh0KCkuc2V0QXVk
aW9UaHJlYWQoY3VycmVudFRocmVhZCgpKTsKKyAgICBjb250ZXh0KCkuc2V0QXVkaW9UaHJlYWQo
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIAogICAgIGlmICghY29udGV4dCgpLmlzSW5pdGlhbGl6
ZWQoKSkgewogICAgICAgICBkZXN0aW5hdGlvbkJ1cy0+emVybygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCA3ODNmOTIxZjEyN2E1
YTM0ZWNlYjU4YWM2ZDVhYThkZjMzNmIyMWRhLi40MjA4ZWFlMWFmNjRkNmQyNWM2YzRmNjI5Yjdk
ZGUzODg2ZTBjYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkK
IAogdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IGRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZU
aHJlYWQ6OmN1cnJlbnQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpKTsKIAogICAg
IHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRl
eCk7CkBAIC03NjgsNyArNzY4LDcgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFiYXNlOjpzZWN1
cml0eU9yaWdpbigpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250
ZXh0VGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbihtX2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbi5nZXQoKSk7Ci0gICAgaWYg
KGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZElEKCkpCisgICAg
aWYgKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpKQog
ICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9k
YXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKaW5kZXggYTRlOTlhZDBiZGZmOTA2YjA2YjNkN2ZiOGM0
N2QzMWNjOTRhODQyNS4uY2JhZTEzNzE1M2Q4ZWFmYWI3NTljMGEwNzQ1YzRkMzE0ZjljMDgzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURl
dGFpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
RGV0YWlscy5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAgICAg
ICAgICwgbV9jcmVhdGlvblRpbWUoMCkKICAgICAgICAgLCBtX21vZGlmaWNhdGlvblRpbWUoMCkK
ICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV90aHJlYWRJRChUaHJlYWQ6OmN1cnJlbnRJRCgp
KQorICAgICAgICAsIG1fdGhyZWFkKCZUaHJlYWQ6OmN1cnJlbnQoKSkKICNlbmRpZgogICAgIHsK
ICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAgICAgICAg
ICwgbV9jcmVhdGlvblRpbWUoY3JlYXRpb25UaW1lKQogICAgICAgICAsIG1fbW9kaWZpY2F0aW9u
VGltZShtb2RpZmljYXRpb25UaW1lKQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3RocmVh
ZElEKFRocmVhZDo6Y3VycmVudElEKCkpCisgICAgICAgICwgbV90aHJlYWQoJlRocmVhZDo6Y3Vy
cmVudCgpKQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRGF0
YWJhc2VEZXRhaWxzIHsKICAgICBkb3VibGUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jcmVhdGlvblRpbWU7IH0KICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQogI2lmbmRlZiBOREVCVUcKLSAgICBUaHJlYWRJ
ZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWRJRDsgfQorICAgIFRo
cmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gKm1fdGhyZWFkOyB9CiAjZW5kaWYKIAogcHJp
dmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICBkb3Vi
bGUgbV9jcmVhdGlvblRpbWU7CiAgICAgZG91YmxlIG1fbW9kaWZpY2F0aW9uVGltZTsKICNpZm5k
ZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFJlZlB0cjxU
aHJlYWQ+IG1fdGhyZWFkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNDhlMGM0NzY3
OGM4ZjI2NTU0OGQ5NzUxMWE1OTkwNzE5NmFhOTkyNy4uN2YxYzgxZTE5MzQyMTFkMTBhZjI0NDRm
NjU0NTJlMTRkMjZjMjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIERhdGFi
YXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0
IFN0cmluZyYgbmFtZSwgU2VjCiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrIHsg
bV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWRE
YXRhYmFzZSA6IG1fcHJvcG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3Nl
ZERhdGFiYXNlLT5kZXRhaWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+
b3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocHJvcG9z
ZWREYXRhYmFzZS0+ZGV0YWlscygpLnRocmVhZElEKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSB8
fCBpc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb3Bvc2VkRGF0YWJh
c2UtPmRldGFpbHMoKS50aHJlYWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSB8fCBpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAxMTUyNGNkY2QyYWIz
NDJmYjA5ZmU2MTlhYjQ2ZjU3OTIzY2U2OWVmLi5lNGY1MTZlNzIzYTcxYWViOGY3OGYwZGIzMzRi
MTJmZmUxNTNiZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRGF0YWJh
c2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKICAgICAvLyBDbGVhbiB1cCB0aGUgbGlzdCBvZiBh
bGwgcGVuZGluZyB0cmFuc2FjdGlvbnMgb24gdGhpcyBkYXRhYmFzZSB0aHJlYWQKICAgICBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3ItPnNodXRkb3duKCk7CiAKLSAgICBMT0coU3RvcmFnZUFQSSwg
IkFib3V0IHRvIGRldGFjaCB0aHJlYWQgJWkgYW5kIGNsZWFyIHRoZSByZWYgdG8gRGF0YWJhc2VU
aHJlYWQgJXAsIHdoaWNoIGN1cnJlbnRseSBoYXMgJWkgcmVmKHMpIiwgbV90aHJlYWQtPmlkKCks
IHRoaXMsIHJlZkNvdW50KCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAiQWJvdXQgdG8gZGV0YWNo
IHRocmVhZCAlcCBhbmQgY2xlYXIgdGhlIHJlZiB0byBEYXRhYmFzZVRocmVhZCAlcCwgd2hpY2gg
Y3VycmVudGx5IGhhcyAlaSByZWYocykiLCBtX3RocmVhZC5nZXQoKSwgdGhpcywgcmVmQ291bnQo
KSk7CiAKICAgICAvLyBDbG9zZSB0aGUgZGF0YWJhc2VzIHRoYXQgd2UgcmFuIHRyYW5zYWN0aW9u
cyBvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgYW55IHRyYW5zYWN0aW9ucyBhcmUgc3RpbGwgb3Bl
biwgdGhleSBhcmUgcm9sbGVkIGJhY2sgYW5kIHdlIGRvbid0IGxlYXZlIHRoZSBkYXRhYmFzZSBp
biBhbgogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQgc3RhdGUuCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlJiBk
YXRhYmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7
CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBB
U1NFUlQoJlRocmVhZDo6Y3VycmVudCgpID09IG1fdGhyZWFkKTsKICAgICBBU1NFUlQoIW1fb3Bl
bkRhdGFiYXNlU2V0LmNvbnRhaW5zKCZkYXRhYmFzZSkpOwogICAgIG1fb3BlbkRhdGFiYXNlU2V0
LmFkZCgmZGF0YWJhc2UpOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRGF0YWJhc2VUaHJl
YWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBMb2Nr
SG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CiAKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBBU1NFUlQoJlRocmVhZDo6Y3VycmVu
dCgpID09IG1fdGhyZWFkKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29wZW5E
YXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKICAgICBtX29wZW5EYXRhYmFzZVNldC5y
ZW1vdmUoJmRhdGFiYXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCAzNDAwOWQxYjIyYzQ0YzJlMDNlZWNiYjdm
NDRlNGM3YzhkN2RhZDU4Li5hOGM1NzBiNmYzYWM0YjNhN2RkNDFjZjFiMTI3NzJiZWJkOGM0N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIERhdGFiYXNlVGhyZWFkIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNlVGhyZWFkPiB7CiAKICAgICB2b2lkIHJlY29y
ZERhdGFiYXNlT3BlbihEYXRhYmFzZSYpOwogICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9zZWQo
RGF0YWJhc2UmKTsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGdldFRocmVhZElEKCkgeyByZXR1cm4g
bV90aHJlYWQgPyBtX3RocmVhZC0+aWQoKSA6IDA7IH0KKyAgICBUaHJlYWQqIGdldFRocmVhZCgp
IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKICAgICBTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTcxZTBkYjc4MWFjZTlmYzVlNzU0N2Jl
MTNiN2ZlNGIzNzY3MGI5Yi4uMTg3N2YzNGE4YzNiNjFjNjJkOGNjYmU1MjFhNDdmNWIwYzRmNzUz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpj
aGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVy
LmNsZWFyKCk7CiAKICAgICAvLyBUaGUgbmV4dCBzdGVwcyBzaG91bGQgYmUgZXhlY3V0ZWQgb25s
eSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgotICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0g
bV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgpKQorICAgIGlmICgmVGhy
ZWFkOjpjdXJyZW50KCkgIT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0
aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5k
ZXggMmVhOTNkZGYyYjU0NzU4MDY1ZjZkNjExM2EwZWRlYzFjMjNlZTVlYy4uZDRjMTE0YTViOWQ5
NDQ0MzMxYTljNmE4ZjI3NzExZjVmNTk3MTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApA
QCAtMzUzLDcgKzM1Myw3IEBAIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6flNRTFRyYW5zYWN0aW9u
QmFja2VuZCgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFi
YXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQo
KSA9PSBtX2Zyb250ZW5kLmRhdGFiYXNlKCkuZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSk7
CiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKIApAQCAtNDY1
LDcgKzQ2NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRlTmV4dFN0YXRl
QW5kQ2xlYW51cElmTmVlZGVkKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om5vdGlm
eURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2Zyb250ZW5kLmRhdGFi
YXNlKCkuZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSk7CiAKICAgICAvLyBJZiB0aGUgdHJh
bnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVyZSwgc2lu
Y2UgdGhpcwogICAgIC8vIGlzIG91ciBsYXN0IG9wcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGluZyBy
ZWxhdGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCA0OWUxNTM1MzZhNmEzNTRhNmMzNmI1MTQ5MTA4
OTczZGEzOWNiZGRjLi5mMzQzY2M1OTA0ZmMyODdhMjVlMzJkZjg5NjAwM2ExNzNjNmU2YzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTUyLDcg
KzUyLDcgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEgewogICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tE
YXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIDogbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3RocmVhZChj
dXJyZW50VGhyZWFkKCkpCisgICAgICAgICwgbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkpCiAj
ZW5kaWYKICAgICB7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBKU0NhbGxiYWNrRGF0
YSB7CiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFTU0VS
VChtX3RocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKICAgICB9CiAg
ICAgCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIEpTQ2FsbGJhY2tEYXRhIHsKIHByaXZhdGU6CiAg
ICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKICNpZm5kZWYg
TkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZDsKKyAgICBSZWY8VGhyZWFkPiBt
X3RocmVhZDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggMGY3NGU2YzE0MDFkOGJhZGQ0YTQ1NmIxMWNjOWNmOTRi
N2E4MTQ3Ny4uNjM1Nzc2OWQzMmQzMzc4OGY5YWFkOGJhZTUyM2NjNTg3NGQzOTQ2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0xNDYs
NyArMTQ2LDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogewogICAgIC8vIEluIGEgV29ya2VyLCB0aGUgZXhlY3V0aW9uIHNo
b3VsZCBhbHdheXMgaGFwcGVuIG9uIGEgd29ya2VyIHRocmVhZC4KLSAgICBBU1NFUlQod29ya2Vy
R2xvYmFsU2NvcGUudGhyZWFkKCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOworICAg
IEFTU0VSVCh3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxl
ciA9IHdvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMjE5OWQ0YTFlMTZhYTNiYmU2NGVjNmFj
MTQ5ODljY2VlNDNhYjY0MS4uZjVkYTJiNjg5OTkzNzllZTkxZTE1NDkzZWZiODE0YjU3ZDZiYTFl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hN
ZXNzYWdlUG9ydEV2ZW50cygpCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRN
ZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB7CiAgICAgQVNTRVJUKChpczxE
b2N1bWVudD4oKnRoaXMpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CisgICAgICAgIHx8IChp
czxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZCgpKSk7CiAKICAg
ICBtX21lc3NhZ2VQb3J0cy5hZGQoJm1lc3NhZ2VQb3J0KTsKIH0KQEAgLTE3Miw3ICsxNzIsNyBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNyZWF0ZWRNZXNzYWdlUG9ydChNZXNzYWdl
UG9ydCYgbWVzc2FnZVBvcnQpCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3ll
ZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKIHsKICAgICBBU1NFUlQoKGlz
PERvY3VtZW50PigqdGhpcykgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3Jr
ZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZElEKCkpKTsKKyAgICAgICAgfHwg
KGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgJlRocmVhZDo6Y3VycmVudCgpID09IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkpKTsKIAog
ICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oCmluZGV4IDY0NmRmZWZjYzBiNmRhNDU3OTQ3
YWFkMmQ4ZTM1YThhZjI4NzAxNDUuLjE2YWVhNjAxZDE0ZTI2Mjg3NDViNjA0MDRiZjc5ZmRiYjZk
Mzk5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92ZXJs
YXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5LmgKQEAg
LTc4LDcgKzc4LDYgQEAgY2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXkgZmluYWwgOiBwdWJsaWMg
UGFnZU92ZXJsYXk6OkNsaWVudCB7CiAgICAgSW50UG9pbnQgbV9kcmFnUG9pbnQ7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQgeyAwIH07CiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1f
Y29udGFpbmVyTGF5ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IGQyMDRjNzYyMTBiMzM0MDRkZjQ0YzRkYTNm
Y2E3YWNjZDc3YjQyYTIuLjYxZmFjM2FlOGM1MmQzOTFkM2Q5MGI4ZTE3MmEwNGYzOTM4Y2IzY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
LmNwcApAQCAtNDAsOCArNDAsNyBAQCBTY3JvbGxpbmdUaHJlYWQ6OlNjcm9sbGluZ1RocmVhZCgp
CiAKIGJvb2wgU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQoKQogewotICAgIFJlZlB0
cjxUaHJlYWQ+IHRocmVhZCA9IFNjcm9sbGluZ1RocmVhZDo6c2luZ2xldG9uKCkubV90aHJlYWQ7
Ci0gICAgcmV0dXJuIHRocmVhZCAmJiB0aHJlYWQtPmlkKCkgPT0gY3VycmVudFRocmVhZCgpOwor
ICAgIHJldHVybiBTY3JvbGxpbmdUaHJlYWQ6OnNpbmdsZXRvbigpLm1fdGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0
aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdXBwbGVtZW50YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVu
dGFibGUuaAppbmRleCAzM2Y2OWEyZDFlZDVlYjgwMGNiZDk1MDA0ZjE4NjJhZTgxOGYxMzI2Li43
OTg0YzVkNjY0MTU2N2FlZTNjMmI2YzgxNDBhNjRiYWEyMjI3NGJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgKQEAgLTk4LDMzICs5OCwzMyBAQCBjbGFzcyBTdXBw
bGVtZW50YWJsZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBwcm92aWRlU3VwcGxlbWVudChjb25zdCBj
aGFyKiBrZXksIHN0ZDo6dW5pcXVlX3B0cjxTdXBwbGVtZW50PFQ+PiBzdXBwbGVtZW50KQogICAg
IHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3Ro
cmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJl
YWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgQVNTRVJUKCFtX3N1cHBsZW1lbnRzLmdldChr
ZXkpKTsKICAgICAgICAgbV9zdXBwbGVtZW50cy5zZXQoa2V5LCBXVEZNb3ZlKHN1cHBsZW1lbnQp
KTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZVN1cHBsZW1lbnQoY29uc3QgY2hhcioga2V5KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZCht
X3RocmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JU
aHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgbV9zdXBwbGVtZW50cy5yZW1vdmUoa2V5
KTsKICAgICB9CiAKICAgICBTdXBwbGVtZW50PFQ+KiByZXF1aXJlU3VwcGxlbWVudChjb25zdCBj
aGFyKiBrZXkpCiAgICAgewotICAgICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRh
Rm9yVGhyZWFkKG1fdGhyZWFkSWQpKTsKKyAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExv
Y2FsRGF0YUZvclRocmVhZChtX3RocmVhZC5nZXQoKSkpOwogICAgICAgICByZXR1cm4gbV9zdXBw
bGVtZW50cy5nZXQoa2V5KTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiBwcm90ZWN0
ZWQ6Ci0gICAgU3VwcGxlbWVudGFibGUoKSA6IG1fdGhyZWFkSWQoY3VycmVudFRocmVhZCgpKSB7
IH0KKyAgICBTdXBwbGVtZW50YWJsZSgpIDogbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkpIHsg
fQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBz
dGQ6OnVuaXF1ZV9wdHI8U3VwcGxlbWVudDxUPj4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBTdXBw
bGVtZW50TWFwOwogICAgIFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKICNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElkOworICAgIFJlZjxUaHJl
YWQ+IG1fdGhyZWFkOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKaW5k
ZXggOWNjYjQwMjFmNTAzMzc4YTg2MjI0ZTRhNmQ3NTFkYTQ4YTkzMjY3Ny4uODdkNGU2OTBmNjE2
NDBiM2M1ODI4MWFiYzI5YzY0MTllMDFiNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNw
cApAQCAtMTg2LDkgKzE4Niw2IEBAIGlubGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rp
b246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiBhLCBjb25zdCBUaW1lCiAvLyAtLS0tLS0t
LS0tLS0tLS0tCiAKIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSNpZm5kZWYgTkRFQlVHCi0gICAg
OiBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjAzLDcgKzIw
MCw3IEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAKIHZvaWQgVGltZXJCYXNlOjpzdGFydChT
ZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpCiB7Ci0gICAg
QVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAg
IEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkp
KTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZhbDsKICAgICBzZXROZXh0
RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBuZXh0RmlyZUludGVydmFsKTsKQEAgLTIx
MSw3ICsyMDgsNyBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUludGVy
dmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogCiB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiB7
Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkp
OworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQu
Z2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwX3M7CiAgICAgc2V0TmV4dEZpcmVU
aW1lKE1vbm90b25pY1RpbWUgeyB9KTsKQEAgLTM2Miw3ICszNTksNyBAQCB2b2lkIFRpbWVyQmFz
ZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSkKIAogdm9pZCBUaW1l
ckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIG5ld1RpbWUpCiB7Ci0gICAgQVNT
RVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAgIEFT
U0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsK
ICAgICBBU1NFUlQoIW1fd2FzRGVsZXRlZCk7CiAKICAgICBpZiAobV91bmFsaWduZWROZXh0Rmly
ZVRpbWUgIT0gbmV3VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IGUzZmQ3Yjk2Y2Q5
M2JmOWZhMjcwNmRiYzRiNTgwN2I1NzBlZDU2YzUuLjk1NTg3YjI2ZTJmZDBjNzEwYWI1NjQzNzQ3
MjZjYTg3NDk4NTI3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMTAzLDcgKzEwMyw3
IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgVmVjdG9yPFRpbWVyQmFzZSo+KiBtX2NhY2hlZFRo
cmVhZEdsb2JhbFRpbWVySGVhcCB7IG51bGxwdHIgfTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBU
aHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOworICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhy
ZWFkOjpjdXJyZW50KCkgfTsKICAgICBib29sIG1fd2FzRGVsZXRlZCB7IGZhbHNlIH07CiAjZW5k
aWYKIApAQCAtMTQwLDkgKzE0MCw5IEBAIGlubGluZSBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUo
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlzIGluIHRlcm1zIG9mIFVTRShXRUJf
VEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPUykuCiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICBBU1NFUlQobV90aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV90aHJl
YWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vsc2UKLSAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9tYWluX25wKCkgfHwgbV90aHJlYWQgPT0gY3VycmVu
dFRocmVhZCgpKTsKKyAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgcHRocmVhZF9t
YWluX25wKCkgfHwgbV90aHJlYWQuZ2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9uZXh0Rmly
ZVRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDFmMmI1ZjVkMGJhODUxYjIx
Mzk1NGY4NDg0N2Q5M2E0MmIwYTU5ZjIuLjNlOWQyZThiNWNlOTc0NDA3MjFiMjllNDQ5MDE3ZTky
ZGUzZTllMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEyMjQsOCArMTIyNCw4IEBA
IHN0YXRpYyBib29sIHNob3VsZEF1dG9BY3RpdmF0ZUZvbnRJZk5lZWRlZChjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gVGhpcyBjYWNoZSBpcyBub3Qg
dGhyZWFkIHNhZmUgc28gdGhlIGZvbGxvd2luZyBhc3NlcnRpb24gaXMgdGhlcmUgdG8KICAgICAv
LyBtYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY2FsbGVkIGZyb20gdGhlIHNhbWUg
dGhyZWFkLgotICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGluaXRUaHJlYWRJZCA9IGN1cnJl
bnRUaHJlYWQoKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGluaXRUaHJlYWRJZCk7
CisgICAgc3RhdGljIFRocmVhZCogaW5pdFRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyAg
ICBBU1NFUlQoJlRocmVhZDo6Y3VycmVudCgpID09IGluaXRUaHJlYWQpOwogI2VuZGlmCiAKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxBdG9taWNTdHJpbmc+PiBrbm93bkZhbWls
aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3Bw
CmluZGV4IDFjY2EwY2NkYTgyMWFhNTJlZDVlMDU0NTFmMWYxZDVmMWNhYzg3Y2IuLmIyM2RhYzI5
YjRkNzQ5ZmNmY2NiMjMzNzYwOTVmZWYyMGI1ZTgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKQEAgLTU4LDkgKzU4LDEwIEBAIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5KCkKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNv
bXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvbXBvc2l0b3IsIFRleHR1cmVNYXBwZXJMYXll
ciogdGFyZ2V0TGF5ZXIpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIG1fY29tcG9zaXRvclRocmVh
ZElEID0gbV9jb21wb3NpdG9yVGhyZWFkSUQgPyBtX2NvbXBvc2l0b3JUaHJlYWRJRCA6IFdURjo6
Y3VycmVudFRocmVhZCgpOworICAgIGlmICghbV9jb21wb3NpdG9yVGhyZWFkKQorICAgICAgICBt
X2NvbXBvc2l0b3JUaHJlYWQgPSAmVGhyZWFkOjpjdXJyZW50KCk7CiAjZW5kaWYKLSAgICBBU1NF
UlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIEFT
U0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NF
UlQoY29tcG9zaXRvcik7CiAgICAgQVNTRVJUKHRhcmdldExheWVyKTsKICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOwpAQCAtODAsNyArODEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBj
bwogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmludmFsaWRhdGUoKQog
ewotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQo
KSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogICAgIEZ1bmN0aW9uPHZvaWQoKT4gdXBkYXRlRnVuY3Rpb247CiAgICAgewogICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwpAQCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cHVzaE5leHRCdWZmZXIoc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmdldEF2YWlsYWJsZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKIHsKICAgICBBU1NF
UlQobV9sb2NrLmlzSGVsZCgpKTsKLSAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWlsYWJsZUJ1ZmZlcjsKIAogICAgIGF1dG8gYnVmZmVycyA9
IFdURk1vdmUobV91c2VkQnVmZmVycyk7CkBAIC0xNDQsNyArMTQ1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3gKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YXBwZW5k
VG9VbnVzZWRCdWZmZXJzKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gYnVmZmVyKQogewogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwotICAgIEFT
U0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIG1f
dXNlZEJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgc2NoZWR1bGVSZWxlYXNl
VW51c2VkQnVmZmVycygpOwogfQpAQCAtMTcyLDcgKzE3Myw3IEBAIHZvaWQgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCkKIAog
dm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpzd2FwQnVmZmVyKCkKIHsKLSAg
ICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIGlmICghbV90YXJnZXRMYXllciB8fCAh
bV9wZW5kaW5nQnVmZmVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaAppbmRleCBkMDA0Y2M4MGZlODY1Y2I3M2MyZTFkNGM4
Y2JmY2YyNmNjZTI5Yjg2Li5hY2MzMDYwZDBkMmFjODg1MzZlNDMxYmI2MGIwNzUwMDcxMDJlMzcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKQEAg
LTkxLDcgKzkxLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUZXh0dXJlTWFwcGUKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+IG1fcmVs
ZWFzZVVudXNlZEJ1ZmZlcnNUaW1lcjsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fY29tcG9zaXRvclRocmVhZElEIHsgMCB9OworICAgIFJlZlB0cjxUaHJlYWQ+IG1f
Y29tcG9zaXRvclRocmVhZCB7IG51bGxwdHIgfTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21wb3Np
dG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDgwZTQ1NDA4NGM4MGUwNmEyMThiZjdm
MGIwZWFkYzIxNjk5MTMzM2MuLjk1ZmNmMTMxMzUyZTJhMzgxZDlmNGM1N2M1ZTI0ZTBkMDdhOThi
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJl
YWQubW0KQEAgLTY1Niw3ICs2NTYsNiBAQCB2b2lkICpSdW5XZWJUaHJlYWQodm9pZCAqYXJnKQog
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBXZWJUaHJlYWQgYW5kIHRoZSBtYWluIHRo
cmVhZCBzaGFyZSB0aGUgc2FtZSBUaHJlYWRHbG9iYWxEYXRhIG9iamVjdHMuCiAgICAgV2ViQ29y
ZTo6dGhyZWFkR2xvYmFsRGF0YSgpLnNldFdlYkNvcmVUaHJlYWREYXRhKCk7Ci0gICAgaW5pdGlh
bGl6ZVdlYlRocmVhZElkZW50aWZpZXIoKTsKIAogI2lmIEhBVkUoUFRIUkVBRF9TRVROQU1FX05Q
KQogICAgIHB0aHJlYWRfc2V0bmFtZV9ucCgiV2ViVGhyZWFkIik7CkBAIC03NjYsNyArNzY1LDcg
QEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogICAgICAgICBzdGFydHVwQ29uZGl0aW9u
LndhaXQoc3RhcnR1cExvY2spOwogICAgIH0KIAotICAgIGluaXRpYWxpemVBcHBsaWNhdGlvblVJ
VGhyZWFkSWRlbnRpZmllcigpOworICAgIGluaXRpYWxpemVBcHBsaWNhdGlvblVJVGhyZWFkKCk7
CiB9CiAKIHN0YXRpYyBpbnQgV2ViVGltZWRDb25kaXRpb25Mb2NrIChwdGhyZWFkX2NvbmRfdCAq
Y29uZGl0aW9uLCBwdGhyZWFkX211dGV4X3QgKmxvY2ssIENGQWJzb2x1dGVUaW1lIGludGVydmFs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5k
ZXggOTg3YjM0NmFlYjkxNzIzODQ4ZjAzNjc0YTgxYTkxNzJjYTc4MzM2MS4uNDA2Y2ViMWE5MjRm
NWI2YjkyOGM1NDUyMzExOGY4NGUwYjU5NWZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBTUUxp
dGVEYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIGZvcldlYlNRTERh
dGFiYXNlKQogICAgIH0KIAogICAgIGlmIChpc09wZW4oKSkKLSAgICAgICAgbV9vcGVuaW5nVGhy
ZWFkID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBtX29wZW5pbmdUaHJlYWQgPSAmVGhyZWFk
OjpjdXJyZW50KCk7CiAgICAgZWxzZQogICAgICAgICBtX29wZW5FcnJvck1lc3NhZ2UgPSAic3Fs
aXRlX29wZW4gcmV0dXJuZWQgbnVsbCI7CiAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNRTGl0
ZURhdGFiYXNlOjpjbG9zZSgpCiB7CiAgICAgaWYgKG1fZGIpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYmVpbmcgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBkdXJpbmcgSlMgR0MuIDxy
ZGFyOi8vcHJvYmxlbS81NzM5ODE4PgotICAgICAgICAvLyBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fb3BlbmluZ1RocmVhZCk7CisgICAgICAgIC8vIEFTU0VSVCgmVGhyZWFkOjpjdXJyZW50
KCkgPT0gbV9vcGVuaW5nVGhyZWFkKTsKICAgICAgICAgc3FsaXRlMyogZGIgPSBtX2RiOwogICAg
ICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlQ2xvc2luZ011
dGV4KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbG9zZSgpCiAg
ICAgICAgIHNxbGl0ZTNfY2xvc2UoZGIpOwogICAgIH0KIAotICAgIG1fb3BlbmluZ1RocmVhZCA9
IDA7CisgICAgbV9vcGVuaW5nVGhyZWFkID0gbnVsbHB0cjsKICAgICBtX29wZW5FcnJvciA9IFNR
TElURV9FUlJPUjsKICAgICBtX29wZW5FcnJvck1lc3NhZ2UgPSBDU3RyaW5nKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDcxNzJlNGUx
MzM2NjNhY2UwZjg5YzU0NGYxZjBmMTA2NjRiYjkwYzAuLjliZTFhZDQ0OGEwOTBiYjFjNzI2YzQw
MzAwOWEyMzMxMjljYmEzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgU1FMaXRlRGF0YWJhc2Ugewog
ICAgIHNxbGl0ZTMqIHNxbGl0ZTNIYW5kbGUoKSBjb25zdAogICAgIHsKICNpZiAhUExBVEZPUk0o
SU9TKQotICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8fCBjdXJyZW50VGhyZWFkKCkgPT0gbV9v
cGVuaW5nVGhyZWFkIHx8ICFtX2RiKTsKKyAgICAgICAgQVNTRVJUKG1fc2hhcmFibGUgfHwgJlRo
cmVhZDo6Y3VycmVudCgpID09IG1fb3BlbmluZ1RocmVhZCB8fCAhbV9kYik7CiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuIG1fZGI7CiAgICAgfQpAQCAtMTU3LDcgKzE1Nyw3IEBAIGNsYXNzIFNRTGl0
ZURhdGFiYXNlIHsKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2F1dGhvcml6ZXI7
CiAKICAgICBMb2NrIG1fbG9ja2luZ011dGV4OwotICAgIFRocmVhZElkZW50aWZpZXIgbV9vcGVu
aW5nVGhyZWFkIHsgMCB9OworICAgIFJlZlB0cjxUaHJlYWQ+IG1fb3BlbmluZ1RocmVhZCB7IG51
bGxwdHIgfTsKIAogICAgIExvY2sgbV9kYXRhYmFzZUNsb3NpbmdNdXRleDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA4ODYxZWI4MWQ1NmVm
OThhODMzMWUyODQ0Y2YyMDBhOThmOThmMTVhLi5mNjc0ZDRhMjlhMWYyOWEyNGVhMWUyN2Y1ZjJk
ZjJlOGM4NTU0NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcApAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYwogCiBXb3Jr
ZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IHRocmVhZCgpLnRocmVhZElEKCkpOworICAgIEFTU0VSVCgmVGhyZWFkOjpj
dXJyZW50KCkgPT0gdGhyZWFkKCkudGhyZWFkKCkpOwogCiAgICAgbV9wZXJmb3JtYW5jZSA9IG51
bGxwdHI7CiAgICAgbV9jcnlwdG8gPSBudWxscHRyOwpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQg
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uCiAKIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OmlzQ29udGV4dFRo
cmVhZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSB0aHJlYWQoKS50
aHJlYWRJRCgpOworICAgIHJldHVybiAmVGhyZWFkOjpjdXJyZW50KCkgPT0gdGhyZWFkKCkudGhy
ZWFkKCk7CiB9CiAKIGJvb2wgV29ya2VyR2xvYmFsU2NvcGU6OmlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAppbmRleCBiNWRkMzhhNTYwYTI0YTVkMjdjMjdjYjU1MGFiMTg2ODE3M2Y3ZDc5Li5l
ZGQ3ZTgzMTEzNWUwNGQ1OWUwYTg3NmQ0NjI4ZjEzZDMyOTBkNWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNTksNyArNTksNyBA
QCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkoV29ya2VyJiB3b3Jr
ZXJPYmplY3QpCiAgICAgLCBtX3dvcmtlck9iamVjdCgmd29ya2VyT2JqZWN0KQogewogICAgIEFT
U0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGlzTWFpblRo
cmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkSUQoKSkpOwor
ICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpICYmICZUaHJlYWQ6OmN1cnJlbnQoKSA9PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Km1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkKCkpKTsKIAogICAgIC8v
IE5vYm9keSBvdXRzaWRlIHRoaXMgY2xhc3MgcmVmIGNvdW50cyB0aGlzIG9iamVjdC4gVGhlIG9y
aWdpbmFsIHJlZgogICAgIC8vIGlzIGJhbGFuY2VkIGJ5IHRoZSBkZXJlZiBpbiB3b3JrZXJHbG9i
YWxTY29wZURlc3Ryb3llZEludGVybmFsLgpAQCAtNjksNyArNjksNyBAQCBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6fldvcmtlck1lc3NhZ2luZ1Byb3h5KCkKIHsKICAgICBBU1NFUlQoIW1fd29ya2Vy
T2JqZWN0KTsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgp
LnRocmVhZElEKCkpKTsKKyAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSAmJiAmVGhyZWFkOjpjdXJyZW50KCkgPT0gZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVh
ZCgpKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29s
IGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9u
b3RvbmljVGltZSB0aW1lT3JpZ2luLCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxv
b3AuY3BwCmluZGV4IDIzNjFiZjc0NWFhYjU0ZjU5MTM2MDczOTI3NjliNjJhZGIzZTBiY2UuLjU2
ZmFmN2Q1NGVlMjlmY2I4YTMxMjVjZmJlZWI1YTVkNDgwMTA3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckdsb2JhbFNjb3BlKiBj
b250ZXh0LCBjb25zCiBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bklu
TW9kZShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgTW9kZVByZWRpY2F0ZSYgcHJl
ZGljYXRlLCBXYWl0TW9kZSB3YWl0TW9kZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7Ci0gICAg
QVNTRVJUKGNvbnRleHQtPnRocmVhZCgpLnRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKTsK
KyAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIEpTQzo6SlNSdW5Mb29wVGltZXI6OlRpbWVyTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgdGltZXJBZGRlZFRhc2sgPSBXVEY6OmNyZWF0ZVNoYXJlZFRhc2s8SlNDOjpKU1J1bkxvb3BU
aW1lcjo6VGltZXJOb3RpZmljYXRpb25UeXBlPihbdGhpc10gewogICAgICAgICAvLyBXZSBkb24n
dCBhY3R1YWxseSBkbyBhbnl0aGluZyBoZXJlLCB3ZSBqdXN0IHdhbnQgdG8gbG9vcCBhcm91bmQg
cnVuSW5Nb2RlCkBAIC0yMjEsNyArMjIxLDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3Jr
ZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnMKIHZv
aWQgV29ya2VyUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKFdvcmtlckdsb2JhbFNjb3BlKiBjb250
ZXh0KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFk
KCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0LT50
aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChtX21l
c3NhZ2VRdWV1ZS5raWxsZWQoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggNDllNWM0YmJiZjUyYmRjYTgxNTdjMWMwN2ZiMTk2
ZThkZWJlYzk2Yi4uN2M0MmUyOTNkYTM0NjRiNWM5N2RhNTQ2MTkyMDQ0NTc0NTcwZjhiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNz
IFdvcmtlclRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+
IHsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0KFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mJiBldmFsdWF0ZUNhbGxiYWNrKTsKICAgICB2b2lkIHN0b3AoV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYgdGVybWluYXRlZENhbGxiYWNrKTsKIAotICAgIFRocmVhZElkZW50aWZp
ZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZCA/IG1fdGhyZWFkLT5pZCgpIDog
MDsgfQorICAgIFRocmVhZCogdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAg
ICAgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KCkgY29uc3QgeyByZXR1cm4g
bV93b3JrZXJMb2FkZXJQcm94eTsgfQogICAgIFdvcmtlckRlYnVnZ2VyUHJveHkmIHdvcmtlckRl
YnVnZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlckRlYnVnZ2VyUHJveHk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcAppbmRleCAxNWQwZmVjYzczZjNmNTkxZGJmOWMyMGYwNzFhNWFjYzRkYTEw
NjE0Li5iMjVmY2ZhNDgwMjQyMDI1ZWM2MTZhNTRjMGJiZTQwNmJlMzJiYTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwKIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6On5TZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKIHsKICNpZm5kZWYg
TkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsK
KyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAjZW5kaWYKIH0KIApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYK
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IoUmVmPFNlcnZpY2VXb3Jr
ZXJKb2I+JiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdl
dCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fc3dDb25u
ZWN0aW9uKTsKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnN0YXJ0TWVzc2FnZXMoKQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRX
aXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgRXhjZXB0aW9uJiBleGNl
cHRpb24pCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09
IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkgPT0g
VGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBpZiAoYXV0byogY29udGV4dCA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9i
JiBqb2IsIGNvbnN0CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1Rv
RmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllcikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJl
YWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQo
KSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChhdXRvKiByZWdpc3Ry
YXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQpAQCAtMzIwLDcgKzMyMCw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRl
Rm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVk
IHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJU
KG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGF1
dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKQEAgLTM2MCw3ICsz
NjAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKb2Im
IGpvYiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAg
QVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAog
ICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKQEAgLTM4
MSw3ICszODEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0
aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKbwogdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikK
IHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVu
dFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2V2aWNlV29y
a2VyQ29udGFpbmVyICVwIHN0YXJ0aW5nIHNjcmlwdCBmZXRjaCBmb3Igam9iICVzIiwgdGhpcywg
am9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC00MDIs
NyArNDAyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNo
Rm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQu
Z2V0KCkgPT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBMT0coU2VydmljZVdv
cmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmaW5pc2hlZCBmZXRjaGluZyBzY3JpcHQg
Zm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2Vydmlj
ZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0
aW9uVGhyZWFkLmdldCgpID09IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgTE9H
KFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAgZmFpbGVkIGZldGNoaW5n
IHNjcmlwdCBmb3Igam9iICVzIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwg
Y29uc3QKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKFNlcnZpY2VX
b3JrZXJKb2ImIGpvYikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25U
aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5n
ZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGF1dG8gdGFrZW4gPSBt
X2pvYk1hcC50YWtlKGpvYi5pZGVudGlmaWVyKCkpOwpAQCAtNDcwLDcgKzQ3MCw3IEBAIFNXQ2xp
ZW50Q29ubmVjdGlvbiYgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25u
ZWN0aW9uKCkKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICNpZm5kZWYgTkRFQlVH
Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZC5nZXQoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5k
aWYKIAogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLmFkZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JblNlcnZlcihyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKTsKQEAgLTQ4MCw3ICs0
ODAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYQogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0
cmF0aW9uKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9
PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09
IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgbV9zd0Nvbm5lY3Rpb24tPnJlbW92
ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihyZWdpc3RyYXRpb24uaWRlbnRpZmll
cigpKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpcwogdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVDb250cm9sbGVyQ2hhbmdl
RXZlbnQoKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9
PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLmdldCgpID09
IFRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgaWYgKG1faXNTdG9wcGVkKQpAQCAt
NTEzLDcgKzUxMyw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCgpCiBEb2N1
bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpjb250ZXh0SWRl
bnRpZmllcigpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFk
ID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkg
PT0gVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDJkOWE5ZjA0NmFiYjRhY2VmMDM2MTc5
OGY2M2YxNjE4OGQ4MjdkMDAuLmVhMTJlOGM1OTRkZmI0MzNjMzY0OGQzNWNmNWY5MTU2MTljOWE2
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIEFjCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbio+IG1fcmVnaXN0cmF0aW9uczsKIAogI2lmbmRlZiBO
REVCVUcKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fY3JlYXRpb25UaHJlYWQgeyBjdXJyZW50VGhy
ZWFkKCkgfTsKKyAgICBSZWY8VGhyZWFkPiBtX2NyZWF0aW9uVGhyZWFkIHsgVGhyZWFkOjpjdXJy
ZW50KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IGY3M2Y5MDcyYTAzYzNjMDVlMzI2MTU0
N2E4ODkxYWRhOTU3MjQwOTkuLjc5NjYwZGQyMTliMTI3OGQ2MGI3M2ZiMDc3Y2U5NWExZGI0NDkw
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHAKQEAgLTQ3LDEyICs0NywxMiBAQCBTZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNl
V29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVudCwgUmVmPERlZmVycmVkUAog
CiBTZXJ2aWNlV29ya2VySm9iOjp+U2VydmljZVdvcmtlckpvYigpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpj
dXJyZW50KCkgPT0gbV9jcmVhdGlvblRocmVhZC5nZXQoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckpvYjo6ZmFpbGVkV2l0aEV4Y2VwdGlvbihjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAg
IEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsKICAg
ICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKQEAgLTYx
LDcgKzYxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNv
bnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29s
dmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRhdGEs
IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NF
UlQoVGhyZWFkOjpjdXJyZW50KCkgPT0gbV9jcmVhdGlvblRocmVhZC5nZXQoKSk7CiAgICAgQVNT
RVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CkBAIC03MCw3ICs3
MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYKIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpy
ZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7Cisg
ICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1fY3JlYXRpb25UaHJlYWQuZ2V0KCkpOwog
ICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwpAQCAt
NzksNyArNzksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0KGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bAogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9jcmVhdGlvblRocmVhZCk7CisgICAgQVNTRVJUKFRocmVhZDo6Y3VycmVudCgpID09IG1f
Y3JlYXRpb25UaHJlYWQuZ2V0KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAg
bV9jbGllbnQtPnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoKnRoaXMpOwpAQCAtODcsNyArODcsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goKQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25U
aHJlYWQpOworICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFk
LmdldCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIC8vIEZJWE1FOiBXb3Jr
ZXJTY3JpcHRMb2FkZXIgaXMgdGhlIHdyb25nIGxvYWRlciBjbGFzcyB0byB1c2UgaGVyZSwgYnV0
IHRoZXJlJ3Mgbm90aGluZyBlbHNlIGJldHRlciByaWdodCBub3cuCkBAIC05Nyw3ICs5Nyw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOwor
ICAgIEFTU0VSVChUaHJlYWQ6OmN1cnJlbnQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkLmdldCgpKTsK
ICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKICAgICBBU1NFUlQobV9zY3JpcHRMb2FkZXIpOwog
CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKIAogdm9pZCBTZXJ2
aWNlV29ya2VySm9iOjpub3RpZnlGaW5pc2hlZCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkg
PT0gbV9jcmVhdGlvblRocmVhZC5nZXQoKSk7CiAgICAgQVNTRVJUKG1fc2NyaXB0TG9hZGVyKTsK
ICAgICAKICAgICBpZiAoIW1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IGMzMGE0ZmI4
NDg5NzM4OWMxNWI2MjdmMWRmOWRlZmUyODkxNzllNGMuLjljNDI4ZTc3MjAwMzQyOTkxYWYzMTcz
YTI5ZTA0MDEyOTVkNTI5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2IuaApAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBTZXJ2aWNlV29y
a2VySm9iIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJKb2I+LCBw
dWJsaWMgVwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9sYXN0UmVzcG9uc2U7CiAKICNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgVGhyZWFkSWRlbnRpZmllciBtX2NyZWF0aW9uVGhyZWFkIHsgY3Vy
cmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVh
ZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhMzdkNjE1MTZh
NjI4MDBmNWE0MzFiODkxYzcyNzM0ZjA5MDM1YmNjLi5hZGM3ODVlZjVmYzRmOGY1M2RjMjI1OTVh
NWZhYzlhOTczZTk1MTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0zNDAsMTMgKzM0MCwxMyBAQCBjbGFz
cyBQZW5kaW5nQ2FsbGJhY2tzIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIHN0YXRpYyBpbnQgZ2xvYmFsRGVzY3JpcHRvciA9IDA7Ci1zdGF0aWMgVGhyZWFkSWRlbnRp
ZmllciBsaWJ4bWxMb2FkZXJUaHJlYWQgPSAwOworc3RhdGljIFRocmVhZCogbGlieG1sTG9hZGVy
VGhyZWFkIHsgbnVsbHB0ciB9OwogCiBzdGF0aWMgaW50IG1hdGNoRnVuYyhjb25zdCBjaGFyKikK
IHsKICAgICAvLyBPbmx5IG1hdGNoIGxvYWRzIGluaXRpYXRlZCBkdWUgdG8gdXNlcyBvZiBsaWJ4
bWwyIGZyb20gd2l0aGluIFhNTERvY3VtZW50UGFyc2VyIHRvIGF2b2lkCiAgICAgLy8gaW50ZXJm
ZXJpbmcgd2l0aCBjbGllbnQgYXBwbGljYXRpb25zIHRoYXQgYWxzbyB1c2UgbGlieG1sMi4gIGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzUzCi0gICAgcmV0dXJuIFhN
TERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlciAmJiBjdXJy
ZW50VGhyZWFkKCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkOworICAgIHJldHVybiBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXIgJiYgJlRocmVhZDo6Y3Vy
cmVudCgpID09IGxpYnhtbExvYWRlclRocmVhZDsKIH0KIAogY2xhc3MgT2Zmc2V0QnVmZmVyIHsK
QEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0V4dGVybmFsTG9hZChj
b25zdCBVUkwmIHVybCkKIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiB7
CiAgICAgQVNTRVJUKFhNTERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJj
ZUxvYWRlcik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJl
YWQpOworICAgIEFTU0VSVCgmVGhyZWFkOjpjdXJyZW50KCkgPT0gbGlieG1sTG9hZGVyVGhyZWFk
KTsKIAogICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7CiAKQEAgLTQ5NSwxNyArNDk1LDIwIEBAIHN0
YXRpYyB2b2lkIGVycm9yRnVuYyh2b2lkKiwgY29uc3QgY2hhciosIC4uLikKIH0KICNlbmRpZgog
Ci1zdGF0aWMgYm9vbCBkaWRJbml0ID0gZmFsc2U7Ci0KLVJlZjxYTUxQYXJzZXJDb250ZXh0PiBY
TUxQYXJzZXJDb250ZXh0OjpjcmVhdGVTdHJpbmdQYXJzZXIoeG1sU0FYSGFuZGxlclB0ciBoYW5k
bGVycywgdm9pZCogdXNlckRhdGEpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplWE1MUGFyc2VyKCkK
IHsKLSAgICBpZiAoIWRpZEluaXQpIHsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsK
KyAgICBzdGQ6OmNhbGxfb25jZShmbGFnLCBbJl0gewogICAgICAgICB4bWxJbml0UGFyc2VyKCk7
CiAgICAgICAgIHhtbFJlZ2lzdGVySW5wdXRDYWxsYmFja3MobWF0Y2hGdW5jLCBvcGVuRnVuYywg
cmVhZEZ1bmMsIGNsb3NlRnVuYyk7CiAgICAgICAgIHhtbFJlZ2lzdGVyT3V0cHV0Q2FsbGJhY2tz
KG1hdGNoRnVuYywgb3BlbkZ1bmMsIHdyaXRlRnVuYywgY2xvc2VGdW5jKTsKLSAgICAgICAgbGli
eG1sTG9hZGVyVGhyZWFkID0gY3VycmVudFRocmVhZCgpOwotICAgICAgICBkaWRJbml0ID0gdHJ1
ZTsKLSAgICB9CisgICAgICAgIGxpYnhtbExvYWRlclRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQo
KTsKKyAgICB9KTsKK30KKworUmVmPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6
OmNyZWF0ZVN0cmluZ1BhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhhbmRsZXJzLCB2b2lkKiB1c2Vy
RGF0YSkKK3sKKyAgICBpbml0aWFsaXplWE1MUGFyc2VyKCk7CiAKICAgICB4bWxQYXJzZXJDdHh0
UHRyIHBhcnNlciA9IHhtbENyZWF0ZVB1c2hQYXJzZXJDdHh0KGhhbmRsZXJzLCAwLCAwLCAwLCAw
KTsKICAgICBwYXJzZXItPl9wcml2YXRlID0gdXNlckRhdGE7CkBAIC01MjIsMTMgKzUyNSw3IEBA
IFJlZjxYTUxQYXJzZXJDb250ZXh0PiBYTUxQYXJzZXJDb250ZXh0OjpjcmVhdGVTdHJpbmdQYXJz
ZXIoeG1sU0FYSGFuZGxlclB0ciBoYW5kCiAvLyBDaHVuayBzaG91bGQgYmUgZW5jb2RlZCBpbiBV
VEYtOAogUmVmUHRyPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZU1l
bW9yeVBhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhhbmRsZXJzLCB2b2lkKiB1c2VyRGF0YSwgY29u
c3QgQ1N0cmluZyYgY2h1bmspCiB7Ci0gICAgaWYgKCFkaWRJbml0KSB7Ci0gICAgICAgIHhtbElu
aXRQYXJzZXIoKTsKLSAgICAgICAgeG1sUmVnaXN0ZXJJbnB1dENhbGxiYWNrcyhtYXRjaEZ1bmMs
IG9wZW5GdW5jLCByZWFkRnVuYywgY2xvc2VGdW5jKTsKLSAgICAgICAgeG1sUmVnaXN0ZXJPdXRw
dXRDYWxsYmFja3MobWF0Y2hGdW5jLCBvcGVuRnVuYywgd3JpdGVGdW5jLCBjbG9zZUZ1bmMpOwot
ICAgICAgICBsaWJ4bWxMb2FkZXJUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Ci0gICAgICAgIGRp
ZEluaXQgPSB0cnVlOwotICAgIH0KKyAgICBpbml0aWFsaXplWE1MUGFyc2VyKCk7CiAKICAgICAv
LyBhcHBlbmRGcmFnbWVudFNvdXJjZSgpIGNoZWNrcyB0aGF0IHRoZSBsZW5ndGggZG9lc24ndCBv
dmVyZmxvdyBhbiBpbnQuCiAgICAgeG1sUGFyc2VyQ3R4dFB0ciBwYXJzZXIgPSB4bWxDcmVhdGVN
ZW1vcnlQYXJzZXJDdHh0KGNodW5rLmRhdGEoKSwgY2h1bmsubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggYzM3
NzU4MjU0YjRkNGY4ZjAxY2U5YTM4ZTZmMGRlOGI1MjU4OTk2YS4uMDdlZWRjYjYzYzQ4ZWU2YmNi
MTY2ZDkyYmI4YTY3ZGExODRiMGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjZGVmaW5lIEFT
U0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQoIW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlT
X0lDT05fU1lOQ19USFJFQUQoKSkKIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8g
c3VwcG9ydCB0aGUgc3luYyB0aHJlYWQgT05MWQotI2RlZmluZSBJU19JQ09OX1NZTkNfVEhSRUFE
KCkgKG1fc3luY1RocmVhZC0+aWQoKSA9PSBjdXJyZW50VGhyZWFkKCkpCisjZGVmaW5lIElTX0lD
T05fU1lOQ19USFJFQUQoKSAobV9zeW5jVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICNk
ZWZpbmUgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKSBBU1NFUlQoSVNfSUNPTl9TWU5DX1RIUkVB
RCgpKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMmI3YjJmNWM3Y2EwMWM0ZTM1ZGE0MzRiMzMxNGU2OGY3
ZGJhY2ZiNy4uNTFmMmQyNzIwNWRlMDUwNmQwYzQ3MGI5OWY5M2M5MTgzNjExNWFmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKQEAgLTk0LDEzICs5NCwxMyBA
QCBjbGFzcyBHZW5lcmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKIAogICAgIHZp
cnR1YWwgfkdlbmVyaWNDYWxsYmFjaygpCiAgICAgewotICAgICAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbV9vcmlnaW5UaHJlYWQuZ2V0KCkpOwogICAgICAgICBBU1NFUlQoIW1fY2FsbGJh
Y2spOwogICAgIH0KIAogICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKFQu
Li4gcmV0dXJuVmFsdWUpCiAgICAgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQoVGhyZWFkOjpjdXJyZW50KCkgPT0g
bV9vcmlnaW5UaHJlYWQuZ2V0KCkpOwogCiAgICAgICAgIGlmICghbV9jYWxsYmFjaykKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTExNyw3ICsxMTcsNyBAQCBjbGFzcyBHZW5lcmljQ2FsbGJhY2sg
OiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKIAogICAgIHZvaWQgaW52YWxpZGF0ZShFcnJvciBlcnJv
ciA9IEVycm9yOjpVbmtub3duKSBmaW5hbAogICAgIHsKLSAgICAgICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICAgICAgQVNTRVJUKFRocmVhZDo6Y3Vy
cmVudCgpID09IG1fb3JpZ2luVGhyZWFkLmdldCgpKTsKIAogICAgICAgICBpZiAoIW1fY2FsbGJh
Y2spCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgR2VuZXJp
Y0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiAgICAgc3RkOjpvcHRpb25hbDxDYWxs
YmFja0Z1bmN0aW9uPiBtX2NhbGxiYWNrOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElk
ZW50aWZpZXIgbV9vcmlnaW5UaHJlYWRJRCB7IGN1cnJlbnRUaHJlYWQoKSB9OworICAgIFJlZjxU
aHJlYWQ+IG1fb3JpZ2luVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQx
YWFkZGU1YzQ5MTM2MzBhZWM5MDgwNDM4NjQ0YzFlZjIxMjlhNjUuLmZmMDVlMzE1OTI2MTI1YTc3
ZDBkM2RkZDFkNWM1MzAwMzQ3ZTNlNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhh
dmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tOgorICAgICAgICAodGVzdFRocmVhZElkZW50aWZpZXJNYXApOgorICAgICAgICAo
cnVuVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKHJ1blB0aHJlYWQpOiBEZWxldGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorCiAyMDE3LTEy
LTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBXZWJEcml2ZXI6IGF1dG8taW5zdGFsbCBweXRlc3QgaW5zdGVhZCBvZiBpbXBvcnRpbmcgaXQg
ZnJvbSB3cHQgdG9vbHMgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KaW5kZXggMzI3ZjIwYjFkZjA0Y2ViYjg4ZjE0MmY1YzlhOWE2NjYyNWVkYmYw
ZC4uOTdlZTNhYmU5NTJiMjljYjA0YzUwMjlhNmU1MzhkOTJjODFlNTE5NSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTA2NSwzNCArMTA2NSwzNiBA
QCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQog
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9t
YWluOnByb2Nlc3NJbnN0YW5jZURlZmF1bHRzIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiB9
CiAKLXN0YXRpYyB2b2lkIHJ1blRocmVhZCgpCi17Ci0gICAgc3RhdGljIFRocmVhZElkZW50aWZp
ZXIgcHJldmlvdXNJZCA9IDA7Ci0gICAgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SWQgPSBjdXJy
ZW50VGhyZWFkKCk7Ci0gICAgLy8gVmVyaWZ5IDIgc3VjY2Vzc2l2ZSB0aHJlYWRzIGRvIG5vdCBn
ZXQgdGhlIHNhbWUgSWQuCi0gICAgQVNTRVJUKHByZXZpb3VzSWQgIT0gY3VycmVudElkKTsKLSAg
ICBwcmV2aW91c0lkID0gY3VycmVudElkOwotfQotCi1zdGF0aWMgdm9pZCogcnVuUHRocmVhZCh2
b2lkKikKLXsKLSAgICBydW5UaHJlYWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KK3N0YXRp
YyBUaHJlYWQqIFRocmVhZDEgeyBudWxscHRyIH07CitzdGF0aWMgVGhyZWFkKiBUaHJlYWQyIHsg
bnVsbHB0ciB9OwogCiBzdGF0aWMgdm9pZCB0ZXN0VGhyZWFkSWRlbnRpZmllck1hcCgpCiB7CiAg
ICAgLy8gSW1pdGF0ZSAnZm9yZWlnbicgdGhyZWFkcyB0aGF0IGFyZSBub3QgY3JlYXRlZCBieSBX
VEYuCiAgICAgcHRocmVhZF90IHB0aHJlYWQ7Ci0gICAgcHRocmVhZF9jcmVhdGUoJnB0aHJlYWQs
IDAsICZydW5QdGhyZWFkLCAwKTsKLSAgICBwdGhyZWFkX2pvaW4ocHRocmVhZCwgMCk7Ci0KLSAg
ICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVhZCwgMCwgJnJ1blB0aHJlYWQsIDApOwotICAgIHB0aHJl
YWRfam9pbihwdGhyZWFkLCAwKTsKKyAgICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVhZCwgbnVsbHB0
ciwgW10gKHZvaWQqKSAtPiB2b2lkKiB7CisgICAgICAgIFRocmVhZDEgPSAmVGhyZWFkOjpjdXJy
ZW50KCk7CisgICAgICAgIFRocmVhZDEtPnJlZigpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9LCBudWxscHRyKTsKKyAgICBwdGhyZWFkX2pvaW4ocHRocmVhZCwgbnVsbHB0cik7CisK
KyAgICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVhZCwgbnVsbHB0ciwgW10gKHZvaWQqKSAtPiB2b2lk
KiB7CisgICAgICAgIFRocmVhZDIgPSAmVGhyZWFkOjpjdXJyZW50KCk7CisgICAgICAgIFRocmVh
ZDItPnJlZigpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9LCBudWxscHRyKTsKKyAg
ICBwdGhyZWFkX2pvaW4ocHRocmVhZCwgbnVsbHB0cik7CiAKICAgICAvLyBOb3cgY3JlYXRlIGFu
b3RoZXIgdGhyZWFkIHVzaW5nIFdURi4gT24gT1NYLCBpdCB3aWxsIGhhdmUgdGhlIHNhbWUgcHRo
cmVhZCBoYW5kbGUKLSAgICAvLyBidXQgc2hvdWxkIGdldCBhIGRpZmZlcmVudCBSZWZQdHI8VGhy
ZWFkPi4KLSAgICBUaHJlYWQ6OmNyZWF0ZSgiRHVtcFJlbmRlclRyZWU6IHRlc3QiLCBydW5UaHJl
YWQpOworICAgIC8vIGJ1dCBzaG91bGQgZ2V0IGEgZGlmZmVyZW50IFJlZlB0cjxUaHJlYWQ+IGlm
IHRoZSBwcmV2aW91cyBSZWZQdHI8dGhyZWFkPiBpcyBoZWxkLgorICAgIFRocmVhZDo6Y3JlYXRl
KCJEdW1wUmVuZGVyVHJlZTogdGVzdCIsIFtdIHsKKyAgICAgICAgQVNTRVJUKFRocmVhZDEgIT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICAgICAgQVNTRVJUKFRocmVhZDIgIT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKKyAgICAgICAgQVNTRVJUKFRocmVhZDEgIT0gVGhyZWFkMik7CisgICAgICAg
IFRocmVhZDEtPmRlcmVmKCk7CisgICAgICAgIFRocmVhZDItPmRlcmVmKCk7CisgICAgfSk7CiB9
CiAKIHN0YXRpYyB2b2lkIGFsbG9jYXRlR2xvYmFsQ29udHJvbGxlcnMoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAppbmRleCBiYThkZDU2YTViMzBhMjRl
ZjVmZGNlM2JkMzAxZDA2ZjU0YWQ0ZTg4Li5mOTQ0MGQwOWZlMWUxMmE4MDY1NDBiNDJlMjEwOWM5
MWE0Yzc3YjZmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJr
aW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90
LmNwcApAQCAtNTEsNyArNTEsNiBAQCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0IHsKICAgICAgICAg
ICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgIlBhcmtpbmcgVGVz
dCBUaHJlYWQiLAogICAgICAgICAgICAgICAgICAgICBbJl0gKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgRVhQRUNUX05FKDB1LCBjdXJyZW50VGhyZWFkKCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZG93bigpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9ja2VyKGxvY2spOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328327</attachid>
            <date>2017-12-03 21:18:18 -0800</date>
            <delta_ts>2017-12-03 21:20:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-180308-20171204141817.patch</filename>
            <type>text/plain</type>
            <size>216417</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MWE2OTllNzQ0ZWQ2NzNjMDRhOWE5ZDJjZTcyNzMxNzUwMGFlMzQwLi4zMDRlMWY5Y2YxYTNiNmVh
MmI1NWUwZjEwMDU2NjY5MmU0YmZiYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVh
ZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5l
VGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5k
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25TY29wZS5j
cHA6CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjp1bmV4cGVjdGVkRXhjZXB0aW9uTWVz
c2FnZSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpTQzo6SlNMb2Nr
OjpjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dpbmdUaHJlYWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpWTTo6Y2xlYXJFeGNlcHRpb24pOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5j
cHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6cHJpbnRWZXJpZmljYXRpb25IZWFkZXIp
OgorCiAyMDE3LTEyLTAzICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgRGVzdHJveUZ1bmMgdG8gYXZvaWQgcmVkZWZpbml0aW9uIG9uIHVuaWZpZWQg
YnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggY2Y2YzRkYzI1OGFhYmQ5MWQ5ZDc4MGYyYmRhYjk1MmI1NTljYWJlZi4uOGRl
ZjVlZmQ2MWFkYmE1NjdmYjUxMDc5NzBmNTAyZmU4MjY3MjNlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBA
QAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZp
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNo
b3VsZCB1c2UgYSBwb2ludGVyIG9mIFdURjo6VGhyZWFkIGluc3RlYWQgb2YgVGhyZWFkSWRlbnRp
Zmllci4KKworICAgICAgICBPbmUgcHJvYmxlbSBpcyB0aGF0IFdpbmRvd3Mgc3VwcG9ydCBsaWJy
YXJ5IHVzZXMgV1RGOjpjcmVhdGVUaHJlYWQsCisgICAgICAgIHdoaWNoIHJldHVybnMgVGhyZWFk
SWRlbnRpZmllci4gU28gd2UgY2Fubm90IGRyb3AgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBp
biBXaW5kb3dzIGVudmlyb25tZW50LiBUaGlzIHBhdGNoIGtlZXBzIFRocmVhZElkZW50aWZpZXIg
aW4gV2luZG93cy4KKworICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAgICAgICAgKFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQpOgorICAgICAgICAoV1RGOjppc01haW5UaHJlYWQpOgor
ICAgICAgICAoV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1BhcmtpbmdMb3QuY3BwOgorICAg
ICAgICAoV1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseUltcGwpOgorICAgICAgICAo
V1RGOjpQYXJraW5nTG90Ojp1bnBhcmtPbmUpOgorICAgICAgICAoV1RGOjpQYXJraW5nTG90Ojp1
bnBhcmtPbmVJbXBsKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJrQ291bnQpOgor
ICAgICAgICAqIHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oOgorICAgICAgICAoV1RGOjpSZWN1
cnNpdmVMb2NrQWRhcHRlcjo6bG9jayk6CisgICAgICAgIChXVEY6OlJlY3Vyc2l2ZUxvY2tBZGFw
dGVyOjp1bmxvY2spOgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6dHJ5TG9j
ayk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6
ZHVtcCBjb25zdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpU
aHJlYWQ6OmlkIGNvbnN0KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpvcGVyYXRvcj09KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6VGhyZWFkOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6Y3VycmVudFRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAg
ICAgICAoV1RGOjpUaHJlYWQ6OndhaXRGb3JDb21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6VGhy
ZWFkOjpkZXRhY2gpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VExT
KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFk
Ojplc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKToKKyAgICAgICAgKFdURjo6VGhyZWFk
OjpjdXJyZW50SUQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgor
ICAgICAgICAoV1RGOjpUaHJlYWQ6OndhaXRGb3JDb21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50RHlpbmcpOgor
ICAgICAgICAqIHd0Zi9tYWMvTWFpblRocmVhZE1hYy5tbToKKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhy
ZWFkUGxhdGZvcm0pOgorICAgICAgICAoV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JU
aHJlYWQpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50
aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkSWRlbnRp
Zmllcik6IERlbGV0ZWQuCisKIDIwMTctMTItMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBXVEY6Okhhc2hlciwgYW4gZWFzaWVyIHRvIHVzZSByZXBsYWNl
bWVudCBmb3IgV1RGOjpJbnRlZ2VySGFzaGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA5YWE1MzhjNjA4MjAy
ODYwMmQwMzg3MzEwOWRmZjI3YjZhMGRjYi4uNWU5OWY4ODNmNzMxYjZiNjRkZTI5ZjcxNjFkMTg5
M2U2MzE3MGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1NSBAQAorMjAxNy0xMi0wMyAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXVEYgc2hvdWxk
bid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpvcmlnaW5UaHJlYWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpwZXJmb3JtQ2FsbGJhY2tPbk9yaWdp
blRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6OmNhbGxGdW5j
dGlvbk9uT3JpZ2luVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2ZURPTU9iamVj
dDo6b3JpZ2luVGhyZWFkSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OklEQkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6On5JREJDdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzb3VyY2VzRGVsZXRlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3I6OnRyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6YWR2YW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRlQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmFtZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVyc2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
dHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzdG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2U6OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6ZGlkQ3JlYXRlSW5kZXhJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjpkaWREZWxldGVJbmRleEluZm8pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpJREJJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6fklEQkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4OjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpzZXRO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleDo6a2V5UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6dW5pcXVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0
aUVudHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpyb2xsYmFja0luZm9G
b3JWZXJzaW9uQ2hhbmdlQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5D
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRvQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6OmRvR2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldEtleSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4OjpnZXRBbGxLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptYXJrQXNE
ZWxldGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6On5JREJPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6c2V0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6a2V5UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
aW5kZXhOYW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6dHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6Z2V0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
OjpwdXRPckFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0NvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpnZXRBbGwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6Om1hcmtBc0RlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9wZW5EQlJlcXVlc3Q6On5JREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9wZW5EQlJlcXVlc3Q6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVx
dWVzdDo6dmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uRGlkRmluaXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdlQ29tbWl0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVFcnJvckFmdGVyVmVy
c2lvbkNoYW5nZUNvbXBsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVz
dDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojpv
blN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRl
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uRGVsZXRlRGF0
YWJhc2VTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnJlcXVl
c3RDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6cmVxdWVz
dEJsb2NrZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6fklEQlJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6dHJhbnNhY3Rpb24gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c291cmNlT2JqZWN0U3RvcmVJZGVudGlmaWVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNvdXJjZUluZGV4SWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZXF1ZXN0ZWRPYmpl
Y3RTdG9yZVJlY29yZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6
cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJS
ZXF1ZXN0OjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlz
cGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2Vw
dGlvbkluRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFJl
c3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVy
ZWRDbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVm
aW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZXN1bHRDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0Ojpjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246On5JREJUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVOYW1l
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVycm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnRyYW5zaXRpb25lZFRvRmluaXNoaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6aW50ZXJuYWxBYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjppc0ZpbmlzaGVkT3JGaW5pc2hpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFkZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJh
dGlvblRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb21wbGV0ZWRP
cGVyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpj
b21taXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNvbW1pdE9uU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaW5pc2hBYm9ydE9yQ29tbWl0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpkaWRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OmZpcmVPbkNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaXJl
T25BYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVP
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0
b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFJlbmFt
ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJ
bmRleE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRDcmVh
dGVJbmRleE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5h
bWVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXhP
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5k
ZXhPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JP
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNv
ck9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25T
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVDdXJz
b3JPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdl
dEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdEdldEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpnZXRSZWNvcmRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
ZGlkR2V0UmVjb3JkT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OnJlcXVlc3RDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Z2V0Q291
bnRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291
bnRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERl
bGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVj
b3JkT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZERlbGV0
ZVJlY29yZE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0Q2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpkaWREZWxldGVJbmRleE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPbkNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6ZXN0YWJsaXNoT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmFjdGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpkZWFjdGl2YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6cmVt
b3ZlSXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6flRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnBlcmZvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6dHJh
bnNpdGlvblRvQ29tcGxldGVPblRoaXNUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRvQ29tcGxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6ZG9Db21wbGV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpvcmln
aW5UaHJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbjo6b3JpZ2luVGhyZWFkSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnRyeUxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzZXRBdWRp
b1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmF1ZGlvVGhyZWFkIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXIpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OnBlcmZvcm1DbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6
c2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VE
ZXRhaWxzLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6OkRhdGFiYXNlRGV0
YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6OnRocmVhZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6OnRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUaHJlYWQ6OmdldFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVh
ZDo6Z2V0VGhyZWFkSUQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNo
ZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uQmFja2VuZDo6ZG9DbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uQmFja2VuZDo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2Fs
bGJhY2tEYXRhOjpKU0NhbGxiYWNrRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNr
RGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQp
OgorICAgICAgICAqIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuaDoKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL1N1cHBsZW1l
bnRhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6cHJvdmlkZVN1cHBs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnJlbW92ZVN1cHBsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnJlcXVpcmVTdXBwbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpTdXBwbGVtZW50YWJsZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6VGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmdldEF2YWlsYWJsZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphcHBlbmRU
b1VudXNlZEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eTo6c3dhcEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaDoKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAg
ICAoUnVuV2ViVGhyZWFkKToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsb3Nl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzcWxpdGUzSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckds
b2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmlzQ29udGV4dFRocmVhZCBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdp
bmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
TWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1
bkluTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFz
a3MpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWQ6OnRocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWQ6OnRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmly
ZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0
RmV0Y2hGb3JKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlQ29u
dHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6On5TZXJ2
aWNlV29ya2VySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmZhaWxl
ZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6cmVz
b2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJK
b2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hGdW5jKToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVYTUxQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MUGFyc2VyQ29udGV4dDo6Y3JlYXRl
U3RyaW5nUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFBhcnNlckNvbnRleHQ6OmNyZWF0
ZU1lbW9yeVBhcnNlcik6CisKIDIwMTctMTItMDMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVy
IGxlYWtzIHdoZW4gcGFzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYWE1ODI1NTAzNTMyMTZkMGYxNjUxZTNk
ZjgxZjE1YzQ0YzQ2NzkwLi5mNGFmZDFhMDdhZDRiMDM0N2Q3YzkyMTY4ZWUyNWU1OGQ2NmQ3NjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRuJ3QgaGF2ZSBib3Ro
IFRocmVhZCBhbmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJL
aXQ6OkdlbmVyaWNDYWxsYmFjazo6fkdlbmVyaWNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OkdlbmVyaWNDYWxsYmFjazo6cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKToKKwogMjAx
Ny0xMi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBv
cnQgc2VydmljZVdvcmtlci5wb3N0TWVzc2FnZSgpIGluc2lkZSBzZXJ2aWNlIHdvcmtlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCmlu
ZGV4IDFkZThjYWE4OWQ0MTgwNjgxYjcyNzY4YzcyZWYzOTVhNTUyMWIzMTYuLmU2YWY1M2I2MTlm
ZDYwNzdiNzVlNDE3NWJlMzc1ZjQ4ZTg2MGNiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGJv
b2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25zdCBBYnN0cmFj
dExvY2tlciYgbG9ja2VyLCB2b2lkCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAgICAgICAgIGZvciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykgewotICAgICAgICAgICAgaWYg
KHRocmVhZC5nZXQoKSAhPSBjdXJyZW50VGhyZWFkKSB7CisgICAgICAgICAgICBpZiAodGhyZWFk
LnB0cigpICE9ICZjdXJyZW50VGhyZWFkKSB7CiAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQg
PSB0aHJlYWQtPnN1c3BlbmQoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAg
ICAgICAgICAgICAgICBpc1N1c3BlbmRlZC5zZXQoaW5kZXgpOwpAQCAtMTYwLDggKzE2MCw4IEBA
IGJvb2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyLCB2b2lkCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIHRo
cmVhZHMgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIFRocmVhZEdyb3VwLiBUaHVzLCB3ZSBkbyBu
b3QgZG8gYW55dGhpbmcgaGVyZSBleGNlcHQgZm9yIHJlcG9ydGluZy4KICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdC5lcnJvcigpICE9IEtFUk5fU1VDQ0VTUyk7CiAgICAgICAgICAg
ICAgICAgICAgIFdURlJlcG9ydEVycm9yKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9G
VU5DVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29s
bGVjdGlvbiBlbmNvdW50ZXJlZCBhbiBpbnZhbGlkIHRocmVhZCAoZXJyIDB4JXgpOiBUaHJlYWQg
WyVkLyVkOiAlcF0gaWQgJXUuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJv
cigpLCBpbmRleCwgdGhyZWFkcy5zaXplKCksIHRocmVhZC5wdHIoKSwgdGhyZWFkLT5pZCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBl
bmNvdW50ZXJlZCBhbiBpbnZhbGlkIHRocmVhZCAoZXJyIDB4JXgpOiBUaHJlYWQgWyVkLyVkOiAl
cF0uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcigpLCBpbmRleCwgdGhy
ZWFkcy5zaXplKCksIHRocmVhZC5wdHIoKSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAppbmRleCAyMWU5MDJkNDk1NWY4YmNiZjcyODBmNGYxYjlkYTM5Nzc3MTNiNTNiLi43
YTE1ZTIyOWVlMGEyYzgxOTY0Mzc4OGU4YjE2Y2EzMzA5OGI0YmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE5MSw4ICsxOTEsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIGV4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQogewogICAgIExMSU5UX0JFR0lOKCk7
Ci0gICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRy
YWNlKCVkKTogJWQ6ICVkXG4iLAotICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAgIGRh
dGFMb2dGKCI8JXA+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6
ICVkOiAlZFxuIiwKKyAgICAgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAgICAgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICAgICAgZXhlYywKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKSwKQEAgLTIxNSw4ICsyMTUsOCBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYwogICAg
IH0gdTsKICAgICB1LmFzVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwogICAgIGRhdGFM
b2dGKAotICAgICAgICAiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJh
Y2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eDogJXNcbiIsCi0gICAgICAgIGN1cnJlbnRUaHJlYWQo
KSwKKyAgICAgICAgIjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNl
KCVkKTogJWQ6ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICAmVGhyZWFkOjpjdXJyZW50
KCksCiAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICBleGVjLAogICAgICAgICBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSksCkBAIC0yMzIsNyArMjMyLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMK
IAogTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfcHJvbG9ndWUpCiB7Ci0gICAgZGF0YUxvZ0Yo
IjwlZD4gJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwgY3VycmVudFRocmVhZCgpLCBleGVjLT5j
b2RlQmxvY2soKSwgZXhlYyk7CisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogaW4gcHJvbG9n
dWUgb2YgIiwgJlRocmVhZDo6Y3VycmVudCgpLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CiAg
ICAgZGF0YUxvZygqZXhlYy0+Y29kZUJsb2NrKCksICJcbiIpOwogICAgIExMSU5UX0VORF9JTVBM
KCk7CiB9CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xv
Z3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWMKICAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkp
OwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRh
YmxlKCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tG
b3Ioa2luZCk7Ci0gICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogaW4gJXMgb2YgIiwgY3VycmVu
dFRocmVhZCgpLCBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQpOworICAgIGRhdGFMb2dGKCI8JXA+
ICVwIC8gJXA6IGluICVzIG9mICIsICZUaHJlYWQ6OmN1cnJlbnQoKSwgY29kZUJsb2NrLCBleGVj
LCBjb21tZW50KTsKICAgICBkYXRhTG9nKCpjb2RlQmxvY2spOwogICAgIGRhdGFMb2dGKCIgZnVu
Y3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1
LCBudW1DYWxsZWVMb2NhbHMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAogICAgICAgICBjYWxsZWUs
IGV4ZWN1dGFibGUsIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscywgZXhlYy0+Y2FsbGVyRnJhbWUoKSk7
CkBAIC0yNzUsOCArMjc1LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfYXJpdHlDaGVj
a19mb3JfY29uc3RydWN0KQogTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiB7CiAgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUp
OwotICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9
ICVwXG4iLAotICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAgIGRhdGFMb2dGKCI8JXA+
ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgICAgICAgICAg
JlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAg
ICAgICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhl
Yy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjk0LDggKzI5NCw4
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChz
cGVjaWFsX3RyYWNlKQogewotICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBz
cGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAotICAgICAgICAg
ICAgY3VycmVudFRocmVhZCgpLAorICAgIGRhdGFMb2dGKCI8JXA+ICVwIC8gJXA6IGV4ZWN1dGlu
ZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAg
ICAgICAgJlRocmVhZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CiAgICAgICAgICAgICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCmluZGV4IDY5MGJj
MTIyOWYyMTQwYTA4ZGJhNzdiN2U1NWJhMmMyMWY4YzI3YmYuLjdkMWMwNmE5NTQxYjE1MDEzMDI0
NjhhY2JiMDFmODY3NDQ4OWFmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25TY29wZS5jcHAKQEAgLTU1LDE0ICs1NSwxNCBAQCBDU3RyaW5nIEV4Y2Vw
dGlvblNjb3BlOjp1bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpCiB7CiAgICAgU3RyaW5nUHJp
bnRTdHJlYW0gb3V0OwogCi0gICAgb3V0LnByaW50bG4oIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9i
c2VydmVkIG9uIHRocmVhZCAiLCBjdXJyZW50VGhyZWFkKCksICIgYXQ6Iik7CisgICAgb3V0LnBy
aW50bG4oIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9ic2VydmVkIG9uIHRocmVhZCAiLCBUaHJlYWQ6
OmN1cnJlbnQoKSwgIiBhdDoiKTsKICAgICBhdXRvIGN1cnJlbnRTdGFjayA9IFN0YWNrVHJhY2U6
OmNhcHR1cmVTdGFja1RyYWNlKE9wdGlvbnM6OnVuZXhwZWN0ZWRFeGNlcHRpb25TdGFja1RyYWNl
TGltaXQoKSwgMSk7CiAgICAgY3VycmVudFN0YWNrLT5kdW1wKG91dCwgIiAgICAiKTsKIAogICAg
IGlmICghbV92bS5uYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKSkKICAgICAgICAgcmV0dXJu
IENTdHJpbmcoKTsKICAgICAKLSAgICBvdXQucHJpbnRsbigiVGhlIGV4Y2VwdGlvbiB3YXMgdGhy
b3duIGZyb20gdGhyZWFkICIsIG1fdm0udGhyb3dpbmdUaHJlYWQoKSwgIiBhdDoiKTsKKyAgICBv
dXQucHJpbnRsbigiVGhlIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGZyb20gdGhyZWFkICIsICptX3Zt
LnRocm93aW5nVGhyZWFkKCksICIgYXQ6Iik7CiAgICAgbV92bS5uYXRpdmVTdGFja1RyYWNlT2ZM
YXN0VGhyb3coKS0+ZHVtcChvdXQsICIgICAgIik7CiAKICAgICByZXR1cm4gb3V0LnRvQ1N0cmlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBkZWEwNTAyOGNk
NzM1ZWI2MzkxNzQ3MGMxNTIyYjE4MjQ1ZGU1NzU1Li5iZWRmMmI1NzI4MDY3NzQ2NDdkZTIxYjdj
MzE4ZmZhMzhlZTM3NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApA
QCAtOTgsNyArOTgsNyBAQCBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8SlNMb2NrPiB7CiAgICAgICAgICAgICByZXR1cm4gbV9vd25lclRocmVhZDsKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9Ci0gICAgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xk
aW5nTG9jaygpIHsgcmV0dXJuIG1faGFzT3duZXJUaHJlYWQgJiYgbV9vd25lclRocmVhZC0+aWQo
KSA9PSBjdXJyZW50VGhyZWFkKCk7IH0KKyAgICBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdM
b2NrKCkgeyByZXR1cm4gbV9oYXNPd25lclRocmVhZCAmJiBtX293bmVyVGhyZWFkLmdldCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKTsgfQogCiAgICAgdm9pZCB3aWxsRGVzdHJveVZNKFZNKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1YWJkZmJiZDg4YmEyODVmMWEz
NThkODcxM2I2NWEyMmU2NTQ5MWUwLi42OGZiY2U3YmVmYTNiYjI4YjgyNWYyM2NiNTczYWNjNWE1
YTg2Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02ODksNyArNjg5
LDcgQEAgdm9pZCBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24q
IGV4Y2VwdGlvbikKIAogI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQog
ICAgIG1fbmF0aXZlU3RhY2tUcmFjZU9mTGFzdFRocm93ID0gU3RhY2tUcmFjZTo6Y2FwdHVyZVN0
YWNrVHJhY2UoT3B0aW9uczo6dW5leHBlY3RlZEV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdCgpKTsK
LSAgICBtX3Rocm93aW5nVGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgIG1fdGhyb3dpbmdU
aHJlYWQgPSAmVGhyZWFkOjpjdXJyZW50KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKaW5kZXggMzY2ODczYjJiNzlkOWQ1M2ZjZjliYWYzNmY2YzVlMjU5ZDNmOWIw
MC4uYTZjMmQ1M2ZjODAxZDFjZGFkZGZmMWExZmFjYzU0NTQ5Y2FiYWNkZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCkBAIC03MTEsNyArNzExLDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+
IHsKIAogI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgIFN0YWNr
VHJhY2UqIG5hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0
aXZlU3RhY2tUcmFjZU9mTGFzdFRocm93LmdldCgpOyB9Ci0gICAgVGhyZWFkSWRlbnRpZmllciB0
aHJvd2luZ1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3dpbmdUaHJlYWQ7IH0KKyAgICBU
aHJlYWQqIHRocm93aW5nVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd2luZ1RocmVhZC5n
ZXQoKTsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0YpCkBAIC03NTQsNyArNzU0LDcgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2Vk
TGlzdE5vZGU8Vk0+IHsKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikK
ICAgICAgICAgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKICAgICAgICAgbV9uYXRpdmVT
dGFja1RyYWNlT2ZMYXN0VGhyb3cgPSBudWxscHRyOwotICAgICAgICBtX3Rocm93aW5nVGhyZWFk
ID0gMDsKKyAgICAgICAgbV90aHJvd2luZ1RocmVhZCA9IG51bGxwdHI7CiAjZW5kaWYKICAgICAg
ICAgbV9leGNlcHRpb24gPSBudWxscHRyOwogICAgIH0KQEAgLTgwNiw3ICs4MDYsNyBAQCBjbGFz
cyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5r
ZWRMaXN0Tm9kZTxWTT4gewogICAgIG11dGFibGUgYm9vbCBtX25lZWRFeGNlcHRpb25DaGVjayB7
IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IG1fbmF0aXZlU3RhY2tU
cmFjZU9mTGFzdFRocm93OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFja1RyYWNlPiBtX25hdGl2
ZVN0YWNrVHJhY2VPZkxhc3RTaW11bGF0ZWRUaHJvdzsKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1f
dGhyb3dpbmdUaHJlYWQ7CisgICAgUmVmUHRyPFRocmVhZD4gbV90aHJvd2luZ1RocmVhZDsKICNl
bmRpZgogCiAgICAgYm9vbCBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5kZXggOWEyZDJhY2Jh
M2Y0NzAxMmEwMjEzYTVkYjA2ZjljNjhiNmQxYTk2MC4uY2Q5MWVlMWE0ZTAzMGU4ZThjYWExNWNh
N2Y5ZWFhYWE0MTAyY2VjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0hlYXBWZXJpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBW
ZXJpZmllci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEhlYXBWZXJpZmllcjo6cHJpbnRW
ZXJpZmljYXRpb25IZWFkZXIoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC0+Y29sbGVjdGlv
blNjb3BlKCkpOwogICAgIENvbGxlY3Rpb25TY29wZSBzY29wZSA9IGN1cnJlbnRDeWNsZSgpLnNj
b3BlOwogICAgIE1vbm90b25pY1RpbWUgZ2NDeWNsZVRpbWVzdGFtcCA9IGN1cnJlbnRDeWNsZSgp
LnRpbWVzdGFtcDsKLSAgICBkYXRhTG9nKCJWZXJpZnlpbmcgaGVhcCBpbiBbcCIsIGdldEN1cnJl
bnRQcm9jZXNzSUQoKSwgIiwgdCIsIGN1cnJlbnRUaHJlYWQoKSwgIl0gdm0gIiwKKyAgICBkYXRh
TG9nKCJWZXJpZnlpbmcgaGVhcCBpbiBbcCIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIiwgIiwg
VGhyZWFkOjpjdXJyZW50KCksICJdIHZtICIsCiAgICAgICAgIFJhd1BvaW50ZXIobV9oZWFwLT52
bSgpKSwgIiBvbiAiLCBzY29wZSwgIiBHQyBAICIsIGdjQ3ljbGVUaW1lc3RhbXAsICJcbiIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL01haW5UaHJlYWQuY3BwCmluZGV4IDJjNDE2MjdkNmU3OTQwZDQ4Yzk1ZGM3M2FjZTNm
YmIyNjEzODZiZDMuLmQ4NTkyYjc1NGI5ZjYwNTAwMjVkYzZkN2U0NWI4OGMwMzU1ZTc1YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL01haW5UaHJlYWQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiBz
dGF0aWMgYm9vbCBjYWxsYmFja3NQYXVzZWQ7IC8vIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIG9u
bHkgYWNjZXNzZWQgZnJvbSBtYWluIHRocmVhZC4KICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGF0
aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKK3N0YXRpYyBUaHJlYWQq
IG1haW5UaHJlYWQgeyBudWxscHRyIH07CiAjZW5kaWYKIAogc3RhdGljIFN0YXRpY0xvY2sgbWFp
blRocmVhZEZ1bmN0aW9uUXVldWVNdXRleDsKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBpbml0aWFs
aXplTWFpblRocmVhZCgpCiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10gewog
ICAgICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQotICAg
ICAgICBtYWluVGhyZWFkSWRlbnRpZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgbWFp
blRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgogICAgICAgICBpbml0aWFsaXpl
TWFpblRocmVhZFBsYXRmb3JtKCk7CiAgICAgICAgIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKQEAg
LTcyLDcgKzcyLDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQogYm9vbCBpc01haW5UaHJlYWQoKQogewotICAgIHJldHVybiBjdXJyZW50VGhyZWFk
KCkgPT0gbWFpblRocmVhZElkZW50aWZpZXI7CisgICAgcmV0dXJuIG1haW5UaHJlYWQgPT0gJlRo
cmVhZDo6Y3VycmVudCgpOwogfQogI2VuZGlmCiAKQEAgLTk4LDkgKzk4LDkgQEAgdm9pZCBpbml0
aWFsaXplV2ViVGhyZWFkKCkKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmICFVU0Uo
V0VCX1RIUkVBRCkKLWJvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFRocmVh
ZElkZW50aWZpZXIgdGhyZWFkSWQpCitib29sIGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRo
cmVhZChUaHJlYWQmIHRocmVhZCkKIHsKLSAgICByZXR1cm4gdGhyZWFkSWQgPT0gY3VycmVudFRo
cmVhZCgpOworICAgIHJldHVybiAmdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggYzk1ZjkyZmJkZjNhNGJkMzU4NzlkYmRlZWEwZDE1
MWE0YzAyOTAyYi4uZWQxZDQ5NWZlYmQ3MmY1ZTgwM2FjNWRiNDY0MTFkNzc4ZTI0MmVjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L01haW5UaHJlYWQuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNz
IFByaW50U3RyZWFtOworY2xhc3MgVGhyZWFkOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRo
ZSBtYWluIHRocmVhZC4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CkBAIC01NCwxNCArNTUsMTMgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWFp
blRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzTWFpblRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5BY2Nl
c3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkJik7
CiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV2ViVGhy
ZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1VJVGhyZWFkKCk7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBpbml0aWFsaXplV2ViVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKTsKLVdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRJZGVudGlmaWVyKCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogdm9pZCBp
bml0aWFsaXplV2ViVGhyZWFkUGxhdGZvcm0oKTsKICNlbHNlCiBpbmxpbmUgYm9vbCBpc1dlYlRo
cmVhZCgpIHsgcmV0dXJuIGlzTWFpblRocmVhZCgpOyB9CkBAIC0xMTMsOCArMTEzLDcgQEAgdXNp
bmcgV1RGOjpjYWxsT25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQ7CiAjZW5k
aWYKICNpZiBVU0UoV0VCX1RIUkVBRCkKIHVzaW5nIFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZDsK
LXVzaW5nIFdURjo6aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyOwotdXNp
bmcgV1RGOjppbml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcjsKK3VzaW5nIFdURjo6aW5pdGlh
bGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQ7CiAjZW5kaWYKIAogI2VuZGlmIC8vIE1haW5UaHJlYWRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9QYXJraW5nTG90LmNwcAppbmRleCBmOGZlZDg4YjFmN2M5OTIwOTg2YTk0ZTdhYjZjNTU3
MWI5MjNjZTFjLi5iMTRkN2EyY2RlZDhmNWVkM2QzNDAyZjc4ODBkMzcxNjI2ODllOGI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QYXJraW5nTG90LmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICB2
b2lkIGVucXVldWUoVGhyZWFkRGF0YSogZGF0YSkKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3Nl
KQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVucXVl
dWVpbmcgIiwgUmF3UG9pbnRlcihkYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2ludGVy
KGRhdGEtPmFkZHJlc3MpLCAiIG9udG8gIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAg
ICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWlu
ZyAiLCBSYXdQb2ludGVyKGRhdGEpLCAiIHdpdGggYWRkcmVzcyA9ICIsIFJhd1BvaW50ZXIoZGF0
YS0+YWRkcmVzcyksICIgb250byAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAg
IEFTU0VSVChkYXRhLT5hZGRyZXNzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLT5uZXh0SW5RdWV1
ZSk7CiAgICAgICAgIApAQCAtOTksMTEgKzk5LDExIEBAIHN0cnVjdCBCdWNrZXQgewogICAgIHZv
aWQgZ2VuZXJpY0RlcXVldWUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAg
IGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFk
KCksICI6IGRlcXVldWVpbmcgZnJvbSBidWNrZXQgYXQgIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxu
IikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjog
ZGVxdWV1ZWluZyBmcm9tIGJ1Y2tldCBhdCAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoIXF1ZXVlSGVhZCkgewogICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6
IGVtcHR5LlxuIikpOworICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpj
dXJyZW50KCksICI6IGVtcHR5LlxuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTE0MywxNCArMTQzLDE0IEBAIHN0cnVjdCBCdWNrZXQgewogICAgICAgICB3aGlsZSAo
c2hvdWxkQ29udGludWUpIHsKICAgICAgICAgICAgIFRocmVhZERhdGEqIGN1cnJlbnQgPSAqY3Vy
cmVudFB0cjsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFM
b2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIo
Y3VycmVudCksICJcbiIpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVh
ZDo6Y3VycmVudCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJcbiIp
KTsKICAgICAgICAgICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIERlcXVldWVSZXN1bHQgcmVzdWx0ID0gZnVuY3RvcihjdXJyZW50LCB0aW1lVG9C
ZUZhaXIpOwogICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2Ug
RGVxdWV1ZVJlc3VsdDo6SWdub3JlOgogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3Vy
cmVudFB0ciA9ICIsIFJhd1BvaW50ZXIoY3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwg
UmF3UG9pbnRlcigqY3VycmVudFB0ciksICJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3VycmVudFB0ciA9ICIsIFJhd1Bv
aW50ZXIoY3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigqY3VycmVu
dFB0ciksICJcbiIpKTsKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgICAg
ICAgICAgICAgICAgY3VycmVudFB0ciA9ICYoKmN1cnJlbnRQdHIpLT5uZXh0SW5RdWV1ZTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgQnVja2V0IHsK
ICAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJl
c3VsdDo6UmVtb3ZlQW5kQ29udGludWU6CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBk
ZXF1ZXVlaW5nICIsIFJhd1BvaW50ZXIoY3VycmVudCksICIgZnJvbSAiLCBSYXdQb2ludGVyKHRo
aXMpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFk
OjpjdXJyZW50KCksICI6IGRlcXVldWVpbmcgIiwgUmF3UG9pbnRlcihjdXJyZW50KSwgIiBmcm9t
ICIsIFJhd1BvaW50ZXIodGhpcyksICJcbiIpKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVu
dCA9PSBxdWV1ZVRhaWwpCiAgICAgICAgICAgICAgICAgICAgIHF1ZXVlVGFpbCA9IHByZXZpb3Vz
OwogICAgICAgICAgICAgICAgIGRpZERlcXVldWUgPSB0cnVlOwpAQCAtMjcxLDcgKzI3MSw3IEBA
IEhhc2h0YWJsZSogZW5zdXJlSGFzaHRhYmxlKCkKICAgICAgICAgICAgIGN1cnJlbnRIYXNodGFi
bGUgPSBIYXNodGFibGU6OmNyZWF0ZShtYXhMb2FkRmFjdG9yKTsKICAgICAgICAgICAgIGlmICho
YXNodGFibGUuY29tcGFyZUV4Y2hhbmdlV2VhayhudWxscHRyLCBjdXJyZW50SGFzaHRhYmxlKSkg
ewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBpbml0aWFsIGhhc2h0YWJs
ZSAiLCBSYXdQb2ludGVyKGN1cnJlbnRIYXNodGFibGUpLCAiXG4iKSk7CisgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IGNyZWF0ZWQgaW5p
dGlhbCBoYXNodGFibGUgIiwgUmF3UG9pbnRlcihjdXJyZW50SGFzaHRhYmxlKSwgIlxuIikpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50SGFzaHRhYmxlOwogICAgICAgICAgICAgfQog
CkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51
bVRocmVhZHMpCiAgICAgSGFzaHRhYmxlKiBvbGRIYXNodGFibGUgPSBoYXNodGFibGUubG9hZCgp
OwogICAgIGlmIChvbGRIYXNodGFibGUgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihvbGRIYXNodGFi
bGUtPnNpemUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihudW1UaHJlYWRzKSA+PSBtYXhMb2FkRmFj
dG9yKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhjdXJyZW50VGhyZWFkKCksICI6IG5vIG5lZWQgdG8gcmVoYXNoIGJlY2F1c2UgIiwgb2xkSGFz
aHRhYmxlLT5zaXplLCAiIC8gIiwgbnVtVGhyZWFkcywgIiA+PSAiLCBtYXhMb2FkRmFjdG9yLCAi
XG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAi
OiBubyBuZWVkIHRvIHJlaGFzaCBiZWNhdXNlICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIs
IG51bVRocmVhZHMsICIgPj0gIiwgbWF4TG9hZEZhY3RvciwgIlxuIikpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXpl
KHVuc2lnbmVkIG51bVRocmVhZHMpCiAgICAgb2xkSGFzaHRhYmxlID0gaGFzaHRhYmxlLmxvYWQo
KTsKICAgICBpZiAob2xkSGFzaHRhYmxlICYmIHN0YXRpY19jYXN0PGRvdWJsZT4ob2xkSGFzaHRh
YmxlLT5zaXplKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obnVtVGhyZWFkcykgPj0gbWF4TG9hZEZh
Y3RvcikgewogICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJp
bmcoY3VycmVudFRocmVhZCgpLCAiOiBhZnRlciBsb2NraW5nLCBubyBuZWVkIHRvIHJlaGFzaCBi
ZWNhdXNlICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMsICIgPj0gIiwg
bWF4TG9hZEZhY3RvciwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJl
YWQ6OmN1cnJlbnQoKSwgIjogYWZ0ZXIgbG9ja2luZywgbm8gbmVlZCB0byByZWhhc2ggYmVjYXVz
ZSAiLCBvbGRIYXNodGFibGUtPnNpemUsICIgLyAiLCBudW1UaHJlYWRzLCAiID49ICIsIG1heExv
YWRGYWN0b3IsICJcbiIpKTsKICAgICAgICAgdW5sb2NrSGFzaHRhYmxlKGJ1Y2tldHNUb1VubG9j
ayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIGVu
c3VyZUhhc2h0YWJsZVNpemUodW5zaWduZWQgbnVtVGhyZWFkcykKICAgICAKICAgICBIYXNodGFi
bGUqIG5ld0hhc2h0YWJsZSA9IEhhc2h0YWJsZTo6Y3JlYXRlKG5ld1NpemUpOwogICAgIGlmICh2
ZXJib3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3Jl
YXRlZCBuZXcgaGFzaHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsK
KyAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3JlYXRlZCBu
ZXcgaGFzaHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKICAgICBm
b3IgKFRocmVhZERhdGEqIHRocmVhZERhdGEgOiB0aHJlYWREYXRhcykgewogICAgICAgICBpZiAo
dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAi
OiByZWhhc2hpbmcgdGhyZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRo
IGFkZHJlc3MgPSAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7Cisg
ICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiByZWhhc2hp
bmcgdGhyZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3Mg
PSAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CiAgICAgICAgIHVu
c2lnbmVkIGhhc2ggPSBoYXNoQWRkcmVzcyh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBoYXNoICUgbmV3SGFzaHRhYmxlLT5zaXplOwogICAgICAgICBpZiAo
dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAi
OiBpbmRleCA9ICIsIGluZGV4LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5n
KFRocmVhZDo6Y3VycmVudCgpLCAiOiBpbmRleCA9ICIsIGluZGV4LCAiXG4iKSk7CiAgICAgICAg
IEJ1Y2tldCogYnVja2V0ID0gbmV3SGFzaHRhYmxlLT5kYXRhW2luZGV4XS5sb2FkKCk7CiAgICAg
ICAgIGlmICghYnVja2V0KSB7CiAgICAgICAgICAgICBpZiAocmV1c2FibGVCdWNrZXRzLmlzRW1w
dHkoKSkKQEAgLTQ4NSw3ICs0ODUsNyBAQCBib29sIGVucXVldWUoY29uc3Qgdm9pZCogYWRkcmVz
cywgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJy
ZW50VGhyZWFkKCksICI6IGVucXVldWVpbmcgb250byBidWNrZXQgIiwgUmF3UG9pbnRlcihidWNr
ZXQpLCAiIHdpdGggaW5kZXggIiwgaW5kZXgsICIgZm9yIGFkZHJlc3MgIiwgUmF3UG9pbnRlcihh
ZGRyZXNzKSwgIiB3aXRoIGhhc2ggIiwgaGFzaCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxv
Zyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyBvbnRvIGJ1Y2tldCAi
LCBSYXdQb2ludGVyKGJ1Y2tldCksICIgd2l0aCBpbmRleCAiLCBpbmRleCwgIiBmb3IgYWRkcmVz
cyAiLCBSYXdQb2ludGVyKGFkZHJlc3MpLCAiIHdpdGggaGFzaCAiLCBoYXNoLCAiXG4iKSk7CiAg
ICAgICAgIGJ1Y2tldC0+bG9jay5sb2NrKCk7CiAKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0
aGUgaGFzaHRhYmxlIGNvdWxkIGhhdmUgcmVoYXNoZWQgdW5kZXIgdXMuCkBAIC00OTgsNyArNDk4
LDcgQEAgYm9vbCBlbnF1ZXVlKGNvbnN0IHZvaWQqIGFkZHJlc3MsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiAgICAgICAgIGJvb2wgcmVzdWx0OwogICAgICAgICBpZiAodGhyZWFkRGF0YSkgewog
ICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhjdXJyZW50VGhyZWFkKCksICI6IHByb2NlZWRpbmcgdG8gZW5xdWV1ZSAiLCBSYXdQb2ludGVy
KHRocmVhZERhdGEpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhU
aHJlYWQ6OmN1cnJlbnQoKSwgIjogcHJvY2VlZGluZyB0byBlbnF1ZXVlICIsIFJhd1BvaW50ZXIo
dGhyZWFkRGF0YSksICJcbiIpKTsKICAgICAgICAgICAgIGJ1Y2tldC0+ZW5xdWV1ZSh0aHJlYWRE
YXRhKTsKICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNTY3
LDcgKzU2Nyw3IEBAIE5FVkVSX0lOTElORSBQYXJraW5nTG90OjpQYXJrUmVzdWx0IFBhcmtpbmdM
b3Q6OnBhcmtDb25kaXRpb25hbGx5SW1wbCgKICAgICBjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGUmIHRpbWVvdXQpCiB7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9T
dHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBwYXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9n
KHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBwYXJraW5nLlxuIikpOwogICAgIAogICAg
IFRocmVhZERhdGEqIG1lID0gbXlUaHJlYWREYXRhKCk7CiAgICAgbWUtPnRva2VuID0gMDsKQEAg
LTY2MSw3ICs2NjEsNyBAQCBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6UGFya1Jlc3VsdCBQYXJr
aW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseUltcGwoCiBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6
VW5wYXJrUmVzdWx0IFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKQog
ewogICAgIGlmICh2ZXJib3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJl
YWQoKSwgIjogdW5wYXJraW5nIG9uZS5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhU
aHJlYWQ6OmN1cnJlbnQoKSwgIjogdW5wYXJraW5nIG9uZS5cbiIpKTsKICAgICAKICAgICBVbnBh
cmtSZXN1bHQgcmVzdWx0OwogCkBAIC03MDYsNyArNzA2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
UGFya2luZ0xvdDo6dW5wYXJrT25lSW1wbCgKICAgICBjb25zdCBTY29wZWRMYW1iZGE8aW50cHRy
X3QoUGFya2luZ0xvdDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJr
aW5nIG9uZSB0aGUgaGFyZCB3YXkuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhy
ZWFkOjpjdXJyZW50KCksICI6IHVucGFya2luZyBvbmUgdGhlIGhhcmQgd2F5LlxuIikpOwogICAg
IAogICAgIFJlZlB0cjxUaHJlYWREYXRhPiB0aHJlYWREYXRhOwogICAgIGJvb2wgdGltZVRvQmVG
YWlyID0gZmFsc2U7CkBAIC03NTEsNyArNzUxLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBh
cmtpbmdMb3Q6OnVucGFya0NvdW50KGNvbnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4K
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFM
b2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiB1bnBhcmtpbmcgY291bnQgPSAiLCBjb3Vu
dCwgIiBmcm9tICIsIFJhd1BvaW50ZXIoYWRkcmVzcyksICIuXG4iKSk7CisgICAgICAgIGRhdGFM
b2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IHVucGFya2luZyBjb3VudCA9ICIsIGNv
dW50LCAiIGZyb20gIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpKTsKICAgICAKICAgICBW
ZWN0b3I8UmVmUHRyPFRocmVhZERhdGE+LCA4PiB0aHJlYWREYXRhczsKICAgICBkZXF1ZXVlKApA
QCAtNzYxLDcgKzc2MSw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQYXJraW5nTG90Ojp1bnBh
cmtDb3VudChjb25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3VuCiAgICAgICAgIEJ1Y2tl
dE1vZGU6Oklnbm9yZUVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQsIGJv
b2wpIHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2co
dG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBPYnNlcnZpbmcgZWxlbWVudCB3aXRoIGFkZHJl
c3MgPSAiLCBSYXdQb2ludGVyKGVsZW1lbnQtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogT2JzZXJ2aW5nIGVs
ZW1lbnQgd2l0aCBhZGRyZXNzID0gIiwgUmF3UG9pbnRlcihlbGVtZW50LT5hZGRyZXNzKSwgIlxu
IikpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmFkZHJlc3MgIT0gYWRkcmVzcykKICAgICAg
ICAgICAgICAgICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICAgICAgdGhy
ZWFkRGF0YXMuYXBwZW5kKGVsZW1lbnQpOwpAQCAtNzczLDcgKzc3Myw3IEBAIE5FVkVSX0lOTElO
RSB1bnNpZ25lZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25zdCB2b2lkKiBhZGRyZXNzLCB1
bnNpZ25lZCBjb3VuCiAKICAgICBmb3IgKFJlZlB0cjxUaHJlYWREYXRhPiYgdGhyZWFkRGF0YSA6
IHRocmVhZERhdGFzKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxv
Zyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyAiLCBSYXdQb2ludGVyKHRo
cmVhZERhdGEuZ2V0KCkpLCAiIHdpdGggYWRkcmVzcyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEt
PmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6
Y3VycmVudCgpLCAiOiB1bnBhcmtpbmcgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLmdldCgpKSwg
IiB3aXRoIGFkZHJlc3MgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLT5hZGRyZXNzKSwgIlxuIikp
OwogICAgICAgICBBU1NFUlQodGhyZWFkRGF0YS0+YWRkcmVzcyk7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWREYXRhLT5wYXJraW5nTG9jayk7CkBAIC03
ODMsNyArNzgzLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVucGFya0Nv
dW50KGNvbnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICB9CiAKICAgICBpZiAo
dmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRv
bmUgdW5wYXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3Vy
cmVudCgpLCAiOiBkb25lIHVucGFya2luZy5cbiIpKTsKICAgICAKICAgICByZXR1cm4gdGhyZWFk
RGF0YXMuc2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9j
a0FkYXB0ZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmgKaW5kZXgg
OTdhMjQzYjkwYmNhYzAwYjJkN2VlY2RmMjdlMDQyNWZjNTJkNjdhNy4uZDRmZWIzNzEwYTg0Njdl
MzdmNTA0ODY1OTljZmVjZDIwZjE0YzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVj
dXJzaXZlTG9ja0FkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRh
cHRlci5oCkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAg
ICAKICAgICB2b2lkIGxvY2soKQogICAgIHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9
IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAg
VGhyZWFkJiBtZSA9IFRocmVhZDo6Y3VycmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3du
ZXIpIHsKICAgICAgICAgICAgIG1fcmVjdXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZWN1cnNpdmVMb2NrQWRhcHRl
ciB7CiAgICAgICAgIG1fbG9jay5sb2NrKCk7CiAgICAgICAgIEFTU0VSVCghbV9vd25lcik7CiAg
ICAgICAgIEFTU0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAgICAgIG1fb3duZXIgPSBtZTsK
KyAgICAgICAgbV9vd25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1cnNpb25Db3VudCA9IDE7CiAg
ICAgfQogICAgIApAQCAtNTUsMTQgKzU1LDE0IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVy
IHsKICAgICB7CiAgICAgICAgIGlmICgtLW1fcmVjdXJzaW9uQ291bnQpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1fb3duZXIgPSAwOworICAgICAgICBtX293bmVyID0gbnVsbHB0cjsK
ICAgICAgICAgbV9sb2NrLnVubG9jaygpOwogICAgIH0KICAgICAKICAgICBib29sIHRyeUxvY2so
KQogICAgIHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJlYWQoKTsK
LSAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9IFRocmVh
ZDo6Y3VycmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAgICAgICAg
IG1fcmVjdXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAgICAg
CiAgICAgICAgIEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VSVCghbV9yZWN1cnNpb25D
b3VudCk7Ci0gICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9vd25lciA9ICZtZTsKICAg
ICAgICAgbV9yZWN1cnNpb25Db3VudCA9IDE7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTgzLDcgKzgzLDcgQEAgY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgewogICAgIH0KICAg
ICAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX293bmVyIHsgMCB9OworICAgIFRo
cmVhZCogbV9vd25lciB7IG51bGxwdHIgfTsgLy8gVXNlIFRocmVhZCogaW5zdGVhZCBvZiBSZWZQ
dHI8VGhyZWFkPiBzaW5jZSBtX293bmVyIHRocmVhZCBpcyBhbHdheXMgYWxpdmUgd2hpbGUgbV9v
bndlciBpcyBzZXQuCiAgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsKICAgICBM
b2NrVHlwZSBtX2xvY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMGJlNWExMGVkMGY3MjVm
OGQzZTE3ZTFjZjE5YWIyMDlhOTAwYTgyOS4uYzU2ZjE1NmRkOWNiZWM0OTk5Njk3YzZkNTQ5ZTg3
NTZmNzNiMjlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgcW9zX2Ns
YXNzX3QgVGhyZWFkOjphZGp1c3RlZFFPU0NsYXNzKHFvc19jbGFzc190IG9yaWdpbmFsQ2xhc3Mp
CiAKIHZvaWQgVGhyZWFkOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0
LnByaW50KG1faWQpOworICAgIG91dC5wcmludCgiVGhyZWFkOiIsIFJhd1BvaW50ZXIodGhpcykp
OwogfQogCiAjaWYgIUhBVkUoRkFTVF9UTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGVlMTMwM2ExOTFi
MDlkNGVjOWRkYzg3Y2NjODgxNTQyOTdmYTIzMDYuLmM3NDM5NGI1MjAyMGE3ZjA1ZjZkNzE2MTA4
MThjMjBhMTllMmZlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCkBAIC04MCw3ICs4MCw5IEBAIGNsYXNzIFRo
cmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBmcmllbmQg
Y2xhc3MgVGhyZWFkR3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwog
ICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7
CisjaWYgT1MoV0lORE9XUykKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0
Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIH5UaHJlYWQoKTsKIApAQCAtOTEsMTIgKzkzLDE2IEBAIGNsYXNzIFRo
cmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAvLyBSZXR1
cm5zIFRocmVhZCBvYmplY3QuCiAgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCisjaWYg
T1MoV0lORE9XUykKICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0
IGlzIHVzZWZ1bCBpZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8g
b2YgdGhyZWFkcy4gQXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcg
dGhpcyBUaHJlYWRJZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQogICAgIC8vIHRoYXQgdGhlIHRo
cmVhZCBpbmZvcm1hdGlvbiBpcyBhbGl2ZS4gV2hpbGUgVGhyZWFkOjpjdXJyZW50KCkgaXMgbm90
IHNhZmUgaWYgaXQgaXMgY2FsbGVkCiAgICAgLy8gZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUg
b3RoZXIgVExTIGRhdGEsIGN1cnJlbnRJRCgpIGFsd2F5cyByZXR1cm5zIG1lYW5pbmdmdWwgdGhy
ZWFkIElELgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBj
dXJyZW50SUQoKTsKIAorICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CisjZW5kaWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNoYW5nZVByaW9y
aXR5KGludCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yQ29tcGxldGlvbigp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaCgpOwpAQCAtMTM3LDE4ICsxNDMs
NiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0OwogCi0gICAgVGhyZWFkSWRlbnRpZmllciBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
LQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaHJlYWQmIHRocmVhZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBpZCgpID09IHRocmVhZC5pZCgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBUaHJlYWQmIHRocmVhZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpZCgpICE9
IHRocmVhZC5pZCgpOwotICAgIH0KLQogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQbGF0Zm9y
bVRocmVhZGluZygpOwogCiAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrKCkgY29uc3QKQEAg
LTI4MCw3ICsyNzQsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8VGhyZWFkPiB7CiAKICAgICAvLyBXb3JkTG9jayAmIExvY2sgcmVseSBvbiBUaHJlYWRTcGVj
aWZpYy4gQnV0IFRocmVhZCBvYmplY3QgY2FuIGJlIGRlc3Ryb3llZCBldmVuIGFmdGVyIFRocmVh
ZFNwZWNpZmljIHRoaW5ncyBhcmUgZGVzdHJveWVkLgogICAgIHN0ZDo6bXV0ZXggbV9tdXRleDsK
LSAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAwIH07CiAgICAgSm9pbmFibGVTdGF0ZSBtX2pv
aW5hYmxlU3RhdGUgeyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9pc1NodXR0aW5nRG93biB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwpAQCAtMjg4LDcgKzI4MSw5IEBA
IGNsYXNzIFRocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAg
ICBTdGFja0JvdW5kcyBtX3N0YWNrIHsgU3RhY2tCb3VuZHM6OmVtcHR5Qm91bmRzKCkgfTsKICAg
ICBWZWN0b3I8c3RkOjp3ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhyZWFkR3JvdXBzOwogICAg
IFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxlOwotI2lmIE9TKERBUldJTikKKyNpZiBPUyhX
SU5ET1dTKQorICAgIFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsKKyNlbGlmIE9TKERBUldJ
TikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwogI2VsaWYgVVNFKFBUSFJFQURT
KQogICAgIFBsYXRmb3JtUmVnaXN0ZXJzKiBtX3BsYXRmb3JtUmVnaXN0ZXJzIHsgbnVsbHB0ciB9
OwpAQCAtMzA3LDExICszMDIsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKIH07CiAK
LWlubGluZSBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQotewotICAgIHJldHVybiBU
aHJlYWQ6OmN1cnJlbnRJRCgpOwotfQotCiBpbmxpbmUgVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRN
YXlCZU51bGwoKQogewogI2lmICFIQVZFKEZBU1RfVExTKQpAQCAtMzQ1LDExICszMzUsMTAgQEAg
aW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
LXVzaW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6VGhyZWFkOwotdXNpbmcg
V1RGOjpjdXJyZW50VGhyZWFkOwogCiAjaWYgT1MoV0lORE9XUykKK3VzaW5nIFdURjo6VGhyZWFk
SWRlbnRpZmllcjsKIHVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwogdXNpbmcgV1RGOjp3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5o
CmluZGV4IDZlODhhYTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZhZGMzMGM2ZDIuLjRhY2UyOGYx
ZjU5Zjg4Njk3MDkxMDA4YTBhMGIxMjAxMGM5NzYyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmgKQEAgLTQ1LDcgKzQ1LDYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5n
IFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFRocmVhZEZ1bmN0aW9uID0gdm9p
ZCAoKikodm9pZCogYXJndW1lbnQpOwogCiAjaWYgVVNFKFBUSFJFQURTKQpAQCAtNTMsNiArNTIs
NyBAQCB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRfdDsKIHVzaW5nIFBsYXRm
b3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0Zm9ybUNvbmRpdGlvbiA9IHB0
aHJlYWRfY29uZF90OwogI2VsaWYgT1MoV0lORE9XUykKK3VzaW5nIFRocmVhZElkZW50aWZpZXIg
PSB1aW50MzJfdDsKIHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0gSEFORExFOwogc3RydWN0
IFBsYXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04gbV9pbnRlcm5hbE11dGV4Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDgzYjlkNTA5OTUyNWIwNmI2MGU5
MTEwM2RkZjUyNjQ5YmE5MDgwM2MuLmNmYzYyYWEwMDE3YjAxZjhmZTcwM2E4YTNjN2E2NjJhOGQ1
ZTUwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTI4MCw5ICsyODAs
OSBAQCBpbnQgVGhyZWFkOjp3YWl0Rm9yQ29tcGxldGlvbigpCiAgICAgaW50IGpvaW5SZXN1bHQg
PSBwdGhyZWFkX2pvaW4oaGFuZGxlLCAwKTsKIAogICAgIGlmIChqb2luUmVzdWx0ID09IEVERUFE
TEspCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQgdG8g
YmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0dfRVJST1Io
IlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIHRo
aXMpOwogICAgIGVsc2UgaWYgKGpvaW5SZXN1bHQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFk
SWRlbnRpZmllciAldSB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIsIG1faWQpOworICAgICAg
ICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIsIHRoaXMp
OwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAg
ICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTMwMCw3ICszMDAsNyBA
QCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4g
bG9ja2VyKG1fbXV0ZXgpOwogICAgIGludCBkZXRhY2hSZXN1bHQgPSBwdGhyZWFkX2RldGFjaCht
X2hhbmRsZSk7CiAgICAgaWYgKGRldGFjaFJlc3VsdCkKLSAgICAgICAgTE9HX0VSUk9SKCJUaHJl
YWRJZGVudGlmaWVyICV1IHdhcyB1bmFibGUgdG8gYmUgZGV0YWNoZWRcbiIsIG1faWQpOworICAg
ICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGRldGFjaGVkXG4iLCB0
aGlzKTsKIAogICAgIGlmICghaGFzRXhpdGVkKCkpCiAgICAgICAgIGRpZEJlY29tZURldGFjaGVk
KCk7CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiAKIFRocmVhZCYg
VGhyZWFkOjppbml0aWFsaXplQ3VycmVudFRMUygpCiB7Ci0gICAgLy8gTm90IGEgV1RGLWNyZWF0
ZWQgdGhyZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCisgICAg
Ly8gTm90IGEgV1RGLWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWQgaXMgbm90IGVzdGFibGlzaGVkIHll
dC4KICAgICBSZWY8VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKICAg
ICB0aHJlYWQtPmVzdGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUocHRocmVhZF9zZWxmKCkp
OwogICAgIHRocmVhZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CkBAIC0zMTcsMTEgKzMxNyw2IEBA
IFRocmVhZCYgVGhyZWFkOjppbml0aWFsaXplQ3VycmVudFRMUygpCiAgICAgcmV0dXJuIGluaXRp
YWxpemVUTFMoV1RGTW92ZSh0aHJlYWQpKTsKIH0KIAotVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6
OmN1cnJlbnRJRCgpCi17Ci0gICAgcmV0dXJuIGN1cnJlbnQoKS5pZCgpOwotfQotCiBib29sIFRo
cmVhZDo6c2lnbmFsKGludCBzaWduYWxOdW1iZXIpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0
ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKQEAgLTMzMyw3ICszMjgsNyBAQCBib29sIFRocmVh
ZDo6c2lnbmFsKGludCBzaWduYWxOdW1iZXIpCiAKIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4g
RXhwZWN0ZWQ8dm9pZCwgUGxhdGZvcm1TdXNwZW5kRXJyb3I+CiB7Ci0gICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9NRVNTQUdFKGlkKCkgIT0gY3VycmVudFRocmVhZCgpLCAiV2UgZG8gbm90IHN1cHBv
cnQgc3VzcGVuZGluZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOworICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSwgIldlIGRvIG5v
dCBzdXBwb3J0IHN1c3BlbmRpbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICAv
LyBEdXJpbmcgc3VzcGVuZCwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRl
ZCBmcm9tIHRoZSBvdGhlciB0aHJlYWRzLgogICAgIC8vIFdlIHVzZSBnbG9iYWwgbG9jayBpbnN0
ZWFkIG9mIHBlciB0aHJlYWQgbG9jay4KICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNh
c2UsIHRoZXJlIGFyZSB0aHJlYWRzIEEgYW5kIEIuCkBAIC00NTEsMTMgKzQ0Niw5IEBAIHZvaWQg
VGhyZWFkOjplc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCBoYW5kbGUp
CiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAg
ICBtX2hhbmRsZSA9IGhhbmRsZTsKLSAgICBpZiAoIW1faWQpIHsKLSAgICAgICAgc3RhdGljIHN0
ZDo6YXRvbWljPFRocmVhZElkZW50aWZpZXI+IHByb3ZpZGVyIHsgMCB9OwotICAgICAgICBtX2lk
ID0gKytwcm92aWRlcjsKICNpZiBPUyhEQVJXSU4pCi0gICAgICAgIG1fcGxhdGZvcm1UaHJlYWQg
PSBwdGhyZWFkX21hY2hfdGhyZWFkX25wKGhhbmRsZSk7CisgICAgbV9wbGF0Zm9ybVRocmVhZCA9
IHB0aHJlYWRfbWFjaF90aHJlYWRfbnAoaGFuZGxlKTsKICNlbmRpZgotICAgIH0KIH0KIAogI2lm
ICFIQVZFKEZBU1RfVExTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2lu
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggYmVjMGQzNDNkYWU1
ZWVkNDFmOTUxYjNlOTZiZGZmZjA1NjU3ZDgxNy4uYTgxNTkwNDA2OTY3ZDZlODU2NjkxNTM3ZTIw
Y2M1ZTgxZTFiOWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xODUsNyArMTg1LDcg
QEAgaW50IFRocmVhZDo6d2FpdEZvckNvbXBsZXRpb24oKQogCiAgICAgRFdPUkQgam9pblJlc3Vs
dCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCBJTkZJTklURSk7CiAgICAgaWYgKGpvaW5S
ZXN1bHQgPT0gV0FJVF9GQUlMRUQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmll
ciAldSB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOwor
ICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0
cnlpbmcgdG8gcXVpdCIsIHRoaXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+
IGxvY2tlcihtX211dGV4KTsKICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxl
KTsKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKIAogYXV0byBUaHJl
YWQ6OnN1c3BlbmQoKSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsK
LSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoaWQoKSAhPSBjdXJyZW50VGhyZWFkKCks
ICJXZSBkbyBub3Qgc3VwcG9ydCBzdXNwZW5kaW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYu
Iik7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMgIT0gJlRocmVhZDo6Y3Vy
cmVudCgpLCAiV2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUgY3VycmVudCB0aHJlYWQg
aXRzZWxmLiIpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKICAg
ICBEV09SRCByZXN1bHQgPSBTdXNwZW5kVGhyZWFkKG1faGFuZGxlKTsKICAgICBpZiAocmVzdWx0
ICE9IChEV09SRCktMSkKQEAgLTI5Myw3ICsyOTMsNyBAQCBUaHJlYWQqIFRocmVhZDo6Y3VycmVu
dER5aW5nKCkKICAgICBBU1NFUlQoc19rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsK
ICAgICAvLyBBZnRlciBGTFMgaXMgZGVzdHJveWVkLCB0aGlzIG1hcCBvZmZlcnMgdGhlIHZhbHVl
IHVudGlsIHRoZSBzZWNvbmQgdGhyZWFkIGV4aXQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHN0
ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAg
cmV0dXJuIHRocmVhZE1hcCgpLmdldChjdXJyZW50VGhyZWFkKCkpOworICAgIHJldHVybiB0aHJl
YWRNYXAoKS5nZXQoY3VycmVudElEKCkpOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29y
a2Fyb3VuZCBjb2RlIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tIGIvU291cmNlL1dU
Ri93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KaW5kZXggMzFkODE0YmY3YTdiOTY1Nzk1MmU4NWY4
ZGZkNjQ2MDg4ZTNlZDcyNS4uMjk5Yjk5OTZiNzNkODYwMTgwYTk2M2VjYTMwNzc4NzY1MmRlNzE2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KKysrIGIv
U291cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KQEAgLTY2LDggKzY2LDggQEAgc3Rh
dGljIHB0aHJlYWRfdCBtYWluVGhyZWFkUHRocmVhZDsKIHN0YXRpYyBOU1RocmVhZCogbWFpblRo
cmVhZE5TVGhyZWFkOwogCiAjaWYgVVNFKFdFQl9USFJFQUQpCi1zdGF0aWMgVGhyZWFkSWRlbnRp
ZmllciBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXI7Ci1zdGF0aWMgVGhyZWFkSWRlbnRp
ZmllciBzV2ViVGhyZWFkSWRlbnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIHNBcHBsaWNhdGlvblVJ
VGhyZWFkOworc3RhdGljIFRocmVhZCogc1dlYlRocmVhZDsKICNlbmRpZgogCiB2b2lkIGluaXRp
YWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQpAQCAtMTczLDE2ICsxNzMsMTAgQEAgYm9vbCBpc1dl
YlRocmVhZCgpCiAgICAgcmV0dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5U
aHJlYWRQdGhyZWFkKTsKIH0KIAotdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElk
ZW50aWZpZXIoKQordm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpCiB7CiAgICAg
QVNTRVJUKHB0aHJlYWRfbWFpbl9ucCgpKTsKLSAgICBzQXBwbGljYXRpb25VSVRocmVhZElkZW50
aWZpZXIgPSBjdXJyZW50VGhyZWFkKCk7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZVdlYlRocmVhZElk
ZW50aWZpZXIoKQotewotICAgIEFTU0VSVCghcHRocmVhZF9tYWluX25wKCkpOwotICAgIHNXZWJU
aHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOworICAgIHNBcHBsaWNhdGlvblVJVGhy
ZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOwogfQogCiB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQ
bGF0Zm9ybSgpCkBAIC0xOTIsMTYgKzE4NiwxOCBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQ
bGF0Zm9ybSgpCiAgICAgbWFpblRocmVhZEVzdGFibGlzaGVkQXNQdGhyZWFkTWFpbiA9IGZhbHNl
OwogICAgIG1haW5UaHJlYWRQdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CiAgICAgbWFpblRocmVh
ZE5TVGhyZWFkID0gW1tOU1RocmVhZCBjdXJyZW50VGhyZWFkXSByZXRhaW5dOworCisgICAgc1dl
YlRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KIAotYm9vbCBjYW5BY2Nlc3NUaHJlYWRM
b2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFRocmVhZCYgdGhyZWFkKQogewotICAgIFRocmVh
ZElkZW50aWZpZXIgY3VycmVudFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIGlmICh0
aHJlYWRJZCA9PSBjdXJyZW50VGhyZWFkSWQpCisgICAgVGhyZWFkJiBjdXJyZW50VGhyZWFkID0g
VGhyZWFkOjpjdXJyZW50KCk7CisgICAgaWYgKCZ0aHJlYWQgPT0gJmN1cnJlbnRUaHJlYWQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHRocmVhZElkID09IHNXZWJUaHJlYWRJZGVu
dGlmaWVyIHx8IHRocmVhZElkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkSWRlbnRpZmllcikKLSAg
ICAgICAgcmV0dXJuIChjdXJyZW50VGhyZWFkSWQgPT0gc1dlYlRocmVhZElkZW50aWZpZXIgfHwg
Y3VycmVudFRocmVhZElkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkSWRlbnRpZmllcikgJiYgd2Vi
VGhyZWFkSXNVbmluaXRpYWxpemVkT3JMb2NrZWRPckRpc2FibGVkKCk7CisgICAgaWYgKCZ0aHJl
YWQgPT0gc1dlYlRocmVhZCB8fCAmdGhyZWFkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkKQorICAg
ICAgICByZXR1cm4gKCZjdXJyZW50VGhyZWFkID09IHNXZWJUaHJlYWQgfHwgJmN1cnJlbnRUaHJl
YWQgPT0gc0FwcGxpY2F0aW9uVUlUaHJlYWQpICYmIHdlYlRocmVhZElzVW5pbml0aWFsaXplZE9y
TG9ja2VkT3JEaXNhYmxlZCgpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaAppbmRl
eCAxM2YzMTIxNTZjNjQ4ZmYyNTJhODZjYjRlZGVkYTY0YzgxZTk3ZjAyLi4yYjQyYzA2ZjM5ODM4
ZDA5OGM1MzdmYzEzM2JjOGFkOWU0ZDhjNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaApAQCAtMzUsMTAgKzM1LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0IDogcHVi
bGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBvcmln
aW5UaHJlYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkSUQ7IH0KKyAgICBUaHJl
YWQmIG9yaWdpblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkLmdldCgpOyB9
CiAKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbCB7Ci0gICAgICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgICAgIEFTU0VSVChtX29y
aWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgICAgIExvY2tl
cjxMb2NrPiBsb2NrKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dExvY2spOwogICAgICAgICBBY3Rp
dmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgY2xhc3Mg
SURCQWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gUGFyYW1ldGVycywgdHlwZW5hbWUuLi4gQXJndW1l
bnRzPgogICAgIHZvaWQgcGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoVCYgb2JqZWN0LCB2
b2lkIChUOjoqbWV0aG9kKShQYXJhbWV0ZXJzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG9yaWdpblRocmVhZElEKCkgPT0gb2JqZWN0Lm9yaWdp
blRocmVhZElEKCkpOworICAgICAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZvYmplY3Qu
b3JpZ2luVGhyZWFkKCkpOwogCi0gICAgICAgIGlmIChvYmplY3Qub3JpZ2luVGhyZWFkSUQoKSA9
PSBjdXJyZW50VGhyZWFkKCkpIHsKKyAgICAgICAgaWYgKCZvYmplY3Qub3JpZ2luVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKSB7CiAgICAgICAgICAgICAob2JqZWN0LiptZXRob2QpKGFy
Z3VtZW50cy4uLik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY1LDcgKzY1
LDcgQEAgY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7
CiAKICAgICB2b2lkIGNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFkKFdURjo6RnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKICAgICB7Ci0gICAgICAgIGlmIChvcmlnaW5UaHJlYWRJRCgpID09
IGN1cnJlbnRUaHJlYWQoKSkgeworICAgICAgICBpZiAoJm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSkgewogICAgICAgICAgICAgZnVuY3Rpb24oKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtODcsNyArODcsNyBAQCBjbGFzcyBJREJBY3RpdmVET01PYmpl
Y3QgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGhy
ZWFkSWRlbnRpZmllciBtX29yaWdpblRocmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAg
UmVmPFRocmVhZD4gbV9vcmlnaW5UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogICAgIExv
Y2sgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0TG9jazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDYyZmExNTFjYWIwOTdiZjQ5
ZGUzMTExYzczOTBjNGExZTdlMDRjZWYuLjQxMTJlYWQ0MjU4ZDc1YjU4NTdkZjdiOTkxNmM1ODFi
YTc4ODM4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmNwcApAQCAtNjEsNyArNjEsNyBAQCBJREJDdXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgYwogICAgICwg
bV9pbmZvKGluZm8pCiAgICAgLCBtX3NvdXJjZSgmb2JqZWN0U3RvcmUpCiB7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJmVmZmVjdGl2ZU9iamVj
dFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KQEAgLTcxLDE5ICs3
MSwxOSBAQCBJREJDdXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3VycwogICAgICwgbV9pbmZvKGluZm8pCiAgICAg
LCBtX3NvdXJjZSgmaW5kZXgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZl
Y3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJmVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBz
dXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogSURCQ3Vyc29yOjp+SURCQ3Vyc29yKCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rp
b24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZl
T2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIH0KIAogYm9vbCBJREJDdXJzb3I6OnNvdXJjZXNEZWxldGVk
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVj
dFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKG1fc291cmNlLAogICAgICAgICBbXSAoY29uc3QgUmVmUHRyPElEQk9iamVjdFN0
b3JlPiYgb2JqZWN0U3RvcmUpIHsgcmV0dXJuIG9iamVjdFN0b3JlLT5pc0RlbGV0ZWQoKTsgfSwK
QEAgLTEwMSwxNCArMTAxLDE0IEBAIElEQk9iamVjdFN0b3JlJiBJREJDdXJzb3I6OmVmZmVjdGl2
ZU9iamVjdFN0b3JlKCkgY29uc3QKIAogSURCVHJhbnNhY3Rpb24mIElEQkN1cnNvcjo6dHJhbnNh
Y3Rpb24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZl
T2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKCZlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBl
ZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCQ3Vyc29yOjp1cGRhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjp1cGRhdGUiKTsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNh
Y3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0
aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChzb3VyY2VzRGVsZXRlZCgpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGV4ZWN1dGUgJ3VwZGF0ZScgb24gJ0lEQkN1cnNvcic6IFRoZSBjdXJzb3IncyBz
b3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBA
IC0xNDksNyArMTQ5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJDdXJzb3I6
OnVwZGF0ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogRXhjZXB0aW9uT3I8dm9p
ZD4gSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGNvdW50KQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJDdXJzb3I6OmFkdmFuY2UiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAog
ICAgIGlmICghbV9yZXF1ZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJDdXJz
b3I6OmNvbnRpbnVlRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5Vgog
RXhjZXB0aW9uT3I8dm9pZD4gSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktl
eURhdGEmIGtleSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpjb250aW51ZUZ1
bmN0aW9uICh0byBrZXkgJXMpIiwga2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9yZXF1ZXN0KQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTI2OCw3ICsyNjgs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oY29uc3Qg
SURCS2V5RGF0YSYga2V5KQogCiB2b2lkIElEQkN1cnNvcjo6dW5jaGVja2VkSXRlcmF0ZUN1cnNv
cihjb25zdCBJREJLZXlEYXRhJiBrZXksIHVuc2lnbmVkIGNvdW50KQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZlZmZlY3RpdmVPYmplY3RT
dG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgKyttX291dHN0YW5kaW5nUmVxdWVzdENvdW50OwogCkBAIC0y
NzgsNyArMjc4LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29u
c3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBjb3VudCkKIAogdm9pZCBJREJDdXJzb3I6OnVu
Y2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlE
YXRhJiBwcmltYXJ5S2V5KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0
aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKCZlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgKytt
X291dHN0YW5kaW5nUmVxdWVzdENvdW50OwogCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJREJD
dXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25z
dCBJREJLZXlEYXRhJgogRXhjZXB0aW9uT3I8UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJREJD
dXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24iKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIGlmIChzb3VyY2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUg
J2RlbGV0ZScgb24gJ0lEQkN1cnNvcic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZl
IG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0zMjAsNyArMzIwLDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OmRlbGV0ZUZ1
bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUKIHZvaWQgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURC
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQkN1cnNvcjo6c2V0R2V0UmVzdWx0IC0gY3VycmVudCBrZXkgJXMi
LCBnZXRSZXN1bHQua2V5RGF0YSgpLmxvZ2dpbmdTdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTAwKS51
dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9i
amVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNv
bnRleHQgPSByZXF1ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHAKaW5kZXggOGY2ZTc3NWRhMmRjNzJmMTYwNTg0YTViYzgyZGFlNjdlNjE5MjQ0My4uMTA5MzIx
OTM4NWE2OWI5M2Y5OWMyOTMzMDNiNTQyOTdjZTRkZWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBJ
REJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
SURCQ2xpZW50OjpJREJDb25uZWN0aQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICgh
bV9jbG9zZWRJblNlcnZlcikKICAgICAgICAgbV9jb25uZWN0aW9uUHJveHktPmRhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZCgqdGhpcyk7CkBAIC03NCw3ICs3NCw3IEBAIElEQkRhdGFiYXNlOjp+SURC
RGF0YWJhc2UoKQogCiBib29sIElEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSB8fCBt
YXlCZUdDVGhyZWFkKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpIHx8IG1heUJlR0NUaHJlYWQoKSk7CiAKICAgICBpZiAobV9jbG9zZWRJblNlcnZl
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODcsMTkgKzg3LDE5IEBAIGJvb2wgSURCRGF0
YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAKIGNvbnN0IFN0cmluZyBJREJEYXRh
YmFzZTo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9CiAKIHVpbnQ2NF90IElEQkRh
dGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gbV9pbmZvLnZlcnNpb24oKTsKIH0KIAogUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRl
KCk7CiAgICAgZm9yIChhdXRvJiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKQEAg
LTExMCw3ICsxMTAsNyBAQCBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVj
dFN0b3JlTmFtZXMoKSBjb25zdAogCiB2b2lkIElEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9y
ZShJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQo
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgIEFTU0VSVChtX2luZm8uaGFzT2JqZWN0
U3RvcmUob2JqZWN0U3RvcmUuaW5mbygpLm5hbWUoKSkpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAg
dm9pZCBJREJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVj
dFN0b3JlLCBjb25zdCBTdHJpbmcmIG4KIAogdm9pZCBJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgo
SURCSW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQobV9pbmZvLmhhc09iamVjdFN0b3JlKGluZGV4Lm9i
amVjdFN0b3JlKCkuaW5mbygpLm5hbWUoKSkpOwogICAgIEFTU0VSVChtX2luZm8uaW5mb0ZvckV4
aXN0aW5nT2JqZWN0U3RvcmUoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFtZSgpKS0+aGFz
SW5kZXgoaW5kZXguaW5mbygpLm5hbWUoKSkpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSAtICglcyAlcykiLCBtX2luZm8ubmFtZSgpLnV0ZjgoKS5kYXRhKCksIG5h
bWUudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IG1fdmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CiAKICAgICBpZiAoIW1f
dmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKQpAQCAtMTY1LDcgKzE2NSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJUcmFuc2FjdGlvbj4+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTdHJpbmdPclZl
Y3Rvck9mU3RyaW5nCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbiIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAK
ICAgICBpZiAobV9jbG9zZVBlbmRpbmcpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAndHJhbnNhY3Rp
b24nIG9uICdJREJEYXRhYmFzZSc6IFRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3Npbmcu
IikgfTsKQEAgLTIxNSw3ICsyMTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCi0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fdmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2RlbGV0ZU9iamVj
dFN0b3JlJyBvbiAnSURCRGF0YWJhc2UnOiBUaGUgZGF0YWJhc2UgaXMgbm90IHJ1bm5pbmcgYSB2
ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbi4iKSB9OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNsb3NlKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6
OmNsb3NlIC0gJSIgUFJJdTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1f
Y2xvc2VQZW5kaW5nKSB7CiAgICAgICAgIG1fY2xvc2VQZW5kaW5nID0gdHJ1ZTsKQEAgLTI1OSw3
ICsyNTksNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KGNvbnN0
IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmNv
bm5lY3Rpb25Ub1NlcnZlckxvc3QgLSAlIiBQUkl1NjQsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
IAogICAgIG1fY2xvc2VQZW5kaW5nID0gdHJ1ZTsKICAgICBtX2Nsb3NlZEluU2VydmVyID0gdHJ1
ZTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2
ZXIoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2Vy
dmVyIC0gJSIgUFJJdTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9jbG9z
ZWRJblNlcnZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMzAxLDEzICszMDEsMTMgQEAgdm9pZCBJ
REJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyKCkKIAogY29uc3QgY2hhciogSURCRGF0YWJh
c2U6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiAiSURCRGF0YWJhc2UiOwogfQogCiBi
b29sIElEQkRhdGFiYXNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIC8v
IEZJWE1FOiBUaGlzIHZhbHVlIHdpbGwgc29tZXRpbWVzIGJlIGZhbHNlIHdoZW4gZGF0YWJhc2Ug
b3BlcmF0aW9ucyBhcmUgYWN0dWFsbHkgaW4gcHJvZ3Jlc3MuCiAgICAgLy8gU3VjaCBkYXRhYmFz
ZSBvcGVyYXRpb25zIGRvIG5vdCB5ZXQgZXhpc3QuCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBJ
REJEYXRhYmFzZTo6c3RvcCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpz
dG9wIC0gJSIgUFJJdTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICByZW1vdmVBbGxF
dmVudExpc3RlbmVycygpOwogCkBAIC0zNDEsNyArMzQxLDcgQEAgUmVmPElEQlRyYW5zYWN0aW9u
PiBJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJh
bnNhY3QKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uICVzIiwgaW5mby5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7CiAgICAgQVNTRVJU
KGluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSk7CiAgICAg
QVNTRVJUKCFtX2Nsb3NlUGVuZGluZyk7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBJREJEYXRh
YmFzZTo6ZGlkU3RhcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uICVz
IiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAvLyBJdCBpcyBw
b3NzaWJsZSBmb3IgdGhlIGNsaWVudCB0byBoYXZlIGFib3J0ZWQgYSB0cmFuc2FjdGlvbiBiZWZv
cmUgdGhlIHNlcnZlciByZXBsaWVzIGJhY2sgdGhhdCBpdCBoYXMgc3RhcnRlZC4KICAgICBpZiAo
bV9hYm9ydGluZ1RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpKSkKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQ29tbWl0
VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJEYXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8g
cmVmVHJhbnNhY3Rpb24gPSBtX2FjdGl2ZVRyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChyZWZUcmFuc2FjdGlvbik7CkBAIC0zODMs
NyArMzgzLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFz
ZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uID09ICZ0cmFuc2FjdGlvbikKICAgICAgICAgbV9pbmZvLnNldFZlcnNpb24odHJhbnNh
Y3Rpb24uaW5mbygpLm5ld1ZlcnNpb24oKSk7CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBJREJE
YXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rp
b24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCiAgICAgYXV0byByZWZUcmFuc2FjdGlvbiA9IG1fYWN0aXZlVHJhbnNhY3Rpb25zLnRh
a2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFyZWZUcmFuc2Fj
dGlvbikKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5z
YWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZv
KCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZv
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKHRyYW5zYWN0
aW9uLmlzVmVyc2lvbkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5vcmln
aW5hbERhdGFiYXNlSW5mbygpKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIElEQkRhdGFiYXNl
OjpkaWRDb21taXRPckFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRy
YW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAogICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9PSAmdHJh
bnNhY3Rpb24pCiAgICAgICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsK
QEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZQogICAgIHVpbnQ2NF90
IGN1cnJlbnRWZXJzaW9uID0gbV9pbmZvLnZlcnNpb24oKTsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCRGF0YWJhc2U6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQgLSBjdXJyZW50IHZlcnNpb24gJSIg
UFJJdTY0ICIsIHJlcXVlc3RlZCB2ZXJzaW9uICUiIFBSSXU2NCAiLCBjb25uZWN0aW9uICUiIFBS
SXU2NCAiICglcCkiLCBjdXJyZW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbiwgbV9kYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
fHwgbV9jbG9zZVBlbmRpbmcpIHsKICAgICAgICAgY29ubmVjdGlvblByb3h5KCkuZGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudChtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpmaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZQog
dm9pZCBJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50ICglIiBQUkl1NjQgIikgKCVw
KSIsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKTsKIApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6
OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogCiB2b2lkIElEQkRhdGFiYXNlOjpkaWRDcmVh
dGVJbmRleEluZm8oY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBt
X2luZm8uaW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mby5vYmplY3RTdG9yZUlkZW50aWZp
ZXIoKSk7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lk
IElEQkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleEluZm8oY29uc3QgSURCSW5kZXhJbmZvJiBpbmZv
KQogCiB2b2lkIElEQkRhdGFiYXNlOjpkaWREZWxldGVJbmRleEluZm8oY29uc3QgSURCSW5kZXhJ
bmZvJiBpbmZvKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0ZvckV4aXN0aW5nT2JqZWN0
U3RvcmUoaW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUKG9iamVjdFN0
b3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApp
bmRleCA0OTdkZWMxYTQwZmQwZDdjNmY1MTEyOWI1MTgxZGYyZjFlODczM2MwLi4xZTBhYjk5M2Zj
OGMxMzc2YzJiNmI4MmQ3NGRkNDMzMDhmMDBhNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC00OCwxNCArNDgsMTQgQEAgSURCSW5kZXg6
OklEQkluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbywgSUQKICAgICAsIG1fb3JpZ2luYWxJbmZvKGluZm8pCiAgICAgLCBtX29iamVj
dFN0b3JlKG9iamVjdFN0b3JlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9v
YmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7
CiB9CiAKIElEQkluZGV4Ojp+SURCSW5kZXgoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogfQogCiBjb25zdCBjaGFy
KiBJREJJbmRleDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC03NSwxMyArNzUsMTMg
QEAgYm9vbCBJREJJbmRleDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogY29uc3QgU3Ry
aW5nJiBJREJJbmRleDo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1faW5m
by5uYW1lKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkluZGV4OjpzZXROYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0
U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVCgmbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWls
ZWQgc2V0IHByb3BlcnR5ICduYW1lJyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggaGFzIGJlZW4g
ZGVsZXRlZC4iKSB9OwpAQCAtMTA5LDMxICsxMDksMzEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSURC
SW5kZXg6OnNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBJREJPYmplY3RTdG9yZSYgSURC
SW5kZXg6Om9iamVjdFN0b3JlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gbV9vYmplY3RTdG9y
ZTsKIH0KIAogY29uc3QgSURCS2V5UGF0aCYgSURCSW5kZXg6OmtleVBhdGgoKSBjb25zdAogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigp
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogICAgIHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCiBib29sIElEQkluZGV4
Ojp1bmlxdWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBtX2luZm8udW5pcXVlKCk7
CiB9CiAKIGJvb2wgSURCSW5kZXg6Om11bHRpRW50cnkoKSBjb25zdAogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IHJldHVybiBtX2luZm8ubXVsdGlFbnRyeSgpOwogfQogCiB2b2lkIElEQkluZGV4Ojpyb2xsYmFj
a0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJvcnQoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgLy8gT25seSBy
b2xsYmFjayB0byB0aGUgb3JpZ2luYWwgaW5mbyBpZiB0aGlzIGluZGV4IHN0aWxsIGV4aXN0cyBp
biB0aGUgcm9sbGVkLWJhY2sgZGF0YWJhc2UgaW5mby4KICAgICBhdXRvKiBvYmplY3RTdG9yZUlu
Zm8gPSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5pbmZvKCkuaW5mb0Zv
ckV4aXN0aW5nT2JqZWN0U3RvcmUobV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKTsK
QEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9u
Q2hhbmdlQWJvcnQoKQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3Bl
bkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6
b3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9y
ZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0
b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5DdXJzb3InIG9uICdJ
REJJbmRleCc6IFRoZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQu
IikgfTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
QkluZGV4OjpvcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYQogRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24o
KS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICBhdXRvIGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0YXRlLCBrZXkpOwogICAg
IGlmIChrZXlSYW5nZS5oYXNFeGNlcHRpb24oKSkKQEAgLTE4NSw3ICsxODUsNyBAQCBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKU1ZhbHVlCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpv
cGVuS2V5Q3Vyc29yKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSogcmFuZ2UsIElE
QkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQklu
ZGV4OjpvcGVuS2V5Q3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29i
amVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1f
b2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1
cnNvcicgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJl
ZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjI3LDcgKzIyNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCSW5kZXg6OmNvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtl
eSkKIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9Db3VudChFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9vYmplY3RTdG9yZS50cmFu
c2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKIAogICAgIGlmIChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS5pc0RlbGV0ZWQoKSkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwo
IkZhaWxlZCB0byBleGVjdXRlICdjb3VudCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0
cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjYyLDcgKzI2Miw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldChFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmRvR2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IHJhbmdlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3Jl
LmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQkluZGV4Jzog
VGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAt
Mjk3LDcgKzI5Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6Omdl
dEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCiAKIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVs
ZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUg
J2dldEtleScgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFz
IGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMzE1LDcgKzMxNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25z
dCBJREJLCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhl
Y1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0
QWxsIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fb2Jq
ZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNE
ZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsJyBvbiAnSURCSW5kZXgnOiBU
aGUgaW5kZXggb3IgaXRzIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0z
MzgsNyArMzM4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0
QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwKIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsS2V5cyIpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0
aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
CiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHRvIGV4ZWN1dGUgJ2dldEFsbEtleXMnIG9uICdJREJJbmRleCc6IFRoZSBpbmRleCBvciBp
dHMgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTM2MCw3ICszNjAsNyBA
QCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4ZWNT
dGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlCiAKIHZvaWQgSURCSW5kZXg6Om1hcmtBc0RlbGV0ZWQo
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUKCFtX2RlbGV0ZWQpOwogICAgIG1fZGVsZXRlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggMDhhNzg0YmEyNDIyMzBlNjM1MzcyNTYwMDEzMWJlNjFiMzJiYmQw
ZC4uMjg1ODk1NzZjNjMyYmE0ZGU1N2U1NmMwNjFhMzJjZmY3OWZmNzkxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAt
NjEsMTQgKzYxLDE0IEBAIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJPYmplY3RTCiAgICAgLCBtX29yaWdpbmFs
SW5mbyhpbmZvKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKIHsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9
CiAKIElEQk9iamVjdFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiB9CiAKIGNvbnN0IGNoYXIqIElEQk9iamVjdFN0b3JlOjph
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTg4LDEzICs4OCwxMyBAQCBib29sIElEQk9i
amVjdFN0b3JlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBjb25zdCBTdHJpbmcmIElE
Qk9iamVjdFN0b3JlOjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogICAgIHJldHVybiBtX2luZm8ubmFtZSgpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgc2V0IHByb3BlcnR5ICduYW1lJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2Jq
ZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTExOSwxMyArMTE5LDEzIEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVjdFN0b3JlOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFt
ZSkKIAogY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6Omtl
eVBhdGgoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2Fj
dGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2Fj
dGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAg
ICAgcmV0dXJuIG1faW5mby5rZXlQYXRoKCk7CiB9CiAKIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJ
REJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKIAogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVz
ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAKQEAgLTE0MCwyMCArMTQwLDIwIEBAIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CiAKIElE
QlRyYW5zYWN0aW9uJiBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24oKQogewotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb247CiB9
CiAKIGJvb2wgSURCT2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQoKSBjb25zdAogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5hdXRvSW5j
cmVtZW50KCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6Om9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0
ZSAnb3BlbkN1cnNvcicgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMg
YmVlbiBkZWxldGVkLiIpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSlMKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5L
ZXlDdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2Us
IElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
Qk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3Bl
bktleUN1cnNvcicgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVl
biBkZWxldGVkLiIpIH07CkBAIC0yMDEsNyArMjAxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6b3BlbktleUN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
Qk9iamVjdFN0b3JlOjpnZXQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdnZXQnIG9uICdJ
REJPYmplY3RTdG9yZSc6IFRoZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpA
QCAtMjE5LDcgKzIxOSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0
U3RvcmU6OmdldChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrCiBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUs
IElEQktleVJhbmdlKiBrZXlSYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0
U3RvcmU6OmdldCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlv
bi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlv
bi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICBpZiAobV9kZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQk9iamVj
dFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yMzcs
NyArMjM3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
Z2V0KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW4KIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRLZXki
KTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVs
ZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJ
SUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdnZXRLZXknIG9uICdJREJPYmplY3RTdG9yZSc6
IFRoZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjU1LDcgKzI1NSw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1CiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQk9iamVjdFN0b3JlOjpnZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdl
KiBrZXlSYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmdldEtl
eSIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9k
ZWxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQk9iamVjdFN0b3Jl
JzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yOTcsNyArMjk3
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6cHV0T3JB
ZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKIAogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6cHV0
T3JBZGQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0
byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKTsK
ICAgICBpZiAoIWNvbnRleHQpCkBAIC0zNjksNyArMzY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVj
U3RhdGUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvRGVs
ZXRlKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbiIpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAvLyBUaGUgSURCIHNwZWMgZm9y
IHNldmVyYWwgSURCT2JqZWN0U3RvcmUgbWV0aG9kcyBzdGF0ZXMgdGhhdCB0cmFuc2FjdGlvbiBy
ZWxhdGVkIGV4Y2VwdGlvbnMgc2hvdWxkIGZpcmUgYmVmb3JlCiAgICAgLy8gdGhlIGV4Y2VwdGlv
biBmb3IgYW4gb2JqZWN0IHN0b3JlIGJlaW5nIGRlbGV0ZWQuCkBAIC00MDMsNyArNDAzLDcgQEAg
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rp
b24oRXhlY1N0YXRlJiBleGVjU3RhdGUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
T2JqZWN0U3RvcmU6OmNsZWFyKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJPYmplY3RTdG9yZTo6Y2xlYXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgLy8gVGhlIElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVj
dFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQgdHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25z
IHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8vIHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBz
dG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNDI1LDcgKzQyNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlKQog
RXhjZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4
ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSURCS2V5UGF0aCYmIGtleVBhdGgsIGNvbnN0
IEluZGV4UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
T2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4ICVzIChrZXlQYXRoOiAlcywgdW5pcXVlOiAlaSwgbXVs
dGlFbnRyeTogJWkpIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBsb2dnaW5nU3RyaW5nKGtleVBhdGgp
LnV0ZjgoKS5kYXRhKCksIHBhcmFtZXRlcnMudW5pcXVlLCBwYXJhbWV0ZXJzLm11bHRpRW50cnkp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fdHJh
bnNhY3Rpb24uaXNWZXJzaW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRl
SW5kZXgnIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBkYXRhYmFzZSBpcyBub3QgcnVubmluZyBh
IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uLiIpIH07CkBAIC00NjYsNyArNDY2LDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNT
dGF0ZSYsIGNvbnN0IFN0cmluZyYKIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVj
dFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCT2JqZWN0U3RvcmU6OmluZGV4Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsgLy8gRklYTUU6IElzIHRo
aXMgY29kZSB0ZXN0ZWQ/IElzIGl0ZXZlbiByZWFjaGFibGU/CkBAIC00OTgsNyArNDk4LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lKQogRXhjZXB0aW9uT3I8dm9pZD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUluZGV4ICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZh
aWxlZCB0byBleGVjdXRlICdkZWxldGVJbmRleCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9i
amVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC01NTEsNyArNTUxLDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Y291bnQoRXhlY1N0YXRl
JiBleGVjU3RhdGUsIElEQktleVIKIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJP
YmplY3RTdG9yZTo6ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiByYW5nZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
CiAgICAgLy8gVGhlIElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMg
c3RhdGVzIHRoYXQgdHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJl
Zm9yZQogICAgIC8vIHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxl
dGVkLgpAQCAtNTczLDcgKzU3Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
T2JqZWN0U3RvcmU6OmRvQ291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0CiBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBl
eGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxs
Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2Rl
bGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVND
SUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsJyBvbiAnSURCT2JqZWN0U3RvcmUn
OiBUaGUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTU5Niw3ICs1OTYs
NyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwo
RXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRy
PElEQktleVJhbmdlPiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsS2V5cycgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9i
amVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC02MTgsMTMgKzYxOCwxMyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKEV4
ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKUwogCiB2b2lkIElEQk9iamVjdFN0b3JlOjptYXJrQXNEZWxl
dGVkKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIG1fZGVs
ZXRlZCA9IHRydWU7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6OnJvbGxiYWNrRm9yVmVyc2lv
bkNoYW5nZUFib3J0KCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
CiAgICAgU3RyaW5nIGN1cnJlbnROYW1lID0gbV9pbmZvLm5hbWUoKTsKICAgICBtX2luZm8gPSBt
X29yaWdpbmFsSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggNzhkYTk3MDIyYTdjZTQ5YjUxMDNmNDhkYmVk
YzY0MTE4ZDM2MDk2Mi4uNTdkYjBhMDcwMzE2NjE3ZWNkZTY3YWYyYjI5NWQ2NDBkM2IzOTE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCBJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVu
REJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkNsaWVudDo6SQog
CiBJREJPcGVuREJSZXF1ZXN0Ojp+SURCT3BlbkRCUmVxdWVzdCgpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiB9CiAKIHZvaWQgSURCT3BlbkRCUmVxdWVz
dDo6b25FcnJvcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kb21FcnJvciA9IGRhdGEuZXJy
b3IoKS50b0RPTUV4Y2VwdGlvbigpOwogICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxl
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIHRydWUsICp0
aGlzKSk7CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihj
b25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbkRpZEZpbmlzaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAvLyAzLjMuNyAidmVyc2lvbmNoYW5nZSIgdHJh
bnNhY3Rpb24gc3RlcHMKICAgICAvLyBXaGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCwg
YWZ0ZXIgZmlyaW5nIGNvbXBsZXRlL2Fib3J0IG9uIHRoZSB0cmFuc2FjdGlvbiwgaW1tZWRpYXRl
bHkgc2V0IHJlcXVlc3QncyB0cmFuc2FjdGlvbiBwcm9wZXJ0eSB0byBudWxsLgpAQCAtODcsNyAr
ODcsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hh
bmdlQ29tbWl0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6Zmly
ZVN1Y2Nlc3NBZnRlclZlcnNpb25DaGFuZ2VDb21taXQoKSAtICVzIiwgcmVzb3VyY2VJZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0
eSgpKTsKICAgICBtX3RyYW5zYWN0aW9uLT5hZGRSZXF1ZXN0KCp0aGlzKTsKIApAQCAtMTAxLDcg
KzEwMSw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJzaW9uQ2hh
bmdlQ29tcGxldGlvbigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6
OmZpcmVFcnJvckFmdGVyVmVyc2lvbkNoYW5nZUNvbXBsZXRpb24oKSAtICVzIiwgcmVzb3VyY2VJ
ZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdB
Y3Rpdml0eSgpKTsKIAogICAgIElEQkVycm9yIGlkYkVycm9yKEFib3J0RXJyb3IpOwpAQCAtMTE5
LDcgKzExOSw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgSURC
T3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2VzcygpIik7
CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHNl
dFJlc3VsdChJREJEYXRhYmFzZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNv
bm5lY3Rpb25Qcm94eSgpLCByZXN1bHREYXRhKSk7CiAgICAgbV9yZWFkeVN0YXRlID0gUmVhZHlT
dGF0ZTo6RG9uZTsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9u
U3VjY2Vzcyhjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogCiB2b2lkIElEQk9wZW5E
QlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAg
UmVmPElEQkRhdGFiYXNlPiBkYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlvblByb3h5KCksIHJlc3VsdERhdGEpOwogICAgIFJl
ZjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS0+c3RhcnRWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24ocmVzdWx0RGF0YS50cmFuc2FjdGlvbkluZm8oKSwgKnRoaXMpOwpAQCAt
MTY2LDcgKzE2Niw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNv
bnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6
b25EZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHVp
bnQ2NF90IG9sZFZlcnNpb24gPSByZXN1bHREYXRhLmRhdGFiYXNlSW5mbygpLnZlcnNpb24oKTsK
IApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBs
ZXRlZChjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkIik7CiAKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIC8vIElmIGFuIE9wZW4gcmVxdWVzdCB3
YXMgY29tcGxldGVkIGFmdGVyIHRoZSBwYWdlIGhhcyBuYXZpZ2F0ZWQsIGxlYXZpbmcgdGhpcyBy
ZXF1ZXN0CiAgICAgLy8gd2l0aCBhIHN0b3BwZWQgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LCB3
ZSBuZWVkIHRvIG1lc3NhZ2UgYmFjayB0byB0aGUgc2VydmVyIHNvIGl0CkBAIC0yMjIsNyArMjIy
LDcgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKGNvbnN0IElEQlJl
c3VsdERhdGEmIGRhdGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdEJsb2NrZWQo
dWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIExPRyhJbmRleGVkREIsICJJ
REJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0QmxvY2tlZCIpOwogICAgIGVucXVldWVFdmVudChJREJW
ZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBldmVudE5h
bWVzKCkuYmxvY2tlZEV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGNkYzliYWY1MzllZGZmMjE0MTVmOTQ0ZDgxODc4NWRj
MjRhNjgyNTcuLmM5Y2FkZWNmNDgzMDliNmYxOWFlNjdkYjFhMWU2MDJhZDZmNDE3NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0x
NDMsNyArMTQzLDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWQKIAogSURCUmVxdWVzdDo6fklE
QlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgaWYgKG1fcmVzdWx0KSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24obV9yZXN1bHQu
dmFsdWUoKSwKQEAgLTE2Myw3ICsxNjMsNyBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPElE
QlJlcXVlc3Q6OlJlc3VsdD4+IElEQlJlcXVlc3Q6OnJlc3VsdCgpIGNvbnN0CiAKIEV4Y2VwdGlv
bk9yPERPTUV4Y2VwdGlvbio+IElEQlJlcXVlc3Q6OmVycm9yKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghaXNEb25lKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRl
cmFsKCJGYWlsZWQgdG8gcmVhZCB0aGUgJ2Vycm9yJyBwcm9wZXJ0eSBmcm9tICdJREJSZXF1ZXN0
JzogVGhlIHJlcXVlc3QgaGFzIG5vdCBmaW5pc2hlZC4iKSB9OwpAQCAtMTczLDcgKzE3Myw3IEBA
IEV4Y2VwdGlvbk9yPERPTUV4Y2VwdGlvbio+IElEQlJlcXVlc3Q6OmVycm9yKCkgY29uc3QKIAog
dm9pZCBJREJSZXF1ZXN0OjpzZXRTb3VyY2UoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2N1cnNv
clJlcXVlc3ROb3RpZmllcik7CiAKICAgICBtX3NvdXJjZSA9IFNvdXJjZSB7ICZjdXJzb3IgfTsK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJREJDdXJzb3Im
IGN1cnNvcikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbik7CiAgICAgQVNT
RVJUKHRyYW5zYWN0aW9uLmlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoIXRyYW5zYWN0
aW9uLmlzRmluaXNoZWRPckZpbmlzaGluZygpKTsKQEAgLTE5NSwxMyArMTk1LDEzIEBAIHZvaWQg
SURCUmVxdWVzdDo6c2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKIAogUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiBJREJSZXF1ZXN0
Ojp0cmFuc2FjdGlvbigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBv
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1fc2hvdWxkRXhwb3NlVHJhbnNhY3Rpb25Ub0RPTSA/
IG1fdHJhbnNhY3Rpb24gOiBudWxscHRyOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0Ojpzb3Vy
Y2VPYmplY3RTdG9yZUlkZW50aWZpZXIoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0yMTUsNyArMjE1LDcgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNlT2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKCkgY29uc3QKIAogdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNl
SW5kZXhJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtMjI5LDE0ICsyMjksMTQgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNlSW5kZXhJZGVu
dGlmaWVyKCkgY29uc3QKIAogSW5kZXhlZERCOjpPYmplY3RTdG9yZVJlY29yZFR5cGUgSURCUmVx
dWVzdDo6cmVxdWVzdGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBlKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHJldHVybiBtX3JlcXVl
c3RlZE9iamVjdFN0b3JlUmVjb3JkVHlwZTsKIH0KIAogSW5kZXhlZERCOjpJbmRleFJlY29yZFR5
cGUgSURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9zb3Vy
Y2UpOwogICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJJbmRleD4+
KG1fc291cmNlLnZhbHVlKCkpKTsKIApAQCAtMjQ1LDMzICsyNDUsMzMgQEAgSW5kZXhlZERCOjpJ
bmRleFJlY29yZFR5cGUgSURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29u
c3QKIAogRXZlbnRUYXJnZXRJbnRlcmZhY2UgSURCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgcmV0dXJuIElEQlJlcXVlc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAK
IGNvbnN0IGNoYXIqIElEQlJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgcmV0dXJu
ICJJREJSZXF1ZXN0IjsKIH0KIAogYm9vbCBJREJSZXF1ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6aGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoJm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSB8fCBtYXlCZUdDVGhyZWFkKCkpOwogICAg
IHJldHVybiBtX2hhc1BlbmRpbmdBY3Rpdml0eTsKIH0KIAogdm9pZCBJREJSZXF1ZXN0OjpzdG9w
KCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBB
U1NFUlQoIW1fY29udGV4dFN0b3BwZWQpOwogCiAgICAgY2FuY2VsRm9yU3RvcCgpOwpAQCAtMjg4
LDcgKzI4OCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURC
UmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSB8fCBtX2NvbnRleHRTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTMw
MCw3ICszMDAsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50IC0gJXMg
KCVwKSIsIGV2ZW50LnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIAotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChtX2hh
c1BlbmRpbmdBY3Rpdml0eSk7CiAgICAgQVNTRVJUKCFtX2NvbnRleHRTdG9wcGVkKTsKIApAQCAt
MzQ3LDcgKzM0Nyw3IEBAIHZvaWQgSURCUmVxdWVzdDo6dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50
SGFuZGxlcigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhj
ZXB0aW9uSW5FdmVudEhhbmRsZXIiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24gJiYgbV9pZGJFcnJvci5jb2Rl
KCkgIT0gQWJvcnRFcnJvcikKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnREdWVUb0ZhaWxl
ZFJlcXVlc3QoRE9NRXhjZXB0aW9uOjpjcmVhdGUoQWJvcnRFcnJvciwgQVNDSUlMaXRlcmFsKCJJ
REJUcmFuc2FjdGlvbiB3aWxsIGFib3J0IGR1ZSB0byB1bmNhdWdodCBleGNlcHRpb24gaW4gYW4g
ZXZlbnQgaGFuZGxlciIpKSk7CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBJREJSZXF1ZXN0Ojp1
bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCkKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRS
ZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHZv
aWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAKIHZv
aWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYga2V5RGF0
YXMpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29u
dGV4dCkKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25z
dCBWZWN0b3I8SURCS2V5RGF0YT4mIGtleURhdGFzKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJl
c3VsdChjb25zdCBWZWN0b3I8SURCVmFsdWU+JiB2YWx1ZXMpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTQxMiw3ICs0MTIsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBWZWN0b3I8SURCVmFsdWU+JiB2YWx1
ZXMpCiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNv
bnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAt
NDIzLDcgKzQyMyw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJl
cikKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBJ
REJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5U
aHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAKICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1
Y3R1cmVkQ2xvbmUiKTsKIApAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0
UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUoY29uc3QgSURCVmFsdWUmIHZhbHVlKQogCiB2b2lkIElE
QlJlcXVlc3Q6OnNldFJlc3VsdFRvVW5kZWZpbmVkKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZv
aWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQoKQogCiBJREJDdXJzb3IqIElEQlJl
cXVlc3Q6OnJlc3VsdEN1cnNvcigpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBv
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBJREJDdXJzb3IqIElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNv
cigpCiAKIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJz
b3IpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAg
QVNTRVJUKGlzRG9uZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBBU1NFUlQobV90cmFuc2FjdGlvbik7CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBJREJS
ZXF1ZXN0Ojp3aWxsSXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImIGN1cnNvcikKIAogdm9pZCBJREJS
ZXF1ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAg
ICAgQVNTRVJUKG1fcGVuZGluZ0N1cnNvcik7CiAKICAgICBtX3Jlc3VsdCA9IHN0ZDo6bnVsbG9w
dDsKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmRpZE9wZW5Pckl0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIAogdm9pZCBJREJSZXF1ZXN0
Ojpjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50KGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25lOwogCkBAIC01MjQsNyArNTI0
LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvbkVycm9yKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCUmVxdWVzdDo6b25FcnJvciIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBv
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2lkYkVycm9yLmlzTnVsbCgpKTsKIAogICAgIG1f
ZG9tRXJyb3IgPSBtX2lkYkVycm9yLnRvRE9NRXhjZXB0aW9uKCk7CkBAIC01MzQsMTQgKzUzNCwx
NCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uRXJyb3IoKQogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MiKTsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGVucXVldWVF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChSZWY8SURCRGF0YWJhc2U+JiYg
ZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBtX3Jlc3VsdCA9IFJlc3VsdCB7IFJlZlB0cjxJREJEYXRhYmFzZT4geyBXVEZNb3Zl
KGRhdGFiYXNlKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYzFlMWRlZjU1ZWI2MWMyODZjYTNmYWVhMWQ5
ODQwNTc4Y2RiMTM2Ni4uYTlkNjQwZTUwYTA3OThjZmViMjE0OGExYmExNzBhODQ4YTVjYTA5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcApAQCAtODAsNyArODAsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24o
SURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uIC0gJXMiLCBt
X2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAg
aWYgKG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7
CiAgICAgICAgIEFTU0VSVChtX29wZW5EQlJlcXVlc3QpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIElE
QlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihJREJEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0
IElEQlRyYW5zYWN0aW9uSW5mbyYKIAogSURCVHJhbnNhY3Rpb246On5JREJUcmFuc2FjdGlvbigp
CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiB9CiAKIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBJREJU
cmFuc2FjdGlvbjo6Y29ubmVjdGlvblByb3h5KCkKQEAgLTExNiw3ICsxMTYsNyBAQCBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgSURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25Qcm94eSgp
CiAKIFJlZjxET01TdHJpbmdMaXN0PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVOYW1lcygp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBuYW1lcyA9
IGlzVmVyc2lvbkNoYW5nZSgpID8gbV9kYXRhYmFzZS0+aW5mbygpLm9iamVjdFN0b3JlTmFtZXMo
KSA6IG1faW5mby5vYmplY3RTdG9yZXMoKTsKIApAQCAtMTMwLDIwICsxMzAsMjAgQEAgUmVmPERP
TVN0cmluZ0xpc3Q+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIAog
SURCRGF0YWJhc2UqIElEQlRyYW5zYWN0aW9uOjpkYigpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0
dXJuIG1fZGF0YWJhc2UucHRyKCk7CiB9CiAKIERPTUV4Y2VwdGlvbiogSURCVHJhbnNhY3Rpb246
OmVycm9yKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gbV9kb21FcnJvci5nZXQo
KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPElEQk9iamVjdFN0b3JlPj4gSURCVHJhbnNhY3Rpb246
Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAog
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBvYmplYwogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVl
c3QoRE9NRXhjZXB0aW9uJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OmFib3J0RHVlVG9GYWlsZWRSZXF1ZXN0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAo
aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NCw3ICsxOTQs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydER1ZVRvRmFpbGVkUmVxdWVzdChET01FeGNl
cHRpb24mIGVycm9yKQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjp0cmFuc2l0aW9uZWRUb0Zpbmlz
aGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGUgc3RhdGUpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAK
ICAgICBBU1NFUlQoIWlzRmluaXNoZWRPckZpbmlzaGluZygpKTsKICAgICBtX3N0YXRlID0gc3Rh
dGU7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6dHJhbnNpdGlvbmVk
VG9GaW5pc2hpbmcoSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlIHN0YXRlKQogRXhjZXB0aW9u
T3I8dm9pZD4gSURCVHJhbnNhY3Rpb246OmFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OmFib3J0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hl
ZE9yRmluaXNoaW5nKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnYWJvcnQnIG9uICdJREJUcmFu
c2FjdGlvbic6IFRoZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKSB9OwpA
QCAtMjE3LDcgKzIxNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQlRyYW5zYWN0aW9uOjphYm9y
dCgpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjppbnRlcm5hbEFib3J0KCkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAg
ICBBU1NFUlQoIWlzRmluaXNoZWRPckZpbmlzaGluZygpKTsKIAogICAgIG1fZGF0YWJhc2UtPndp
bGxBYm9ydFRyYW5zYWN0aW9uKCp0aGlzKTsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjphYm9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJiBlcnJv
cikKIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMi
KTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25R
dWV1ZS5pc0VtcHR5KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuYWJv
cnRUcmFuc2FjdGlvbigqdGhpcyk7CkBAIC0zMDksMjYgKzMwOSwyNiBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMoSURCQ2xpZW50OjpUcmFuc2Fj
dGlvbk9wZXJhdAogCiBjb25zdCBjaGFyKiBJREJUcmFuc2FjdGlvbjo6YWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuICJJREJUcmFuc2FjdGlvbiI7
CiB9CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBJ
REJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkgfHwgbWF5QmVH
Q1RocmVhZCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSB8fCBtYXlCZUdDVGhyZWFkKCkpOwogICAgIHJldHVybiAhbV9jb250
ZXh0U3RvcHBlZCAmJiBtX3N0YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6Rmlu
aXNoZWQ7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnN0b3AoKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJUcmFuc2FjdGlvbjo6c3RvcCAtICVzIiwgbV9pbmZvLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIC8vIElEQkRhdGFiYXNlOjpzdG9w
KCkgY2FsbHMgSURCVHJhbnNhY3Rpb246OnN0b3AoKSBmb3IgZWFjaCBvZiBpdHMgYWN0aXZlIHRy
YW5zYWN0aW9ucy4KICAgICAvLyBTaW5jZSB0aGUgb3JkZXIgb2YgY2FsbGluZyBBY3RpdmVET01P
YmplY3Q6OnN0b3AoKSBpcyByYW5kb20sIHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIHN0b3Bw
ZWQuCkBAIC0zNDcsMTMgKzM0NywxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIAog
Ym9vbCBJREJUcmFuc2FjdGlvbjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IHJldHVybiBtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6QWN0aXZlOwog
fQogCiBib29sIElEQlRyYW5zYWN0aW9uOjppc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgcmV0dXJuIG1fc3RhdGUgPT0gSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblN0YXRlOjpDb21taXR0aW5nCiAgICAgICAgIHx8IG1fc3RhdGUgPT0gSW5kZXhlZERCOjpU
cmFuc2FjdGlvblN0YXRlOjpBYm9ydGluZwpAQCAtMzYyLDEzICszNjIsMTMgQEAgYm9vbCBJREJU
cmFuc2FjdGlvbjo6aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkgY29uc3QKIAogdm9pZCBJREJUcmFu
c2FjdGlvbjo6YWRkUmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
ICAgIG1fb3BlblJlcXVlc3RzLmFkZCgmcmVxdWVzdCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b246OnJlbW92ZVJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAg
ICBBU1NFUlQobV9vcGVuUmVxdWVzdHMuY29udGFpbnMoJnJlcXVlc3QpKTsKICAgICBtX29wZW5S
ZXF1ZXN0cy5yZW1vdmUoJnJlcXVlc3QpOwogfQpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgSURC
VHJhbnNhY3Rpb246OnJlbW92ZVJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHZvaWQgSURC
VHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25P
cGVyYXRpb25NYXAuY29udGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVyKCkpKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKIAogICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJh
dGlvbik7CiAgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQob3BlcmF0aW9uLT5pZGVu
dGlmaWVyKCksIFdURk1vdmUob3BlcmF0aW9uKSk7CkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24+JiYKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVQZW5kaW5n
T3BlcmF0aW9uVGltZXIoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKCFtX3BlbmRpbmdPcGVy
YXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5z
dGFydE9uZVNob3QoMF9zKTsKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcigpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpw
ZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAKICAgICBpZiAoIW1fc3RhcnRlZE9uU2VydmVyKQogICAgICAgICByZXR1cm47CkBA
IC00MjksOCArNDI5LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRp
bWVyRmlyZWQoKQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNl
cnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24pCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9wZXJhdGlvbi5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKCZvcGVyYXRp
b24ub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fY29tcGxl
dGVkT25TZXJ2ZXJRdWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9uLCBkYXRhIH0pOwogICAgIHNjaGVk
dWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKTsKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHRE
YXRhJiBkYXRhLCBJREJDbAogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRl
ZE9wZXJhdGlvblRpbWVyKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9jb21wbGV0ZWRP
cGVyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2NvbXBsZXRlZE9wZXJhdGlvblRp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246OnNjaGVkdWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKQogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6Y29tcGxldGVkT3BlcmF0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkICglcCkiLCB0
aGlzKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuaXNF
bXB0eSgpIHx8IG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpCiAgICAgICAgIHJldHVybjsK
QEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpmaW5pc2hlZERpc3BhdGNo
RXZlbnRGb3JSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9u
Ojpjb21taXQoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tbWl0
Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CiAK
ICAgICB0cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6
OkNvbW1pdHRpbmcpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNv
bW1pdCgpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRh
YmFzZS0+Y29ubmVjdGlvblByb3h5KCkuY29tbWl0VHJhbnNhY3Rpb24oKnRoaXMpOwogCkBAIC01
MTksNyArNTE5LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29tbWl0T25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogdm9pZCBJREJUcmFuc2FjdGlv
bjo6ZmluaXNoQWJvcnRPckNvbW1pdCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3N0
YXRlID0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KQEAgLTUyNyw3
ICs1MjcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpmaW5pc2hBYm9ydE9yQ29tbWl0KCkKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0Iik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBtX2RhdGFiYXNlLT5kaWRTdGFydFRyYW5zYWN0aW9uKCp0aGlzKTsKIApAQCAtNTQ1
LDcgKzU0NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KGNvbnN0IElEQkVycm9y
JiBlcnJvcikKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQoY29uc3QgSURC
RXJyb3ImIGVycm9yKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+ZGlkQWJvcnRU
cmFuc2FjdGlvbigqdGhpcyk7CiAgICAgbV9pZGJFcnJvciA9IGVycm9yOwpAQCAtNTYwLDcgKzU2
MCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om5vdGlmeURpZEFib3J0KGNvbnN0IElEQkVycm9y
JiBlcnJvcikKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEFib3J0KGNvbnN0IElEQkVycm9yJiBl
cnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZEFib3J0Iik7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9u
U3RhdGU6OkZpbmlzaGVkKQogICAgICAgICByZXR1cm47CkBAIC01NzMsNyArNTczLDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkQWJvcnQoY29uc3QgSURCRXJyb3ImIGVycm9yKQogdm9pZCBJ
REJUcmFuc2FjdGlvbjo6ZGlkQ29tbWl0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdCIpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
ICAgIEFTU0VSVChtX3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6Q29tbWl0
dGluZyk7CiAKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTU5MCwyMSArNTkwLDIxIEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdChjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIGVu
cXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50LCBmYWxz
ZSwgZmFsc2UpKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQoKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQiKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKICAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRF
dmVudCwgdHJ1ZSwgZmFsc2UpKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2
ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlzaGVkKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICgh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHx8IG1fY29udGV4dFN0b3BwZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2
ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246
OmRpc3BhdGNoRXZlbnQiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CiAgICAgQVNTRVJU
KGV2ZW50LnRhcmdldCgpID09IHRoaXMpOwpAQCAtNjQ3LDcgKzY0Nyw3IEBAIFJlZjxJREJPYmpl
Y3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9i
amVjdFN0b3JlIik7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKIApAQCAtNjY0LDcgKzY2NCw3
IEBAIFJlZjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9i
amVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0
aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNv
bm5lY3Rpb25Qcm94eSgpLmNyZWF0ZU9iamVjdFN0b3JlKG9wZXJhdGlvbiwgaW5mbyk7CkBAIC02
NzMsNyArNjczLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNl
cnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlv
bjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRl
T2JqZWN0U3RvcmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6Q3JlYXRlT2JqZWN0
U3RvcmVTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9y
KTsKIH0KIApAQCAtNjg1LDcgKzY4NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9i
amVjdFN0b3JlKElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nCiAKICAg
ICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE9iamVjdFN0
b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZS5pbmZvKCkubmFtZSgpKSk7CiAgICAgQVNTRVJUKCFt
X3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuY29udGFpbnMobmV3TmFtZSkpOwpAQCAtNzAyLDcgKzcw
Miw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlKElEQk9iamVjdFN0
b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5h
bWVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXJhdGlvbiwgY29uc3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVu
YW1lT2JqZWN0U3RvcmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChpc1ZlcnNp
b25DaGFuZ2UoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5yZW5hbWVP
YmplY3RTdG9yZShvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBA
IC03MTEsNyArNzExLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmVP
blNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUmVu
YW1lT2JqZWN0U3RvcmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6UmVuYW1lT2Jq
ZWN0U3RvcmVTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVy
cm9yKTsKIH0KIApAQCAtNzE5LDcgKzcxOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4g
SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCIpOwogICAg
IEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03MzMsNyAr
NzMzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRl
SW5kZXgoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3IKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNy
ZWF0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0
aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNT
RVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94
eSgpLmNyZWF0ZUluZGV4KG9wZXJhdGlvbiwgaW5mbyk7CkBAIC03NDIsNyArNzQyLDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uJiBvcGVyYXQKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4
T25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpDcmVh
dGVJbmRleFN1Y2Nlc3MpCiAgICAgICAgIHJldHVybjsKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleChJREJJbmRleCYgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgbmV3TmFtZSkKIAogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlQobV9y
ZWZlcmVuY2VkT2JqZWN0U3RvcmVzLmNvbnRhaW5zKGluZGV4Lm9iamVjdFN0b3JlKCkuaW5mbygp
Lm5hbWUoKSkpOwogICAgIEFTU0VSVChtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuZ2V0KGluZGV4
Lm9iamVjdFN0b3JlKCkuaW5mbygpLm5hbWUoKSkgPT0gJmluZGV4Lm9iamVjdFN0b3JlKCkpOwpA
QCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElEQklu
ZGV4JiBpbmRleCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6
cmVuYW1lSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVy
YXRpb24sIGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IHVpbnQ2
NF90JiBpbmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+
Y29ubmVjdGlvblByb3h5KCkucmVuYW1lSW5kZXgob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03OTAsMTQgKzc5MCwxNCBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24mIG9wZXJhdAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5k
ZXhPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkg
PT0gSURCUmVzdWx0VHlwZTo6UmVuYW1lSW5kZXhTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgp
ID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9y
ZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvciIpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgaWYgKGluZm8uY3Vyc29yVHlwZSgpID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6
S2V5T25seSkKICAgICAgICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3Ioc3RhdGUsIElEQkN1
cnNvcjo6Y3JlYXRlKCp0aGlzLCBvYmplY3RTdG9yZSwgaW5mbykpOwpAQCAtODA4LDcgKzgwOCw3
IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhl
Y1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvCiBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RPcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwg
Y29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoaW5m
by5jdXJzb3JUeXBlKCkgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQogICAgICAg
ICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihzdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRo
aXMsIGluZGV4LCBpbmZvKSk7CkBAIC04MTksNyArODE5LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJJbmRl
eCYgaW4KIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNv
cihFeGVjU3RhdGUmIHN0YXRlLCBSZWY8SURCQ3Vyc29yPiYmIGN1cnNvcikKIHsKICAgICBBU1NF
UlQoaXNBY3RpdmUoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUoJnN0YXRlKSk7CiAKQEAgLTgzNSw3ICs4MzUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURC
VHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPElE
QkN1cgogdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5m
bykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNl
cnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCku
b3BlbkN1cnNvcihvcGVyYXRpb24sIGluZm8pOwogfQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uJiBvcGVyYXRpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25T
ZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JP
blNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgY29tcGxldGVDdXJzb3JSZXF1ZXN0KHJlcXVl
c3QsIHJlc3VsdERhdGEpOwogfQpAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVDdXJz
b3JEYXRhCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29y
Iik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjdXJzb3IucmVxdWVzdCgp
KTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGFkZFJlcXVlc3QoKmN1cnNvci5yZXF1ZXN0KCkpOwogCkBA
IC04NjUsNyArODY1LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcihJREJD
dXJzb3ImIGN1cnNvciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEKIHZvaWQgSURCVHJhbnNh
Y3Rpb246Oml0ZXJhdGVDdXJzb3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyIik7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5pdGVyYXRl
Q3Vyc29yKG9wZXJhdGlvbiwgZGF0YSk7CiB9CkBAIC04NzMsNyArODczLDcgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXIKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3JPblNl
cnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNv
ck9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBjb21wbGV0ZUN1cnNvclJlcXVlc3QocmVx
dWVzdCwgcmVzdWx0RGF0YSk7CiB9CkBAIC04ODIsNyArODgyLDcgQEAgUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhl
Y1N0YXRlJgogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdl
dEFsbE9iamVjdFN0b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAt
OTAxLDcgKzkwMSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdl
dEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzIik7CiAgICAg
QVNTRVJUKGlzQWN0aXZlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0
ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9t
RXhlY1N0YXRlKCZzdGF0ZSkpOwogCkBAIC05MTksNyArOTE5LDcgQEAgUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwKIHZvaWQgSURCVHJhbnNhY3Rpb246OmdldEFsbFJlY29yZHNPblNlcnZlcihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldEFsbFJl
Y29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmdldEFsbFJlY29yZHNPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAg
bV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZ2V0QWxsUmVjb3JkcyhvcGVyYXRpb24sIGdl
dEFsbFJlY29yZHNEYXRhKTsKIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpnZXRBbGxSZWNvcmRzT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
biYgb3Blcgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyKElE
QlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2
ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1
bHRUeXBlOjpFcnJvcikgewogICAgICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVz
dCwgcmVzdWx0RGF0YSk7CkBAIC05NTQsNyArOTU0LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0
b3IKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQi
KTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFnZXRSZWNvcmREYXRhLmtl
eVJhbmdlRGF0YS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0
ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9t
RXhlY1N0YXRlKCZzdGF0ZSkpOwogCkBAIC05NzIsNyArOTcyLDcgQEAgUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9i
amVjdFN0b3IKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVl
KEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RH
ZXRWYWx1ZSIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChz
dGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpWYWx1ZSwgcmFuZ2UpOwog
fQpAQCAtOTgwLDcgKzk4MCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEdldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRlCiBSZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgSURC
SW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICByZXR1cm4gcmVxdWVzdEluZGV4UmVjb3JkKHN0YXRlLCBpbmRleCwgSW5kZXhlZERC
OjpJbmRleFJlY29yZFR5cGU6OktleSwgcmFuZ2UpOwogfQpAQCAtOTkwLDcgKzk5MCw3IEBAIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKEV4ZWNTdGF0
ZSYgc3RhdGUsIElEQkluZGV4JiBpCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0R2V0VmFsdWUiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJU
KCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKCZzdGF0ZSkpOwogCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZChFeGVjU3RhdGUmIHN0YXRlLCBJREJJ
bmRleCYgaQogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJHZXRSZWNvcmREYXRh
JiBnZXRSZWNvcmREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
Z2V0UmVjb3JkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5l
Y3Rpb25Qcm94eSgpLmdldFJlY29yZChvcGVyYXRpb24sIGdldFJlY29yZERhdGEpOwogfQpAQCAt
MTAxNiw3ICsxMDE2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIo
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW8KIHZvaWQgSURCVHJhbnNh
Y3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKHJl
c3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKSB7CiAgICAgICAgIGNvbXBs
ZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKQEAgLTEwNTEsNyArMTA1
MSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEV4ZWNT
dGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3JlJiBvCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQgKElEQk9iamVjdFN0b3JlKSIpOwogICAgIEFTU0VSVChp
c0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdlLmlzTnVsbCk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTEwNjksNyArMTA2
OSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEV4ZWNT
dGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RDb3VudCAoSURCSW5kZXgpIik7CiAgICAgQVNTRVJUKGlzQWN0aXZl
KCkpOwogICAgIEFTU0VSVCghcmFuZ2UuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEFTU0VS
VF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAg
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBz
dGF0ZSwgSURCSW5kZXgmIGluZGV4LAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNl
cnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpnZXRDb3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2RhdGFiYXNl
LT5jb25uZWN0aW9uUHJveHkoKS5nZXRDb3VudChvcGVyYXRpb24sIGtleVJhbmdlKTsKIH0KQEAg
LTEwOTMsNyArMTA5Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIo
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uCiB2b2lkIElEQlRyYW5z
YWN0aW9uOjpkaWRHZXRDb3VudE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpkaWRHZXRDb3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICByZXF1ZXN0
LnNldFJlc3VsdChyZXN1bHREYXRhLnJlc3VsdEludGVnZXIoKSk7CiAgICAgY29tcGxldGVOb25j
dXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERhdGEpOwpAQCAtMTEwNCw3ICsxMTA0LDcgQEAg
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKEV4ZWNT
dGF0ZSYgc3RhdGUsIElEQk9iamVjdFMKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OnJlcXVlc3REZWxldGVSZWNvcmQiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAg
QVNTRVJUKCFyYW5nZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChz
dGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRG
cm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogCkBAIC0xMTE5LDcgKzExMTksNyBAQCBSZWY8SURCUmVx
dWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0
ZSwgSURCT2JqZWN0Uwogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIo
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIGtleVJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fZGF0YWJhc2Ut
PmNvbm5lY3Rpb25Qcm94eSgpLmRlbGV0ZVJlY29yZChvcGVyYXRpb24sIGtleVJhbmdlKTsKIH0K
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZVJlY29yZE9u
U2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhCiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpkaWREZWxldGVSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlUmVjb3JkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAog
ICAgIHJlcXVlc3Quc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKICAgICBjb21wbGV0ZU5vbmN1cnNv
clJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKEV4ZWNT
dGF0ZSYgc3RhdGUsIElEQk9iagogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAK
QEAgLTExNTUsNyArMTE1NSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdENsZWFyT2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpjbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlm
aWVyKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RT
dG9yZU9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9u
UHJveHkoKS5jbGVhck9iamVjdFN0b3JlKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKIH0KQEAgLTExNjMsNyArMTE2Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNsZWFyT2Jq
ZWN0U3RvcmVPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZENsZWFyT2JqZWN0U3RvcmVPblNlcnZlciIpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgcmVxdWVzdC5zZXRSZXN1bHRUb1VuZGVmaW5lZCgpOwogICAgIGNv
bXBsZXRlTm9uY3Vyc29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKQEAgLTExNzUsNyAr
MTE3NSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRk
KEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3JlCiAgICAgQVNTRVJUKGlzQWN0aXZlKCkp
OwogICAgIEFTU0VSVCghaXNSZWFkT25seSgpKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUuaW5m
bygpLmF1dG9JbmNyZW1lbnQoKSB8fCBrZXkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VO
VVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogCkBAIC0xMTkxLDcgKzExOTEsNyBAQCBSZWY8
SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZChFeGVjU3RhdGUmIHN0
YXRlLCBJREJPYmplY3RTdG9yZQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIFJlZlB0cjxJREJL
ZXk+IGtleSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlJiBvdmVyd3JpdGVNb2RlKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlciIpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZv
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghaXNSZWFk
T25seSgpKTsKICAgICBBU1NFUlQodmFsdWUpOwogCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbgogICAgIG9wZXJhdGlvbi5zZXROZXh0UmVxdWVzdENhbkdvVG9T
ZXJ2ZXIoZmFsc2UpOwogCiAgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJvdGVjdGVkT3BlcmF0aW9u
ID0gUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+KG9wZXJhdGlvbiksIGtleURh
dGEgPSBJREJLZXlEYXRhKGtleS5nZXQoKSkuaXNvbGF0ZWRDb3B5KCksIG92ZXJ3cml0ZU1vZGVd
KGNvbnN0IElEQlZhbHVlJiBpZGJWYWx1ZSkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKGlkYlZhbHVlLmRhdGEoKS5kYXRhKCkpIHsKICAgICAgICAg
ICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLnB1dE9yQWRkKHByb3RlY3RlZE9wZXJh
dGlvbi5nZXQoKSwgV1RGTW92ZShrZXlEYXRhKSwgaWRiVmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwpA
QCAtMTI0Myw3ICsxMjQzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZl
cihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KIHZvaWQgSURCVHJh
bnNhY3Rpb246OmRpZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OmRpZFB1dE9yQWRkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChh
dXRvKiByZXN1bHQgPSByZXN1bHREYXRhLnJlc3VsdEtleSgpKQogICAgICAgICByZXF1ZXN0LnNl
dFJlc3VsdCgqcmVzdWx0KTsKQEAgLTEyNTUsNyArMTI1NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246OmRpZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVz
dWx0RGF0CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OmRlbGV0ZU9iamVjdFN0b3JlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lv
bkNoYW5nZSgpKTsKIAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9yZWZlcmVuY2VkT2JqZWN0
U3RvcmVMb2NrKTsKQEAgLTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRl
bGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3Jl
T25TZXJ2ZXIiKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
CiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZGVsZXRlT2JqZWN0U3RvcmUob3Bl
cmF0aW9uLCBvYmplY3RTdG9yZU5hbWUpOwogfQpAQCAtMTI4MiwxNCArMTI4MiwxNCBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24mCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RT
dG9yZU9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVy
Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRh
LnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpEZWxldGVPYmplY3RTdG9yZVN1Y2Nlc3MgfHwgcmVz
dWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6ZGVsZXRlSW5kZXgiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hh
bmdlKCkpOwogCiAgICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZGVsZXRlIGluZGV4
IG9wZXJhdGlvbjogJXMgKCUiIFBSSXU2NCAiKSIsIGluZGV4TmFtZS51dGY4KCkuZGF0YSgpLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIpOwpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbjo6ZGVsZXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0
aW9uJiBvcGVyYXQKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0
ZUluZGV4T25TZXJ2ZXIiKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZGVsZXRlSW5kZXgob3Bl
cmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7CiB9CkBAIC0xMzA4LDcg
KzEzMDgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdAogdm9pZCBJREJUcmFuc2FjdGlvbjo6
ZGlkRGVsZXRlSW5kZXhPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlSW5kZXhPblNl
cnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVzdWx0
RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5kZXhTdWNjZXNzIHx8IHJlc3Vs
dERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApAQCAtMTMxNiw4ICsx
MzE2LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQo
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CiAKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKKyAgICBBU1NFUlQoJm9wZXJhdGlvbi5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmdldChvcGVy
YXRpb24uaWRlbnRpZmllcigpKSA9PSAmb3BlcmF0aW9uKTsKICAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuZmlyc3QoKSA9PSAmb3BlcmF0aW9uKTsKIApA
QCAtMTMzMCwxNCArMTMzMCwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21w
bGV0ZWRPbkNsaWVudChJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJU
cmFuc2FjdGlvbjo6ZXN0YWJsaXNoT25TZXJ2ZXIoKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6ZXN0YWJsaXNoT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1f
ZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmVzdGFibGlzaFRyYW5zYWN0aW9uKCp0aGlzKTsK
IH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAg
ICAgaWYgKGlzRmluaXNoZWRPckZpbmlzaGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xMzQ3
LDcgKzEzNDcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphY3RpdmF0ZSgpCiAKIHZvaWQgSURC
VHJhbnNhY3Rpb246OmRlYWN0aXZhdGUoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fc3Rh
dGUgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpBY3RpdmUpCiAgICAgICAgIG1fc3Rh
dGUgPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkluYWN0aXZlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcAppbmRleCA5ZWIzZjI1YThkOTJhMGYzNzc1MTQ2OTk5ZWU4OTcxMjQ1YzEx
MjM5Li43NDJhNzdhNGQ5ODVjNTQwZWNkMmIxN2IzMjExNTAyZGFmY2YyZWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcApAQCAtNTE5LDEyICs1MTksMTIgQEAgdm9pZCBJREJDb25uZWN0
aW9uUHJveHk6OmZvcmdldEFjdGl2ZU9wZXJhdGlvbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFu
c2FjdGlvbk8KIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4K
IHZvaWQgcmVtb3ZlSXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQoSGFzaE1hcDxLZXlUeXBlLCBW
YWx1ZVR5cGU+JiBtYXApCiB7Ci0gICAgYXV0byBjdXJyZW50VGhyZWFkSUQgPSBjdXJyZW50VGhy
ZWFkKCk7CisgICAgYXV0byYgY3VycmVudFRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogCiAg
ICAgVmVjdG9yPEtleVR5cGU+IGtleXM7CiAgICAga2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1hcC5zaXplKCkpOwogICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtYXApIHsKLSAgICAgICAg
aWYgKGl0ZXJhdG9yLnZhbHVlLT5vcmlnaW5UaHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWRJRCkK
KyAgICAgICAgaWYgKCZpdGVyYXRvci52YWx1ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJmN1cnJlbnRU
aHJlYWQpCiAgICAgICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChpdGVyYXRvci5rZXkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBjNzI0NTMxYjJlMWU1OTYy
NDVjNTY5M2I1NjU1NWE5ZjY4ZGMzNmE1Li5lODU1MTI1MzFiNDY0ZDNkMzYxZTM0YjNiODlhYWMx
MzZkMGIxZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNTEsMTIgKzUxLDEy
IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhbnNh
Y3Rpb25PcGVyYXRpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQg
PT0gY3VycmVudFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBwZXJmb3JtKCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7
CisgICAgICAgIEFTU0VSVChtX29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogICAgICAgICBBU1NFUlQobV9wZXJmb3JtRnVuY3Rpb24pOwogICAgICAgICBtX3BlcmZv
cm1GdW5jdGlvbigpOwogICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9IHsgfTsKQEAgLTY0LDcg
KzY0LDcgQEAgY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHsKIAogICAgIHZvaWQgdHJhbnNpdGlvblRv
Q29tcGxldGVPblRoaXNUaHJlYWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAg
ICAgIEFTU0VSVChtX29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
ICAgICAgICBtX3RyYW5zYWN0aW9uLT5vcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihkYXRhLCAq
dGhpcyk7CiAgICAgfQogCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0
aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIGlmICht
X29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSkKKyAgICAgICAgaWYgKG1fb3JpZ2lu
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICAgICAgICAgICAgIHRyYW5zaXRp
b25Ub0NvbXBsZXRlT25UaGlzVGhyZWFkKGRhdGEpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIG1fdHJhbnNhY3Rpb24tPnBlcmZvcm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCp0aGlzLCAm
VHJhbnNhY3Rpb25PcGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRlT25UaGlzVGhyZWFkLCBk
YXRhKTsKQEAgLTgzLDcgKzgzLDcgQEAgY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHsKIAogICAgIHZv
aWQgZG9Db21wbGV0ZShjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICAgICAgQVNT
RVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAg
ICAgLy8gRHVlIHRvIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuIHRoZSBzZXJ2ZXIgc2VuZGluZyBh
biAib3BlcmF0aW9uIGNvbXBsZXRlIiBtZXNzYWdlIGFuZCB0aGUgY2xpZW50CiAgICAgICAgIC8v
IGZvcmNlZnVsbHkgYWJvcnRpbmcgYW4gb3BlcmF0aW9uLCBpdCdzIHVuYXZvaWRhYmxlIHRoYXQg
dGhpcyBtZXRob2QgbWlnaHQgYmUgY2FsbGVkIHR3aWNlLgpAQCAtMTAyLDcgKzEwMiw3IEBAIGNs
YXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAKICAgICBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAgIFRocmVh
ZElkZW50aWZpZXIgb3JpZ2luVGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpblRocmVh
ZElEOyB9CisgICAgVGhyZWFkJiBvcmlnaW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX29yaWdp
blRocmVhZC5nZXQoKTsgfQogCiAgICAgSURCUmVxdWVzdCogaWRiUmVxdWVzdCgpIHsgcmV0dXJu
IG1faWRiUmVxdWVzdC5nZXQoKTsgfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3MgVHJhbnNh
Y3Rpb25PcGVyYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IHsKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKSB7IHJldHVybiBt
X3RyYW5zYWN0aW9uLmdldCgpOyB9CiAgICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgaW5k
ZXhSZWNvcmRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleFJlY29yZFR5cGU7IH0KIAotICAg
IFRocmVhZElkZW50aWZpZXIgbV9vcmlnaW5UaHJlYWRJRCB7IGN1cnJlbnRUaHJlYWQoKSB9Owor
ICAgIFJlZjxUaHJlYWQ+IG1fb3JpZ2luVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICAg
ICBSZWZQdHI8SURCUmVxdWVzdD4gbV9pZGJSZXF1ZXN0OwogICAgIGJvb2wgbV9uZXh0UmVxdWVz
dENhbkdvVG9TZXJ2ZXIgeyB0cnVlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGQ5NTA0N2M5MDMwNTFjMGJjM2Q1ZTYz
OGIyN2I0NTg1NDI0YjA1MzIuLmExMTAxYWU4ZTg4Y2VjZWUxM2E3ZTc5ZTg2YzVjODgyNDFmMDFj
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKQEAgLTEwMCw5ICsxMDAsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLS8vIEZJWE1FOiBjaGVjayB0aGUgcHJv
cGVyIHdheSB0byByZWZlcmVuY2UgYW4gdW5kZWZpbmVkIHRocmVhZCBJRAotY29uc3QgaW50IFVu
ZGVmaW5lZFRocmVhZElkZW50aWZpZXIgPSAweGZmZmZmZmZmOwotCiBjb25zdCB1bnNpZ25lZCBN
YXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MzYsNyArMTMzLDYgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKICAgICAsIG1fbWVkaWFTZXNz
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9ldmVudFF1
ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKLSAgICAsIG1f
Z3JhcGhPd25lclRocmVhZChVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyKQogewogICAgIGNvbnN0
cnVjdENvbW1vbigpOwogCkBAIC0xNTIsNyArMTQ4LDYgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0Nv
bnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QKICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24o
UGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUo
c3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQotICAgICwgbV9ncmFw
aE93bmVyVGhyZWFkKFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIpCiB7CiAgICAgY29uc3RydWN0
Q29tbW9uKCk7CiAKQEAgLTY5NiwyMyArNjkxLDIzIEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpsb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykKICAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sg
aW4gcmVhbC10aW1lIGF1ZGlvIHRocmVhZC4KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgVGhyZWFkSWRlbnRpZmllciB0aGlzVGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAg
IFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogCi0gICAgaWYgKHRoaXNU
aHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1f
Z3JhcGhPd25lclRocmVhZCkgewogICAgICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGxvY2su
CiAgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEFjcXVpcmUgdGhlIGxvY2suCiAgICAgICAgIG1fY29udGV4dEdyYXBoTXV0ZXgubG9jaygp
OwotICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSB0aGlzVGhyZWFkOworICAgICAgICBtX2dy
YXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVhZDsKICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0g
dHJ1ZTsKICAgICB9CiB9CiAKIGJvb2wgQXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykKIHsKLSAgICBUaHJlYWRJZGVudGlmaWVyIHRoaXNUaHJlYWQgPSBjdXJyZW50
VGhyZWFkKCk7Ci0gICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gdGhpc1RocmVhZCA9PSBhdWRpb1Ro
cmVhZCgpOworICAgIFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAg
IGJvb2wgaXNBdWRpb1RocmVhZCA9ICZ0aGlzVGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CiAKICAg
ICAvLyBUcnkgdG8gY2F0Y2ggY2FzZXMgb2YgdXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQg
LSBpdCBzaG91bGQgdXNlIHJlZ3VsYXIgbG9jay4KICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8
fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CkBAIC03MjUsNyArNzIwLDcgQEAgYm9vbCBBdWRp
b0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAgIAogICAgIGJvb2wg
aGFzTG9jazsKICAgICAKLSAgICBpZiAodGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQp
IHsKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CiAgICAgICAg
IC8vIFRocmVhZCBhbHJlYWR5IGhhcyB0aGUgbG9jay4KICAgICAgICAgaGFzTG9jayA9IHRydWU7
CiAgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOwpAQCAtNzM0LDcgKzcyOSw3IEBAIGJv
b2wgQXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykKICAgICAgICAg
aGFzTG9jayA9IG1fY29udGV4dEdyYXBoTXV0ZXgudHJ5TG9jaygpOwogICAgICAgICAKICAgICAg
ICAgaWYgKGhhc0xvY2spCi0gICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSB0aGlzVGhy
ZWFkOworICAgICAgICAgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CiAKICAg
ICAgICAgbXVzdFJlbGVhc2VMb2NrID0gaGFzTG9jazsKICAgICB9CkBAIC03NDQsMjAgKzczOSwy
MCBAQCBib29sIEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCiAK
IHZvaWQgQXVkaW9Db250ZXh0Ojp1bmxvY2soKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9ncmFwaE93bmVyVGhyZWFkKTsKKyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFk
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKLSAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBVbmRl
ZmluZWRUaHJlYWRJZGVudGlmaWVyOworICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IG51bGxwdHI7
CiAgICAgbV9jb250ZXh0R3JhcGhNdXRleC51bmxvY2soKTsKIH0KIAogYm9vbCBBdWRpb0NvbnRl
eHQ6OmlzQXVkaW9UaHJlYWQoKSBjb25zdAogewotICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkg
PT0gbV9hdWRpb1RocmVhZDsKKyAgICByZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhyZWFkOjpj
dXJyZW50KCk7CiB9CiAKIGJvb2wgQXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIoKSBjb25zdAog
ewotICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gbV9ncmFwaE93bmVyVGhyZWFkOworICAg
IHJldHVybiBtX2dyYXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOwogfQogCiB2
b2lkIEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqIG5vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRl
eCA0NzRlNjg3YWJjODAwOThhN2VmYzM5NGQyNTQ4N2M0OGRmZTBlM2U0Li4yOGVkYmNiMjVmMmM0
NDcyZjgyYWQ0NmFhNjNiODVlZWI0ZTM2OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTE3OCw4ICsxNzgsOCBAQCBjbGFzcyBBdWRp
b0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8QXVkaW9DbwogICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6CiAg
ICAgLy8KICAgICAKLSAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZElkZW50aWZpZXIgdGhy
ZWFkKSB7IG1fYXVkaW9UaHJlYWQgPSB0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBu
b3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKLSAgICBUaHJlYWRJZGVudGlmaWVyIGF1ZGlvVGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQorICAgIHZvaWQgc2V0QXVkaW9U
aHJlYWQoVGhyZWFkJiB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklY
TUU6IGNoZWNrIGVpdGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQq
IGF1ZGlvVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQogICAgIGJvb2wg
aXNBdWRpb1RocmVhZCgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIg
dGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgpAQCAt
MzgxLDggKzM4MSwxMCBAQCBjbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9DbwogCiAgICAgLy8gR3JhcGgg
bG9ja2luZy4KICAgICBMb2NrIG1fY29udGV4dEdyYXBoTXV0ZXg7Ci0gICAgdm9sYXRpbGUgVGhy
ZWFkSWRlbnRpZmllciBtX2F1ZGlvVGhyZWFkIHsgMCB9OwotICAgIHZvbGF0aWxlIFRocmVhZElk
ZW50aWZpZXIgbV9ncmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4g
dGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBVbmRlZmluZWRU
aHJlYWRJZGVudGlmaWVyCisgICAgLy8gRklYTUU6IFVzaW5nIHZvbGF0aWxlIHNlZW1zIGluY29y
cmVjdC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
MzMyCisgICAgVGhyZWFkKiB2b2xhdGlsZSBtX2F1ZGlvVGhyZWFkIHsgbnVsbHB0ciB9OworICAg
IFRocmVhZCogdm9sYXRpbGUgbV9ncmFwaE93bmVyVGhyZWFkIHsgbnVsbHB0ciB9OyAvLyBpZiB0
aGUgbG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90
aGVyd2lzZSA9PSBudWxscHRyLgogCiAgICAgQXN5bmNBdWRpb0RlY29kZXIgbV9hdWRpb0RlY29k
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggNTExMjgxODUxODRmM2NjYjVhNWQwZjhlOTAwMzc2
MWU5YTM1MGM3Yy4uNjI5NzY2YzNiOGU3NWNhZTAxMTFhMzdhMzNjOGZmYmUyOGYxYjk3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6cmVuZGVyKEF1ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnUK
ICAgICAvLyBUaGlzIHdpbGwgdGFrZSBjYXJlIG9mIGFsbCBBdWRpb05vZGVzIGJlY2F1c2UgdGhl
eSBhbGwgcHJvY2VzcyB3aXRoaW4gdGhpcyBzY29wZS4KICAgICBEZW5vcm1hbERpc2FibGVyIGRl
bm9ybWFsRGlzYWJsZXI7CiAgICAgCi0gICAgY29udGV4dCgpLnNldEF1ZGlvVGhyZWFkKGN1cnJl
bnRUaHJlYWQoKSk7CisgICAgY29udGV4dCgpLnNldEF1ZGlvVGhyZWFkKFRocmVhZDo6Y3VycmVu
dCgpKTsKICAgICAKICAgICBpZiAoIWNvbnRleHQoKS5pc0luaXRpYWxpemVkKCkpIHsKICAgICAg
ICAgZGVzdGluYXRpb25CdXMtPnplcm8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggNzgzZjkyMWYxMjdhNWEzNGVjZWI1OGFjNmQ1
YWE4ZGYzMzZiMjFkYS4uYmRlY2ZhMDE2ZTNlNzBlNzE2NWNmMDgyM2M4NjYxNzkyYzRiYzFkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
QEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAKIHZvaWQgRGF0YWJh
c2U6OnBlcmZvcm1DbG9zZSgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRh
YmFzZVRocmVhZCgpLmdldFRocmVhZElEKCkpOworICAgIEFTU0VSVChkYXRhYmFzZVRocmVhZCgp
LmdldFRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICB7CiAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwpAQCAtNzY4LDcg
Kzc2OCw3IEBAIFNlY3VyaXR5T3JpZ2luRGF0YSBEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4oKQog
ewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQog
ICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9j
b250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwotICAgIGlmIChjdXJyZW50VGhyZWFk
KCkgPT0gZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgpKQorICAgIGlmIChkYXRhYmFzZVRo
cmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJu
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fZGF0YWJhc2VUaHJlYWRT
ZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VEZXRhaWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
RGV0YWlscy5oCmluZGV4IGE0ZTk5YWQwYmRmZjkwNmIwNmIzZDdmYjhjNDdkMzFjYzk0YTg0MjUu
LmRlZmU3MWEzZmU4NmI5YmVlMDU0ZDBmZGNiZjEzMWM0OWM0YWRjNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaApAQCAt
MzUsMTcgKzM1LDMzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VEZXRh
aWxzIHsKIHB1YmxpYzoKLSAgICBEYXRhYmFzZURldGFpbHMoKQotICAgICAgICA6IG1fZXhwZWN0
ZWRVc2FnZSgwKQotICAgICAgICAsIG1fY3VycmVudFVzYWdlKDApCi0gICAgICAgICwgbV9jcmVh
dGlvblRpbWUoMCkKLSAgICAgICAgLCBtX21vZGlmaWNhdGlvblRpbWUoMCkKKyAgICBEYXRhYmFz
ZURldGFpbHMoKSA9IGRlZmF1bHQ7CisKKyAgICBEYXRhYmFzZURldGFpbHMoY29uc3QgRGF0YWJh
c2VEZXRhaWxzJiBkZXRhaWxzKQorICAgICAgICA6IG1fbmFtZShkZXRhaWxzLm1fbmFtZSkKKyAg
ICAgICAgLCBtX2Rpc3BsYXlOYW1lKGRldGFpbHMubV9kaXNwbGF5TmFtZSkKKyAgICAgICAgLCBt
X2V4cGVjdGVkVXNhZ2UoZGV0YWlscy5tX2V4cGVjdGVkVXNhZ2UpCisgICAgICAgICwgbV9jdXJy
ZW50VXNhZ2UoZGV0YWlscy5tX2N1cnJlbnRVc2FnZSkKKyAgICAgICAgLCBtX2NyZWF0aW9uVGlt
ZShkZXRhaWxzLm1fY3JlYXRpb25UaW1lKQorICAgICAgICAsIG1fbW9kaWZpY2F0aW9uVGltZShk
ZXRhaWxzLm1fbW9kaWZpY2F0aW9uVGltZSkKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV90
aHJlYWRJRChUaHJlYWQ6OmN1cnJlbnRJRCgpKQorICAgICAgICAsIG1fdGhyZWFkKGRldGFpbHMu
bV90aHJlYWQuY29weVJlZigpKQogI2VuZGlmCiAgICAgewogICAgIH0KIAorICAgIERhdGFiYXNl
RGV0YWlscyYgb3BlcmF0b3I9KGNvbnN0IERhdGFiYXNlRGV0YWlscyYgZGV0YWlscykKKyAgICB7
CisgICAgICAgIG1fbmFtZSA9IGRldGFpbHMubV9uYW1lOworICAgICAgICBtX2Rpc3BsYXlOYW1l
ID0gZGV0YWlscy5tX2Rpc3BsYXlOYW1lOworICAgICAgICBtX2V4cGVjdGVkVXNhZ2UgPSBkZXRh
aWxzLm1fZXhwZWN0ZWRVc2FnZTsKKyAgICAgICAgbV9jdXJyZW50VXNhZ2UgPSBkZXRhaWxzLm1f
Y3VycmVudFVzYWdlOworICAgICAgICBtX2NyZWF0aW9uVGltZSA9IGRldGFpbHMubV9jcmVhdGlv
blRpbWU7CisgICAgICAgIG1fbW9kaWZpY2F0aW9uVGltZSA9IGRldGFpbHMubV9tb2RpZmljYXRp
b25UaW1lOworICAgICAgICBtX3RocmVhZCA9IGRldGFpbHMubV90aHJlYWQuY29weVJlZigpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgRGF0YWJhc2VEZXRhaWxzKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25l
ZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2Fn
ZSwgZG91YmxlIGNyZWF0aW9uVGltZSwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAg
IDogbV9uYW1lKGRhdGFiYXNlTmFtZSkKICAgICAgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlO
YW1lKQpAQCAtNTMsOSArNjksNiBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAgICAgICAs
IG1fY3VycmVudFVzYWdlKGN1cnJlbnRVc2FnZSkKICAgICAgICAgLCBtX2NyZWF0aW9uVGltZShj
cmVhdGlvblRpbWUpCiAgICAgICAgICwgbV9tb2RpZmljYXRpb25UaW1lKG1vZGlmaWNhdGlvblRp
bWUpCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICAsIG1fdGhyZWFkSUQoVGhyZWFkOjpjdXJyZW50
SUQoKSkKLSNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTY2LDE4ICs3OSwxOCBAQCBjbGFzcyBE
YXRhYmFzZURldGFpbHMgewogICAgIGRvdWJsZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2NyZWF0aW9uVGltZTsgfQogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1lOyB9CiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVh
ZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZElEOyB9CisgICAg
VGhyZWFkJiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogI2VuZGlm
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9kaXNwbGF5TmFt
ZTsKLSAgICB1aW50NjRfdCBtX2V4cGVjdGVkVXNhZ2U7Ci0gICAgdWludDY0X3QgbV9jdXJyZW50
VXNhZ2U7Ci0gICAgZG91YmxlIG1fY3JlYXRpb25UaW1lOwotICAgIGRvdWJsZSBtX21vZGlmaWNh
dGlvblRpbWU7CisgICAgdWludDY0X3QgbV9leHBlY3RlZFVzYWdlIHsgMCB9OworICAgIHVpbnQ2
NF90IG1fY3VycmVudFVzYWdlIHsgMCB9OworICAgIGRvdWJsZSBtX2NyZWF0aW9uVGltZSB7IDAu
MCB9OworICAgIGRvdWJsZSBtX21vZGlmaWNhdGlvblRpbWUgeyAwLjAgfTsKICNpZm5kZWYgTkRF
QlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFJlZjxUaHJlYWQ+IG1f
dGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmlu
ZGV4IDQ4ZTBjNDc2NzhjOGYyNjU1NDhkOTc1MTFhNTk5MDcxOTZhYTk5MjcuLmI0YWRjNjYyODA3
YzBkNTJlNDI3YWRmYTUxZmI3MjgxY2JkYTczYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTI1Nyw3ICsy
NTcsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFu
ZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OwogICAgICAgICBmb3IgKGF1
dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAg
ICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bv
c2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS50aHJlYWRJRCgpID09IFRocmVhZDo6
Y3VycmVudElEKCkgfHwgaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCgm
cHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSB8fCBpc01haW5UaHJlYWQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Bvc2VkRGF0
YWJhc2UtPmRldGFpbHMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRl
eCAxMTUyNGNkY2QyYWIzNDJmYjA5ZmU2MTlhYjQ2ZjU3OTIzY2U2OWVmLi4wMDc4MDBjOTVjZGY1
ODZhZDU0OGFjYzJkYzMyNzQ2MzQ1YTcxODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKICAgICAvLyBDbGVhbiB1
cCB0aGUgbGlzdCBvZiBhbGwgcGVuZGluZyB0cmFuc2FjdGlvbnMgb24gdGhpcyBkYXRhYmFzZSB0
aHJlYWQKICAgICBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3ItPnNodXRkb3duKCk7CiAKLSAgICBM
T0coU3RvcmFnZUFQSSwgIkFib3V0IHRvIGRldGFjaCB0aHJlYWQgJWkgYW5kIGNsZWFyIHRoZSBy
ZWYgdG8gRGF0YWJhc2VUaHJlYWQgJXAsIHdoaWNoIGN1cnJlbnRseSBoYXMgJWkgcmVmKHMpIiwg
bV90aHJlYWQtPmlkKCksIHRoaXMsIHJlZkNvdW50KCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAi
QWJvdXQgdG8gZGV0YWNoIHRocmVhZCAlcCBhbmQgY2xlYXIgdGhlIHJlZiB0byBEYXRhYmFzZVRo
cmVhZCAlcCwgd2hpY2ggY3VycmVudGx5IGhhcyAlaSByZWYocykiLCBtX3RocmVhZC5nZXQoKSwg
dGhpcywgcmVmQ291bnQoKSk7CiAKICAgICAvLyBDbG9zZSB0aGUgZGF0YWJhc2VzIHRoYXQgd2Ug
cmFuIHRyYW5zYWN0aW9ucyBvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgYW55IHRyYW5zYWN0aW9u
cyBhcmUgc3RpbGwgb3BlbiwgdGhleSBhcmUgcm9sbGVkIGJhY2sgYW5kIHdlIGRvbid0IGxlYXZl
IHRoZSBkYXRhYmFzZSBpbiBhbgogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQgc3RhdGUu
CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VP
cGVuKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0
YWJhc2VTZXRNdXRleCk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFk
LT5pZCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAg
ICBBU1NFUlQoIW1fb3BlbkRhdGFiYXNlU2V0LmNvbnRhaW5zKCZkYXRhYmFzZSkpOwogICAgIG1f
b3BlbkRhdGFiYXNlU2V0LmFkZCgmZGF0YWJhc2UpOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZv
aWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlJiBkYXRhYmFz
ZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CiAKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBBU1NFUlQo
bV90aHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxs
ZWQoKSB8fCBtX29wZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKICAgICBtX29w
ZW5EYXRhYmFzZVNldC5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCAzNDAwOWQxYjIy
YzQ0YzJlMDNlZWNiYjdmNDRlNGM3YzhkN2RhZDU4Li5hOGM1NzBiNmYzYWM0YjNhN2RkNDFjZjFi
MTI3NzJiZWJkOGM0N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIERhdGFiYXNl
VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNlVGhyZWFkPiB7CiAK
ICAgICB2b2lkIHJlY29yZERhdGFiYXNlT3BlbihEYXRhYmFzZSYpOwogICAgIHZvaWQgcmVjb3Jk
RGF0YWJhc2VDbG9zZWQoRGF0YWJhc2UmKTsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGdldFRocmVh
ZElEKCkgeyByZXR1cm4gbV90aHJlYWQgPyBtX3RocmVhZC0+aWQoKSA6IDA7IH0KKyAgICBUaHJl
YWQqIGdldFRocmVhZCgpIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKICAgICBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV90
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTcxZTBkYjc4
MWFjZTlmYzVlNzU0N2JlMTNiN2ZlNGIzNzY3MGI5Yi4uMTg3N2YzNGE4YzNiNjFjNjJkOGNjYmU1
MjFhNDdmNWIwYzRmNzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICBtX2Vycm9y
Q2FsbGJhY2tXcmFwcGVyLmNsZWFyKCk7CiAKICAgICAvLyBUaGUgbmV4dCBzdGVwcyBzaG91bGQg
YmUgZXhlY3V0ZWQgb25seSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgotICAgIGlmIChjdXJy
ZW50VGhyZWFkKCkgIT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgp
KQorICAgIGlmICgmVGhyZWFkOjpjdXJyZW50KCkgIT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJl
YWQoKS5nZXRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQg
U1FMaXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZC5jcHAKaW5kZXggMmVhOTNkZGYyYjU0NzU4MDY1ZjZkNjExM2EwZWRlYzFjMjNlZTVl
Yy4uZDAwZWMxZDk0MjQ4YmY5YWQ1MTU0OTE5MGNiZmNkOWM1ZjAwZGUxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25CYWNrZW5kLmNwcApAQCAtMzUzLDcgKzM1Myw3IEBAIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6
flNRTFRyYW5zYWN0aW9uQmFja2VuZCgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpk
b0NsZWFudXAoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5k
YXRhYmFzZSgpLmRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKG1f
ZnJvbnRlbmQuZGF0YWJhc2UoKS5kYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVk
ZWQoKTsKIApAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpj
b21wdXRlTmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlv
bkJhY2tlbmQ6Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFiYXNlVGhy
ZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKG1fZnJvbnRlbmQuZGF0YWJhc2UoKS5k
YXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0
IGJhY2sgaGVyZSwgc2luY2UgdGhpcwogICAgIC8vIGlzIG91ciBsYXN0IG9wcG9ydHVuaXR5IHRv
IGRvIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCA0OWUxNTM1MzZhNmEz
NTRhNmMzNmI1MTQ5MTA4OTczZGEzOWNiZGRjLi5jNmJkYTU1ZTUwMWFkNzcyY2UzOTAxZjgyOThk
OWI2YzliYjgxNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nh
bGxiYWNrRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEgewogICAgIGV4cGxp
Y2l0IEpTQ2FsbGJhY2tEYXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
ICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogI2lmbmRlZiBOREVCVUcKLSAgICAg
ICAgLCBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCisgICAgICAgICwgbV90aHJlYWQoVGhyZWFk
OjpjdXJyZW50KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBjbGFz
cyBKU0NhbGxiYWNrRGF0YSB7CiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7CiAjaWYgIVBM
QVRGT1JNKElPUykKLSAgICAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7
CisgICAgICAgIEFTU0VSVChtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
I2VuZGlmCiAgICAgfQogICAgIApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBKU0NhbGxiYWNrRGF0
YSB7CiBwcml2YXRlOgogICAgIEpTQzo6V2VhazxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxP
YmplY3Q7CiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWQ7Cisg
ICAgUmVmPFRocmVhZD4gbV90aHJlYWQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDBmNzRlNmMxNDAxZDhiYWRk
NGE0NTZiMTFjYzljZjk0YjdhODE0NzcuLjYzNTc3NjlkMzJkMzM3ODhmOWFhZDhiYWU1MjNjYzU4
NzRkMzk0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRl
KERvY3VtZW50JiBkb2N1bWVudCkKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIHsKICAgICAvLyBJbiBhIFdvcmtlciwg
dGhlIGV4ZWN1dGlvbiBzaG91bGQgYWx3YXlzIGhhcHBlbiBvbiBhIHdvcmtlciB0aHJlYWQuCi0g
ICAgQVNTRVJUKHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnRocmVhZElEKCkgPT0gY3VycmVu
dFRocmVhZCgpKTsKKyAgICBBU1NFUlQod29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkudGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIq
IHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDIxOTlkNGEx
ZTE2YWEzYmJlNjRlYzZhYzE0OTg5Y2NlZTQzYWI2NDEuLmI2ZTg1ZWE5OWM1ZGEwYzJkYTdmZjYy
NTcxZWY3NTlhNDQ1YzE4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQogdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogewog
ICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCp0aGlzKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAg
ICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgY3VycmVudFRocmVhZCgpID09
IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkSUQoKSkp
OworICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSkpOwogCiAgICAgbV9tZXNzYWdlUG9ydHMuYWRkKCZtZXNzYWdlUG9ydCk7CiB9CkBA
IC0xNzIsNyArMTcyLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVz
c2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB7
CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKnRoaXMpICYmIGlzTWFpblRocmVhZCgpKQotICAg
ICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBjdXJyZW50VGhyZWFkKCkg
PT0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWRJRCgp
KSk7CisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKSk7CiAKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXku
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuaAppbmRleCA2NDZk
ZmVmY2MwYjZkYTQ1Nzk0N2FhZDJkOGUzNWE4YWYyODcwMTQ1Li4xNmFlYTYwMWQxNGUyNjI4NzQ1
YjYwNDA0YmY3OWZkYmI2ZDM5OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
c291cmNlVXNhZ2VPdmVybGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVz
YWdlT3ZlcmxheS5oCkBAIC03OCw3ICs3OCw2IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5
IGZpbmFsIDogcHVibGljIFBhZ2VPdmVybGF5OjpDbGllbnQgewogICAgIEludFBvaW50IG1fZHJh
Z1BvaW50OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3Ro
cmVhZElEIHsgMCB9OwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2xheWVyOwogICAgIFJldGFp
blB0cjxDQUxheWVyPiBtX2NvbnRhaW5lckxheWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCBkMjA0Yzc2MjEw
YjMzNDA0ZGY0NGM0ZGEzZmNhN2FjY2Q3N2I0MmEyLi42MWZhYzNhZThjNTJkMzkxZDNkOTBiOGUx
NzJhMDRmMzkzOGNiM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTQwLDggKzQwLDcgQEAgU2Nyb2xsaW5nVGhyZWFkOjpT
Y3JvbGxpbmdUaHJlYWQoKQogCiBib29sIFNjcm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhyZWFk
KCkKIHsKLSAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBTY3JvbGxpbmdUaHJlYWQ6OnNpbmds
ZXRvbigpLm1fdGhyZWFkOwotICAgIHJldHVybiB0aHJlYWQgJiYgdGhyZWFkLT5pZCgpID09IGN1
cnJlbnRUaHJlYWQoKTsKKyAgICByZXR1cm4gU2Nyb2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKS5t
X3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVGhyZWFk
OjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgKaW5kZXggMzNmNjlhMmQxZWQ1ZWI4MDBjYmQ5NTAwNGYx
ODYyYWU4MThmMTMyNi4uNmMyNjE5YzJjOTk4ZDE5NjI0ZWFlZmEzY2YwN2I4N2Y1NzAyY2E2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCkBAIC05OCwzMyArOTgs
MzMgQEAgY2xhc3MgU3VwcGxlbWVudGFibGUgewogcHVibGljOgogICAgIHZvaWQgcHJvdmlkZVN1
cHBsZW1lbnQoY29uc3QgY2hhcioga2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U3VwcGxlbWVudDxUPj4g
c3VwcGxlbWVudCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERh
dGFGb3JUaHJlYWQobV90aHJlYWRJZCkpOworICAgICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFk
TG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSk7CiAgICAgICAgIEFTU0VSVCghbV9z
dXBwbGVtZW50cy5nZXQoa2V5KSk7CiAgICAgICAgIG1fc3VwcGxlbWVudHMuc2V0KGtleSwgV1RG
TW92ZShzdXBwbGVtZW50KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVTdXBwbGVtZW50KGNv
bnN0IGNoYXIqIGtleSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2Nh
bERhdGFGb3JUaHJlYWQobV90aHJlYWRJZCkpOworICAgICAgICBBU1NFUlQoY2FuQWNjZXNzVGhy
ZWFkTG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSk7CiAgICAgICAgIG1fc3VwcGxl
bWVudHMucmVtb3ZlKGtleSk7CiAgICAgfQogCiAgICAgU3VwcGxlbWVudDxUPiogcmVxdWlyZVN1
cHBsZW1lbnQoY29uc3QgY2hhcioga2V5KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vz
c1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZElkKSk7CisgICAgICAgIEFTU0VSVChj
YW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAg
ICAgcmV0dXJuIG1fc3VwcGxlbWVudHMuZ2V0KGtleSk7CiAgICAgfQogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogcHJvdGVjdGVkOgotICAgIFN1cHBsZW1lbnRhYmxlKCkgOiBtX3RocmVhZElkKGN1
cnJlbnRUaHJlYWQoKSkgeyB9CisgICAgU3VwcGxlbWVudGFibGUoKSA9IGRlZmF1bHQ7CiAjZW5k
aWYKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5p
cXVlX3B0cjxTdXBwbGVtZW50PFQ+PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFN1cHBsZW1lbnRN
YXA7CiAgICAgU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwogI2lmICFBU1NFUlRfRElTQUJM
RUQKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSWQ7CisgICAgUmVmPFRocmVhZD4gbV90
aHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaW1lci5jcHAKaW5kZXggOWNjYjQwMjFmNTAzMzc4YTg2MjI0ZTRhNmQ3NTFkYTQ4YTkzMjY3
Ny4uODdkNGU2OTBmNjE2NDBiM2M1ODI4MWFiYzI5YzY0MTllMDFiNzI5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RpbWVyLmNwcApAQCAtMTg2LDkgKzE4Niw2IEBAIGlubGluZSBib29sIFRpbWVySGVh
cExlc3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiBhLCBjb25zdCBU
aW1lCiAvLyAtLS0tLS0tLS0tLS0tLS0tCiAKIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSNpZm5k
ZWYgTkRFQlVHCi0gICAgOiBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCi0jZW5kaWYKIHsKIH0K
IApAQCAtMjAzLDcgKzIwMCw3IEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAKIHZvaWQgVGlt
ZXJCYXNlOjpzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50
ZXJ2YWwpCiB7Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZCht
X3RocmVhZCkpOworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQo
bV90aHJlYWQuZ2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZh
bDsKICAgICBzZXROZXh0RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBuZXh0RmlyZUlu
dGVydmFsKTsKQEAgLTIxMSw3ICsyMDgsNyBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25k
cyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogCiB2b2lkIFRpbWVy
QmFzZTo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRo
cmVhZChtX3RocmVhZCkpOworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JU
aHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwX3M7CiAg
ICAgc2V0TmV4dEZpcmVUaW1lKE1vbm90b25pY1RpbWUgeyB9KTsKQEAgLTM2Miw3ICszNTksNyBA
QCB2b2lkIFRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGlt
ZSkKIAogdm9pZCBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIG5ld1Rp
bWUpCiB7Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3Ro
cmVhZCkpOworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90
aHJlYWQuZ2V0KCkpKTsKICAgICBBU1NFUlQoIW1fd2FzRGVsZXRlZCk7CiAKICAgICBpZiAobV91
bmFsaWduZWROZXh0RmlyZVRpbWUgIT0gbmV3VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmlu
ZGV4IGUzZmQ3Yjk2Y2Q5M2JmOWZhMjcwNmRiYzRiNTgwN2I1NzBlZDU2YzUuLjUyYzczOTg0NDRj
NjVlNWU5MDlhZGMwNTg3NDQyYjM2MjNhZDZlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApA
QCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgVmVjdG9yPFRpbWVyQmFz
ZSo+KiBtX2NhY2hlZFRocmVhZEdsb2JhbFRpbWVySGVhcCB7IG51bGxwdHIgfTsKIAogI2lmbmRl
ZiBOREVCVUcKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOworICAgIFJlZjxUaHJlYWQ+
IG1fdGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICAgICBib29sIG1fd2FzRGVsZXRlZCB7
IGZhbHNlIH07CiAjZW5kaWYKIApAQCAtMTQwLDkgKzE0MCw5IEBAIGlubGluZSBib29sIFRpbWVy
QmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlzIGluIHRl
cm1zIG9mIFVTRShXRUJfVEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPUykuCiAjaWYgIVBM
QVRGT1JNKElPUykKLSAgICBBU1NFUlQobV90aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAg
ICBBU1NFUlQobV90aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbHNlCi0g
ICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpIHx8IHB0aHJlYWRfbWFpbl9ucCgpIHx8IG1f
dGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVu
dCgpIHx8IHB0aHJlYWRfbWFpbl9ucCgpIHx8IG1fdGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxib29sPihtX25leHRGaXJlVGltZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXgg
MWYyYjVmNWQwYmE4NTFiMjEzOTU0Zjg0ODQ3ZDkzYTQyYjBhNTlmMi4uNjExZWRmYjQ3MmM4Yjll
N2IwNTQyZDY4ZTIwZWY5ZTc1YmIwZDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAt
MTIyNCw4ICsxMjI0LDggQEAgc3RhdGljIGJvb2wgc2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVl
ZGVkKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogI2lmbmRlZiBOREVCVUcKICAgICAvLyBU
aGlzIGNhY2hlIGlzIG5vdCB0aHJlYWQgc2FmZSBzbyB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBp
cyB0aGVyZSB0bwogICAgIC8vIG1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxs
ZWQgZnJvbSB0aGUgc2FtZSB0aHJlYWQuCi0gICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaW5p
dFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gaW5pdFRocmVhZElkKTsKKyAgICBzdGF0aWMgVGhyZWFkKiBpbml0VGhyZWFkID0gJlRocmVh
ZDo6Y3VycmVudCgpOworICAgIEFTU0VSVChpbml0VGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0
cmluZz4+IGtub3duRmFtaWxpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggMWNjYTBjY2RhODIxYWE1MmVkNWUwNTQ1MWYxZjFkNWYx
Y2FjODdjYi4uYjIzZGFjMjliNGQ3NDlmY2ZjY2IyMzM3NjA5NWZlZjIwYjVlODBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtNTgs
OSArNTgsMTAgQEAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkoKQogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY29tcG9zaXRvciwg
VGV4dHVyZU1hcHBlckxheWVyKiB0YXJnZXRMYXllcikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAg
bV9jb21wb3NpdG9yVGhyZWFkSUQgPSBtX2NvbXBvc2l0b3JUaHJlYWRJRCA/IG1fY29tcG9zaXRv
clRocmVhZElEIDogV1RGOjpjdXJyZW50VGhyZWFkKCk7CisgICAgaWYgKCFtX2NvbXBvc2l0b3JU
aHJlYWQpCisgICAgICAgIG1fY29tcG9zaXRvclRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsK
ICNlbmRpZgotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRU
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogICAgIEFTU0VSVChjb21wb3NpdG9yKTsKICAgICBBU1NFUlQodGFyZ2V0TGF5ZXIp
OwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CkBAIC04MCw3ICs4MSw3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhy
ZWFkKENvbXBvc2l0b3IqIGNvCiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdU
Rjo6Y3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgRnVuY3Rpb248dm9pZCgpPiB1cGRhdGVGdW5jdGlvbjsK
ICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CkBAIC0xMjAsNyArMTIx
LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpwdXNoTmV4dEJ1ZmZl
cihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
Z2V0QXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdMaW50IGludGVybmFsRm9y
bWF0KQogewogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwotICAgIEFTU0VSVChtX2NvbXBv
c2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY29t
cG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYXZhaWxhYmxlQnVmZmVyOwogCiAg
ICAgYXV0byBidWZmZXJzID0gV1RGTW92ZShtX3VzZWRCdWZmZXJzKTsKQEAgLTE0NCw3ICsxNDUs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5OjphcHBlbmRUb1VudXNlZEJ1ZmZlcnMoc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fbG9jay5p
c0hlbGQoKSk7Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVu
dFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAg
ICBzY2hlZHVsZVJlbGVhc2VVbnVzZWRCdWZmZXJzKCk7CiB9CkBAIC0xNzIsNyArMTczLDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVy
c1RpbWVyRmlyZWQoKQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3
YXBCdWZmZXIoKQogewotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1
cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgaWYgKCFt
X3RhcmdldExheWVyIHx8ICFtX3BlbmRpbmdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IGQwMDRjYzgw
ZmU4NjVjYjczYzJlMWQ0YzhjYmZjZjI2Y2NlMjliODYuLmYzY2JkZjRlOGI0MzhiYWMzM2M1Y2Zm
MzM0NzNhZDQ0ZDU4YjNlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuaApAQCAtOTEsNyArOTEsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRleHR1cmVNYXBwZQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5Pj4gbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyOwogCiAjaWZuZGVmIE5ERUJV
RwotICAgIFRocmVhZElkZW50aWZpZXIgbV9jb21wb3NpdG9yVGhyZWFkSUQgeyAwIH07CisgICAg
UmVmUHRyPFRocmVhZD4gbV9jb21wb3NpdG9yVGhyZWFkOwogI2VuZGlmCiAKICAgICB2b2lkIGNv
bXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggODBlNDU0MDg0YzgwZTA2YTIx
OGJmN2YwYjBlYWRjMjE2OTkxMzMzYy4uOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQw
N2E5OGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJD
b3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbQpAQCAtNjU2LDcgKzY1Niw2IEBAIHZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICph
cmcpCiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIFdlYlRocmVhZCBhbmQgdGhlIG1h
aW4gdGhyZWFkIHNoYXJlIHRoZSBzYW1lIFRocmVhZEdsb2JhbERhdGEgb2JqZWN0cy4KICAgICBX
ZWJDb3JlOjp0aHJlYWRHbG9iYWxEYXRhKCkuc2V0V2ViQ29yZVRocmVhZERhdGEoKTsKLSAgICBp
bml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcigpOwogCiAjaWYgSEFWRShQVEhSRUFEX1NFVE5B
TUVfTlApCiAgICAgcHRocmVhZF9zZXRuYW1lX25wKCJXZWJUaHJlYWQiKTsKQEAgLTc2Niw3ICs3
NjUsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAgICAgICAgIHN0YXJ0dXBDb25k
aXRpb24ud2FpdChzdGFydHVwTG9jayk7CiAgICAgfQogCi0gICAgaW5pdGlhbGl6ZUFwcGxpY2F0
aW9uVUlUaHJlYWRJZGVudGlmaWVyKCk7CisgICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJl
YWQoKTsKIH0KIAogc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2sgKHB0aHJlYWRfY29u
ZF90ICpjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9jaywgQ0ZBYnNvbHV0ZVRpbWUgaW50
ZXJ2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNw
cAppbmRleCA5ODdiMzQ2YWViOTE3MjM4NDhmMDM2NzRhODFhOTE3MmNhNzgzMzYxLi4yMDk1ZWU4
MTE4YWExMjAyNjM3NTdhMjMzY2Q5NjY0NzlhZjU5OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29s
IFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgZm9yV2Vi
U1FMRGF0YWJhc2UpCiAgICAgfQogCiAgICAgaWYgKGlzT3BlbigpKQotICAgICAgICBtX29wZW5p
bmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgICAgIG1fb3BlbmluZ1RocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKICAgICBlbHNlCiAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9
ICJzcWxpdGVfb3BlbiByZXR1cm5lZCBudWxsIjsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQg
U1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkKIHsKICAgICBpZiAobV9kYikgewogICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBiZWluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBKUyBH
Qy4gPHJkYXI6Ly9wcm9ibGVtLzU3Mzk4MTg+Ci0gICAgICAgIC8vIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9vcGVuaW5nVGhyZWFkKTsKKyAgICAgICAgLy8gQVNTRVJUKG1fb3BlbmluZ1Ro
cmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAgICBzcWxpdGUzKiBkYiA9IG1fZGI7
CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9z
aW5nTXV0ZXgpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3Nl
KCkKICAgICAgICAgc3FsaXRlM19jbG9zZShkYik7CiAgICAgfQogCi0gICAgbV9vcGVuaW5nVGhy
ZWFkID0gMDsKKyAgICBtX29wZW5pbmdUaHJlYWQgPSBudWxscHRyOwogICAgIG1fb3BlbkVycm9y
ID0gU1FMSVRFX0VSUk9SOwogICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9IENTdHJpbmcoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggNzE3
MmU0ZTEzMzY2M2FjZTBmODljNTQ0ZjFmMGYxMDY2NGJiOTBjMC4uZGViYjdjOGNhMTEzN2U4NWIy
ZTIwNWYxNzMyZGVmZGM0ZTg0YWEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBTUUxpdGVEYXRhYmFz
ZSB7CiAgICAgc3FsaXRlMyogc3FsaXRlM0hhbmRsZSgpIGNvbnN0CiAgICAgewogI2lmICFQTEFU
Rk9STShJT1MpCi0gICAgICAgIEFTU0VSVChtX3NoYXJhYmxlIHx8IGN1cnJlbnRUaHJlYWQoKSA9
PSBtX29wZW5pbmdUaHJlYWQgfHwgIW1fZGIpOworICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8
fCBtX29wZW5pbmdUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8ICFtX2RiKTsKICNlbmRp
ZgogICAgICAgICByZXR1cm4gbV9kYjsKICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3Mg
U1FMaXRlRGF0YWJhc2UgewogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9y
aXplcjsKIAogICAgIExvY2sgbV9sb2NraW5nTXV0ZXg7Ci0gICAgVGhyZWFkSWRlbnRpZmllciBt
X29wZW5pbmdUaHJlYWQgeyAwIH07CisgICAgUmVmUHRyPFRocmVhZD4gbV9vcGVuaW5nVGhyZWFk
IHsgbnVsbHB0ciB9OwogCiAgICAgTG9jayBtX2RhdGFiYXNlQ2xvc2luZ011dGV4OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg4NjFlYjgx
ZDU2ZWY5OGE4MzMxZTI4NDRjZjIwMGE5OGY5OGYxNWEuLmJmNzQ1MmVjYzZjM2M5YmVhNjFjZTVm
NGJlMDY4MzY5NGZhZWYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjCiAK
IFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gdGhyZWFkKCkudGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKHRocmVh
ZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3BlcmZvcm1hbmNl
ID0gbnVsbHB0cjsKICAgICBtX2NyeXB0byA9IG51bGxwdHI7CkBAIC0zMjksNyArMzI5LDcgQEAg
dm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb24KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNDb250
ZXh0VGhyZWFkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IHRocmVh
ZCgpLnRocmVhZElEKCk7CisgICAgcmV0dXJuIHRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKTsKIH0KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZv
cmJpZGRlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCmluZGV4IGI1ZGQzOGE1NjBhMjRhNWQyN2MyN2NiNTUwYWIxODY4MTczZjdk
NzkuLmVkMDI0YTI0N2VhMDQyMjU0YmE1YmUzZTg2YTM0MzJhYjc0YjI0MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01OSw3ICs1
OSw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXIm
IHdvcmtlck9iamVjdCkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAg
ICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNN
YWluVGhyZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWRJRCgp
KSk7CisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLnRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkpOwogCiAg
ICAgLy8gTm9ib2R5IG91dHNpZGUgdGhpcyBjbGFzcyByZWYgY291bnRzIHRoaXMgb2JqZWN0LiBU
aGUgb3JpZ2luYWwgcmVmCiAgICAgLy8gaXMgYmFsYW5jZWQgYnkgdGhlIGRlcmVmIGluIHdvcmtl
ckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwuCkBAIC02OSw3ICs2OSw3IEBAIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogewogICAgIEFTU0VSVCghbV93
b3JrZXJPYmplY3QpOwogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhy
ZWFkKCkudGhyZWFkSUQoKSkpOworICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCpt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGJvb2wgaXNPbmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFn
cywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHAKaW5kZXggMjM2MWJmNzQ1YWFiNTRmNTkxMzYwNzM5Mjc2OWI2MmFkYjNlMGJj
ZS4uNTZmYWY3ZDU0ZWUyOWZjYjhhMzEyNWNmYmVlYjVhNWQ0ODAxMDc1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgTWVzc2Fn
ZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyR2xvYmFsU2Nv
cGUqIGNvbnRleHQsIGNvbnMKIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6
cnVuSW5Nb2RlKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBNb2RlUHJlZGljYXRl
JiBwcmVkaWNhdGUsIFdhaXRNb2RlIHdhaXRNb2RlKQogewogICAgIEFTU0VSVChjb250ZXh0KTsK
LSAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFk
KCkpOworICAgIEFTU0VSVChjb250ZXh0LT50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25D
YWxsYmFjayB0aW1lckFkZGVkVGFzayA9IFdURjo6Y3JlYXRlU2hhcmVkVGFzazxKU0M6OkpTUnVu
TG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIGhlcmUsIHdlIGp1c3Qgd2FudCB0byBsb29wIGFy
b3VuZCBydW5Jbk1vZGUKQEAgLTIyMSw3ICsyMjEsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29u
cwogdm9pZCBXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2VyR2xvYmFsU2NvcGUq
IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVChjb250ZXh0LT50
aHJlYWQoKS50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRl
eHQtPnRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJU
KG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA0OWU1YzRiYmJmNTJiZGNhODE1N2MxYzA3
ZmIxOTZlOGRlYmVjOTZiLi43YzQyZTI5M2RhMzQ2NGI1Yzk3ZGE1NDYxOTIwNDQ1NzQ1NzBmOGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTY2LDcgKzY2LDcgQEAg
Y2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlclRo
cmVhZD4gewogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmIGV2YWx1YXRlQ2FsbGJhY2spOwogICAgIHZvaWQgc3RvcChXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJiB0ZXJtaW5hdGVkQ2FsbGJhY2spOwogCi0gICAgVGhyZWFkSWRl
bnRpZmllciB0aHJlYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkID8gbV90aHJlYWQtPmlk
KCkgOiAwOyB9CisgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5n
ZXQoKTsgfQogICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7
IH0KICAgICBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBjb25zdCB7IHJl
dHVybiBtX3dvcmtlckxvYWRlclByb3h5OyB9CiAgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29y
a2VyRGVidWdnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94eTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCmluZGV4IDE1ZDBmZWNjNzNmM2Y1OTFkYmY5YzIwZjA3MWE1YWNj
NGRhMTA2MTQuLjU2ZWNiYzQwNTRiODI4NzZmZWIyMTNhNmQxNzYzMGUwZWI1Yjg0NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
U2VydmljZVdvcmtlckNvbnRhaW5lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LAog
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6flNlcnZpY2VXb3JrZXJDb250YWluZXIoKQogewogI2lm
bmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFk
KCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0
IFVSTCYKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IoUmVmPFNlcnZp
Y2VXb3JrZXJKb2I+JiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhy
ZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVCht
X3N3Q29ubmVjdGlvbik7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpzdGFydE1lc3NhZ2VzKCkKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9i
RmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IEV4Y2VwdGlv
biYgZXhjZXB0aW9uKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0
cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChhdXRvKiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VX
b3JrZXJKb2ImIGpvYiwgY29uc3QKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1
bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhy
ZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChhdXRv
KiByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQpAQCAtMzIw
LDcgKzMyMCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9G
aXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnCiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBq
b2IsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSwgU2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsKICNpZm5kZWYgTkRFQlVHCi0g
ICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NF
UlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlm
CiAKICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CkBA
IC0zNjAsNyArMzYwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZl
ZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLAogdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNl
V29ya2VySm9iJiBqb2IsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCiB7CiAjaWZuZGVmIE5E
RUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
ICNlbmRpZgogCiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpv
Yl0gewpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9i
UmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtl
ckpvYiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIExPRyhTZXJ2aWNlV29ya2Vy
LCAiU2V2aWNlV29ya2VyQ29udGFpbmVyICVwIHN0YXJ0aW5nIHNjcmlwdCBmZXRjaCBmb3Igam9i
ICVzIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFy
dFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2Im
IGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3Jl
YXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAg
TE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAgZmluaXNoZWQgZmV0
Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiBqb2IsIGNvbgogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5n
U2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikKIHsKICNpZm5kZWYgTkRFQlVH
Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vu
ZGlmCiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBm
YWlsZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigp
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYgam9iLCBjb25zdAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JEaWRG
aW5pc2goU2VydmljZVdvcmtlckpvYiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NF
UlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2Ny
ZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAg
IGF1dG8gdGFrZW4gPSBtX2pvYk1hcC50YWtlKGpvYi5pZGVudGlmaWVyKCkpOwpAQCAtNDcwLDcg
KzQ3MCw3IEBAIFNXQ2xpZW50Q29ubmVjdGlvbiYgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5z
dXJlU1dDbGllbnRDb25uZWN0aW9uKCkKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRk
UmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsK
ICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5hZGRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIo
KSk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRS
ZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmEKIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1f
Y3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBtX3N3
Q29ubmVjdGlvbi0+cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKHJlZ2lz
dHJhdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24mIHJlZ2lzCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmly
ZUNvbnRyb2xsZXJDaGFuZ2VFdmVudCgpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRp
b25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgaWYg
KG1faXNTdG9wcGVkKQpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c3RvcCgpCiBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpjb250ZXh0SWRlbnRpZmllcigpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3Jl
YXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAg
QVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCAyZDlh
OWYwNDZhYmI0YWNlZjAzNjE3OThmNjNmMTYxODhkODI3ZDAwLi5lYTEyZThjNTk0ZGZiNDMzYzM2
NDhkMzVjZjVmOTE1NjE5YzlhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTExOSw3ICsxMTksNyBA
QCBjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBBYwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24qPiBtX3JlZ2lzdHJh
dGlvbnM7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX2NyZWF0aW9u
VGhyZWFkIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRo
cmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRleCBmNzNm
OTA3MmEwM2MzYzA1ZTMyNjE1NDdhODg5MWFkYTk1NzI0MDk5Li40YTg4MWQ3N2I1OGY5ODczYTY1
Yjg1MDc1ZDBkZDllOWY5MDVlYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCkBAIC00NywxMiArNDcsMTIgQEAgU2Vydmlj
ZVdvcmtlckpvYjo6U2VydmljZVdvcmtlckpvYihTZXJ2aWNlV29ya2VySm9iQ2xpZW50JiBjbGll
bnQsIFJlZjxEZWZlcnJlZFAKIAogU2VydmljZVdvcmtlckpvYjo6flNlcnZpY2VXb3JrZXJKb2Io
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7Cisg
ICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4
Y2VwdGlvbiYgZXhjZXB0aW9uKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9j
cmVhdGlvblRocmVhZCk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1fY29t
cGxldGVkID0gdHJ1ZTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpm
YWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSYmIGRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3Rp
ZnlXaGVuUmVzb2x2ZWQpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0
aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21wbGV0
ZWQgPSB0cnVlOwpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29s
dmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmCiAKIHZv
aWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoYm9v
bCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBt
X2NvbXBsZXRlZCA9IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpv
Yjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJhdGlvblJl
c3VsCiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaCgpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VS
VCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jbGllbnQtPnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2Io
KnRoaXMpOwpAQCAtODcsNyArODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2Ny
aXB0RmV0Y2goKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhy
ZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRl
ZCk7CiAKICAgICAvLyBGSVhNRTogV29ya2VyU2NyaXB0TG9hZGVyIGlzIHRoZSB3cm9uZyBsb2Fk
ZXIgY2xhc3MgdG8gdXNlIGhlcmUsIGJ1dCB0aGVyZSdzIG5vdGhpbmcgZWxzZSBiZXR0ZXIgcmln
aHQgbm93LgpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2Ny
aXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBT
ZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogICAg
IEFTU0VSVChtX3NjcmlwdExvYWRlcik7CiAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJgogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6Om5vdGlmeUZpbmlzaGVkKCkK
IHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAg
IEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAg
ICAgQVNTRVJUKG1fc2NyaXB0TG9hZGVyKTsKICAgICAKICAgICBpZiAoIW1fc2NyaXB0TG9hZGVy
LT5mYWlsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYi5oCmluZGV4IGMzMGE0ZmI4NDg5NzM4OWMxNWI2MjdmMWRmOWRlZmUyODkxNzll
NGMuLjljNDI4ZTc3MjAwMzQyOTkxYWYzMTczYTI5ZTA0MDEyOTVkNTI5YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaApAQCAtOTAs
NyArOTAsNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VySm9iIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFNlcnZpY2VXb3JrZXJKb2I+LCBwdWJsaWMgVwogICAgIFJlc291cmNlUmVzcG9uc2Ug
bV9sYXN0UmVzcG9uc2U7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgVGhyZWFkSWRlbnRp
ZmllciBtX2NyZWF0aW9uVGhyZWFkIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVh
ZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCBhMzdkNjE1MTZhNjI4MDBmNWE0MzFiODkxYzcyNzM0ZjA5MDM1YmNj
Li40ZWRhMzJhYTc3OTYwMzliMzY4OWE0NTEzNzdhYTg4OWZhYmViMmQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CkBAIC0zNDAsMTMgKzM0MCwxMyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBpbnQgZ2xvYmFsRGVzY3JpcHRv
ciA9IDA7Ci1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBsaWJ4bWxMb2FkZXJUaHJlYWQgPSAwOwor
c3RhdGljIFRocmVhZCogbGlieG1sTG9hZGVyVGhyZWFkIHsgbnVsbHB0ciB9OwogCiBzdGF0aWMg
aW50IG1hdGNoRnVuYyhjb25zdCBjaGFyKikKIHsKICAgICAvLyBPbmx5IG1hdGNoIGxvYWRzIGlu
aXRpYXRlZCBkdWUgdG8gdXNlcyBvZiBsaWJ4bWwyIGZyb20gd2l0aGluIFhNTERvY3VtZW50UGFy
c2VyIHRvIGF2b2lkCiAgICAgLy8gaW50ZXJmZXJpbmcgd2l0aCBjbGllbnQgYXBwbGljYXRpb25z
IHRoYXQgYWxzbyB1c2UgbGlieG1sMi4gIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MzUzCi0gICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRD
YWNoZWRSZXNvdXJjZUxvYWRlciAmJiBjdXJyZW50VGhyZWFkKCkgPT0gbGlieG1sTG9hZGVyVGhy
ZWFkOworICAgIHJldHVybiBYTUxEb2N1bWVudFBhcnNlclNjb3BlOjpjdXJyZW50Q2FjaGVkUmVz
b3VyY2VMb2FkZXIgJiYgbGlieG1sTG9hZGVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsK
IH0KIAogY2xhc3MgT2Zmc2V0QnVmZmVyIHsKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgYm9v
bCBzaG91bGRBbGxvd0V4dGVybmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHN0YXRpYyB2b2lkKiBv
cGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgQVNTRVJUKFhNTERvY3VtZW50UGFyc2Vy
U2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlcik7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJlYWQpOworICAgIEFTU0VSVCgmVGhyZWFkOjpjdXJy
ZW50KCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkKTsKIAogICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7
CiAKQEAgLTQ5NSwxNyArNDk1LDIwIEBAIHN0YXRpYyB2b2lkIGVycm9yRnVuYyh2b2lkKiwgY29u
c3QgY2hhciosIC4uLikKIH0KICNlbmRpZgogCi1zdGF0aWMgYm9vbCBkaWRJbml0ID0gZmFsc2U7
Ci0KLVJlZjxYTUxQYXJzZXJDb250ZXh0PiBYTUxQYXJzZXJDb250ZXh0OjpjcmVhdGVTdHJpbmdQ
YXJzZXIoeG1sU0FYSGFuZGxlclB0ciBoYW5kbGVycywgdm9pZCogdXNlckRhdGEpCitzdGF0aWMg
dm9pZCBpbml0aWFsaXplWE1MUGFyc2VyKCkKIHsKLSAgICBpZiAoIWRpZEluaXQpIHsKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShmbGFnLCBbJl0g
ewogICAgICAgICB4bWxJbml0UGFyc2VyKCk7CiAgICAgICAgIHhtbFJlZ2lzdGVySW5wdXRDYWxs
YmFja3MobWF0Y2hGdW5jLCBvcGVuRnVuYywgcmVhZEZ1bmMsIGNsb3NlRnVuYyk7CiAgICAgICAg
IHhtbFJlZ2lzdGVyT3V0cHV0Q2FsbGJhY2tzKG1hdGNoRnVuYywgb3BlbkZ1bmMsIHdyaXRlRnVu
YywgY2xvc2VGdW5jKTsKLSAgICAgICAgbGlieG1sTG9hZGVyVGhyZWFkID0gY3VycmVudFRocmVh
ZCgpOwotICAgICAgICBkaWRJbml0ID0gdHJ1ZTsKLSAgICB9CisgICAgICAgIGxpYnhtbExvYWRl
clRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICB9KTsKK30KKworUmVmPFhNTFBhcnNl
ckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZVN0cmluZ1BhcnNlcih4bWxTQVhIYW5k
bGVyUHRyIGhhbmRsZXJzLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBpbml0aWFsaXplWE1MUGFy
c2VyKCk7CiAKICAgICB4bWxQYXJzZXJDdHh0UHRyIHBhcnNlciA9IHhtbENyZWF0ZVB1c2hQYXJz
ZXJDdHh0KGhhbmRsZXJzLCAwLCAwLCAwLCAwKTsKICAgICBwYXJzZXItPl9wcml2YXRlID0gdXNl
ckRhdGE7CkBAIC01MjIsMTMgKzUyNSw3IEBAIFJlZjxYTUxQYXJzZXJDb250ZXh0PiBYTUxQYXJz
ZXJDb250ZXh0OjpjcmVhdGVTdHJpbmdQYXJzZXIoeG1sU0FYSGFuZGxlclB0ciBoYW5kCiAvLyBD
aHVuayBzaG91bGQgYmUgZW5jb2RlZCBpbiBVVEYtOAogUmVmUHRyPFhNTFBhcnNlckNvbnRleHQ+
IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZU1lbW9yeVBhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhh
bmRsZXJzLCB2b2lkKiB1c2VyRGF0YSwgY29uc3QgQ1N0cmluZyYgY2h1bmspCiB7Ci0gICAgaWYg
KCFkaWRJbml0KSB7Ci0gICAgICAgIHhtbEluaXRQYXJzZXIoKTsKLSAgICAgICAgeG1sUmVnaXN0
ZXJJbnB1dENhbGxiYWNrcyhtYXRjaEZ1bmMsIG9wZW5GdW5jLCByZWFkRnVuYywgY2xvc2VGdW5j
KTsKLSAgICAgICAgeG1sUmVnaXN0ZXJPdXRwdXRDYWxsYmFja3MobWF0Y2hGdW5jLCBvcGVuRnVu
Yywgd3JpdGVGdW5jLCBjbG9zZUZ1bmMpOwotICAgICAgICBsaWJ4bWxMb2FkZXJUaHJlYWQgPSBj
dXJyZW50VGhyZWFkKCk7Ci0gICAgICAgIGRpZEluaXQgPSB0cnVlOwotICAgIH0KKyAgICBpbml0
aWFsaXplWE1MUGFyc2VyKCk7CiAKICAgICAvLyBhcHBlbmRGcmFnbWVudFNvdXJjZSgpIGNoZWNr
cyB0aGF0IHRoZSBsZW5ndGggZG9lc24ndCBvdmVyZmxvdyBhbiBpbnQuCiAgICAgeG1sUGFyc2Vy
Q3R4dFB0ciBwYXJzZXIgPSB4bWxDcmVhdGVNZW1vcnlQYXJzZXJDdHh0KGNodW5rLmRhdGEoKSwg
Y2h1bmsubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKaW5kZXggYzM3NzU4MjU0YjRkNGY4ZjAxY2U5YTM4ZTZmMGRlOGI1
MjU4OTk2YS4uMDdlZWRjYjYzYzQ4ZWU2YmNiMTY2ZDkyYmI4YTY3ZGExODRiMGEzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBA
IC00Myw3ICs0Myw3IEBACiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQo
IW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKIAogLy8gRm9y
IG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCB0aGUgc3luYyB0aHJlYWQgT05MWQot
I2RlZmluZSBJU19JQ09OX1NZTkNfVEhSRUFEKCkgKG1fc3luY1RocmVhZC0+aWQoKSA9PSBjdXJy
ZW50VGhyZWFkKCkpCisjZGVmaW5lIElTX0lDT05fU1lOQ19USFJFQUQoKSAobV9zeW5jVGhyZWFk
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICNkZWZpbmUgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQo
KSBBU1NFUlQoSVNfSUNPTl9TWU5DX1RIUkVBRCgpKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMmI3YjJm
NWM3Y2EwMWM0ZTM1ZGE0MzRiMzMxNGU2OGY3ZGJhY2ZiNy4uYmFjNmRjYTRkYzAxODVjNmQ3NjJm
ZGNmMDhmYTFkNjMxMWIxMDRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0Nh
bGxiYWNrLmgKQEAgLTk0LDEzICs5NCwxMyBAQCBjbGFzcyBHZW5lcmljQ2FsbGJhY2sgOiBwdWJs
aWMgQ2FsbGJhY2tCYXNlIHsKIAogICAgIHZpcnR1YWwgfkdlbmVyaWNDYWxsYmFjaygpCiAgICAg
ewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOwor
ICAgICAgICBBU1NFUlQobV9vcmlnaW5UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKICAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShULi4uIHJldHVyblZhbHVlKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICAgICAg
QVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE3LDcgKzEx
Nyw3IEBAIGNsYXNzIEdlbmVyaWNDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0Jhc2UgewogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlKEVycm9yIGVycm9yID0gRXJyb3I6OlVua25vd24pIGZpbmFsCiAg
ICAgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQp
OworICAgICAgICBBU1NFUlQobV9vcmlnaW5UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNr
QmFzZSB7CiAgICAgc3RkOjpvcHRpb25hbDxDYWxsYmFja0Z1bmN0aW9uPiBtX2NhbGxiYWNrOwog
CiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElkZW50aWZpZXIgbV9vcmlnaW5UaHJlYWRJRCB7
IGN1cnJlbnRUaHJlYWQoKSB9OworICAgIFJlZjxUaHJlYWQ+IG1fb3JpZ2luVGhyZWFkIHsgVGhy
ZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVmNjhhOTUwMTU3N2ZkZWYxN2MzNjRjOGY5NjE0
MjU4ZjIyZjcwMjAuLjJjZjZlODNjMTc1NTNmMDA1ZDRmYTU1NTRkN2ExZGFmYTg4N2Y4NzAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElk
ZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcFJl
bmRlclRyZWUpOgorICAgICAgICAocnVuVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKHJ1blB0
aHJlYWQpOiBEZWxldGVkLgorICAgICAgICAodGVzdFRocmVhZElkZW50aWZpZXJNYXApOiBEZWxl
dGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkaW5nLmNwcDogQWRkZWQuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMi0wMyAgQWFrYXNoIEphaW4gIDxhYWth
c2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHkgRVdTIGtlZXBzIHJldHJ5aW5n
IGEgZmFpbGluZyBwYXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCmluZGV4IDMyN2YyMGIxZGYwNGNlYmI4OGYxNDJmNWM5YTlhNjY2MjVlZGJmMGQuLjU0NTJk
MmRkNDk4MTVmZTE0M2FlNDczYjY4ZGQzNGE4OTNkY2Q3NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwNjUsMzYgKzEwNjUsNiBAQCBzdGF0aWMg
dm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogICAgIFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOnByb2Nl
c3NJbnN0YW5jZURlZmF1bHRzIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiB9CiAKLXN0YXRp
YyB2b2lkIHJ1blRocmVhZCgpCi17Ci0gICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgcHJldmlv
dXNJZCA9IDA7Ci0gICAgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SWQgPSBjdXJyZW50VGhyZWFk
KCk7Ci0gICAgLy8gVmVyaWZ5IDIgc3VjY2Vzc2l2ZSB0aHJlYWRzIGRvIG5vdCBnZXQgdGhlIHNh
bWUgSWQuCi0gICAgQVNTRVJUKHByZXZpb3VzSWQgIT0gY3VycmVudElkKTsKLSAgICBwcmV2aW91
c0lkID0gY3VycmVudElkOwotfQotCi1zdGF0aWMgdm9pZCogcnVuUHRocmVhZCh2b2lkKikKLXsK
LSAgICBydW5UaHJlYWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RhdGljIHZvaWQg
dGVzdFRocmVhZElkZW50aWZpZXJNYXAoKQotewotICAgIC8vIEltaXRhdGUgJ2ZvcmVpZ24nIHRo
cmVhZHMgdGhhdCBhcmUgbm90IGNyZWF0ZWQgYnkgV1RGLgotICAgIHB0aHJlYWRfdCBwdGhyZWFk
OwotICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCAwLCAmcnVuUHRocmVhZCwgMCk7Ci0gICAg
cHRocmVhZF9qb2luKHB0aHJlYWQsIDApOwotCi0gICAgcHRocmVhZF9jcmVhdGUoJnB0aHJlYWQs
IDAsICZydW5QdGhyZWFkLCAwKTsKLSAgICBwdGhyZWFkX2pvaW4ocHRocmVhZCwgMCk7Ci0KLSAg
ICAvLyBOb3cgY3JlYXRlIGFub3RoZXIgdGhyZWFkIHVzaW5nIFdURi4gT24gT1NYLCBpdCB3aWxs
IGhhdmUgdGhlIHNhbWUgcHRocmVhZCBoYW5kbGUKLSAgICAvLyBidXQgc2hvdWxkIGdldCBhIGRp
ZmZlcmVudCBSZWZQdHI8VGhyZWFkPi4KLSAgICBUaHJlYWQ6OmNyZWF0ZSgiRHVtcFJlbmRlclRy
ZWU6IHRlc3QiLCBydW5UaHJlYWQpOwotfQotCiBzdGF0aWMgdm9pZCBhbGxvY2F0ZUdsb2JhbENv
bnRyb2xsZXJzKCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSB0aGVzZSBhbmQg
bW92ZSB0byB0aGUgT2JqQyBzdGFuZGFyZCBbRm9vIHNoYXJlZEluc3RhbmNlXSBtb2RlbApAQCAt
MTI4Myw5ICsxMjUzLDYgQEAgdm9pZCBkdW1wUmVuZGVyVHJlZShpbnQgYXJnYywgY29uc3QgY2hh
ciAqYXJndltdKQogICAgIFtOU1VSTFJlcXVlc3Qgc2V0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0
ZTpZRVMgZm9ySG9zdDpAImxvY2FsaG9zdCJdOwogICAgIFtOU1VSTFJlcXVlc3Qgc2V0QWxsb3dz
QW55SFRUUFNDZXJ0aWZpY2F0ZTpZRVMgZm9ySG9zdDpAIjEyNy4wLjAuMSJdOwogCi0gICAgLy8g
aHR0cDovL3dlYmtpdC5vcmcvYi8zMjY4OQotICAgIHRlc3RUaHJlYWRJZGVudGlmaWVyTWFwKCk7
Ci0KICAgICBpZiAodGhyZWFkZWQpCiAgICAgICAgIHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMoKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggN2UzMWYzMDk3OGFlNDI3YjEwYTkx
ZmIxNGVmYjlmZTEzNDQzMDFhMS4uNWFjNWU2MTVkMzJmN2M1NTI1NzY2ZjkzMWMzMGY0OTY3MWYx
MjQwYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC0xNDEsNiArMTQxLDcgQEAg
c2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9U
ZXh0QnJlYWtJdGVyYXRvci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYv
VGhyZWFkR3JvdXAuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RocmVh
ZE1lc3NhZ2VzLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9UaHJlYWRp
bmcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RpbWUuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggODMyOGNlYWE4NzQzNjI3M2Q0NjExMTQ0NTQ0YzlkMWNkYmIyMjBjYi4uYzUyZDdlOTI1
Nzg1MjM3YTE4ODA4Y2ZlZWIxYzc3MmUyYzY3Y2NiYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTY5Myw2ICs2OTMsNyBAQAogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdE
MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aHRtbCAqLzsgfTsKIAkJRTE5NEUxQkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJv
bURpZFJlY2VpdmVSZXNwb25zZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9h
ZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLzsgfTsKIAkJRTM3M0Q3OTExRjJDRjM1
MjAwQzZGQUFGIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICov
OyB9OworCQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEEwRDM0MUZENTBDQkMw
MEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovOyB9OwogCQlFM0RFQTgxMTFGMEE1ODkwMDBDQkMy
RTggLyogVGhyZWFkR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAq
LzsgfTsKIAkJRUNBNjgwQ0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDQTY4MENEMUU2
OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi87IH07CiAJCUY0MDdGRTM5MUYx
RDBERkMwMDE3Q0YyNSAvKiBlbm9ybW91cy5zdmcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwN0ZFMzgxRjFEMERFNjAwMTdDRjI1IC8qIGVu
b3Jtb3VzLnN2ZyAqLzsgfTsKQEAgLTE3NzIsNiArMTc3Myw3IEBACiAJCUUxOTRFMUJBMTc3RTUx
NDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNl
aXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRFMUJDMTc3
RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdh
dG9yTGFuZ3VhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBO
YXZpZ2F0b3JMYW5ndWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4QTBE
MzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWduYWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3VwLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwMDE5MzAxQUNFOUI1QzAwMUIwQTJBIC8qIEJs
b29tRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJsb29t
RmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NTEsNiArMjY1Myw3
IEBACiAJCQkJNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVl
dWUuY3BwICovLAogCQkJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVy
YXRvci5jcHAgKi8sCiAJCQkJRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3Vw
LmNwcCAqLywKKwkJCQlFMzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAq
LywKIAkJCQk1MzExQkQ1RDFFQTk0OTBEMDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZXMuY3BwICov
LAogCQkJCTBGMkMyMEI3MURDRDU0NDgwMDU0MkQ5RSAvKiBUaW1lLmNwcCAqLywKIAkJCQk1QzVF
NjMzRDFEMEI2Nzk0MDA4NUEwMjUgLyogVW5pcXVlUmVmLmNwcCAqLywKQEAgLTMyMTEsNiArMzIx
NCw3IEBACiAJCQkJN0M4M0RGNDAxRDBBNTkwQzAwRkVCQ0YzIC8qIFRlc3RzQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzI5QUEyOTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJy
ZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTNERUE4MTExRjBBNTg5MDAwQ0JD
MkU4IC8qIFRocmVhZEdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOEEwRDM1MUZENTBD
QzMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENUUx
RUE5NDkwRTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkMyMEI4MURDRDU0NTAwMDU0MkQ5RSAvKiBUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNFMDNCMUQwQTYwMjcwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xv
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAppbmRl
eCBiYThkZDU2YTViMzBhMjRlZjVmZGNlM2JkMzAxZDA2ZjU0YWQ0ZTg4Li5mOTQ0MGQwOWZlMWUx
MmE4MDY1NDBiNDJlMjEwOWM5MWE0Yzc3YjZmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9QYXJraW5nTG90LmNwcApAQCAtNTEsNyArNTEsNiBAQCBzdHJ1Y3QgU2luZ2xlTGF0
Y2hUZXN0IHsKICAgICAgICAgICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgKICAgICAgICAgICAgICAg
ICAgICAgIlBhcmtpbmcgVGVzdCBUaHJlYWQiLAogICAgICAgICAgICAgICAgICAgICBbJl0gKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX05FKDB1LCBjdXJyZW50VGhyZWFkKCkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZG93bigpOwogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKGxvY2spOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkaW5nLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ2OGQxNTA5
NmM1MjhiMjhmOTQ3ZTczZjgwOTEzZjAwYWRhZGIyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZGluZy5jcHAKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKKyNpZiBVU0UoUFRIUkVBRFMpCitURVNUKFdURiwgVGhyZWFkaW5nVGhyZWFk
SWRlbnRpdHkpCit7CisgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi8zMjY4OQorICAgIHN0YXRp
YyBUaHJlYWQqIHRocmVhZDE7CisgICAgc3RhdGljIFRocmVhZCogdGhyZWFkMjsKKworICAgIC8v
IEltaXRhdGUgJ2ZvcmVpZ24nIHRocmVhZHMgdGhhdCBhcmUgbm90IGNyZWF0ZWQgYnkgV1RGLgor
ICAgIHB0aHJlYWRfdCBwdGhyZWFkOworICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCBudWxs
cHRyLCBbXSAodm9pZCopIC0+IHZvaWQqIHsKKyAgICAgICAgdGhyZWFkMSA9ICZUaHJlYWQ6OmN1
cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkMS0+cmVmKCk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0sIG51bGxwdHIpOworICAgIHB0aHJlYWRfam9pbihwdGhyZWFkLCBudWxscHRyKTsK
KworICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCBudWxscHRyLCBbXSAodm9pZCopIC0+IHZv
aWQqIHsKKyAgICAgICAgdGhyZWFkMiA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhy
ZWFkMi0+cmVmKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0sIG51bGxwdHIpOwor
ICAgIHB0aHJlYWRfam9pbihwdGhyZWFkLCBudWxscHRyKTsKKworICAgIC8vIE5vdyBjcmVhdGUg
YW5vdGhlciB0aHJlYWQgdXNpbmcgV1RGLiBPbiBPU1gsIGl0IG1heSBoYXZlIHRoZSBzYW1lIHB0
aHJlYWQgaGFuZGxlCisgICAgLy8gYnV0IHNob3VsZCBnZXQgYSBkaWZmZXJlbnQgUmVmUHRyPFRo
cmVhZD4gaWYgdGhlIHByZXZpb3VzIFJlZlB0cjxUaHJlYWQ+IGlzIGhlbGQuCisgICAgVGhyZWFk
OjpjcmVhdGUoIkR1bXBSZW5kZXJUcmVlOiB0ZXN0IiwgW10geworICAgICAgICBFWFBFQ1RfVFJV
RSh0aHJlYWQxICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHRo
cmVhZDIgIT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUodGhyZWFk
MSAhPSB0aHJlYWQyKTsKKyAgICAgICAgdGhyZWFkMS0+ZGVyZWYoKTsKKyAgICAgICAgdGhyZWFk
Mi0+ZGVyZWYoKTsKKyAgICB9KS0+d2FpdEZvckNvbXBsZXRpb24oKTsKK30KKyNlbmRpZiAvLyBV
U0UoUFRIUkVBRFMpCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328328</attachid>
            <date>2017-12-03 21:20:35 -0800</date>
            <delta_ts>2017-12-03 21:28:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-180308-20171204142034.patch</filename>
            <type>text/plain</type>
            <size>216402</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MWE2OTllNzQ0ZWQ2NzNjMDRhOWE5ZDJjZTcyNzMxNzUwMGFlMzQwLi40NTY0OTQ2Mzc3ZmE2ZmZl
Yjg5ODQwNDcwZDMxOWI3NTkwMzUxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVh
ZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
ICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhy
ZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNl
RnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHA6
CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjp1bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2Fn
ZSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpj
dXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dpbmdUaHJlYWQgY29uc3QpOgorICAgICAgICAoSlND
OjpWTTo6Y2xlYXJFeGNlcHRpb24pOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5jcHA6
CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6cHJpbnRWZXJpZmljYXRpb25IZWFkZXIpOgor
CiAyMDE3LTEyLTAzICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgRGVzdHJveUZ1bmMgdG8gYXZvaWQgcmVkZWZpbml0aW9uIG9uIHVuaWZpZWQgYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggY2Y2YzRkYzI1OGFhYmQ5MWQ5ZDc4MGYyYmRhYjk1MmI1NTljYWJlZi4uZDI4ZDc5
YjE2MmQzNTJmMDEzNmFmM2I3Y2Y3YjE0M2FiMDAyYWFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAor
MjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdlIHNob3VsZCB1
c2UgYSBwb2ludGVyIG9mIFdURjo6VGhyZWFkIGluc3RlYWQgb2YgVGhyZWFkSWRlbnRpZmllci4K
KworICAgICAgICBPbmUgcHJvYmxlbSBpcyB0aGF0IFdpbmRvd3Mgc3VwcG9ydCBsaWJyYXJ5IHVz
ZXMgV1RGOjpjcmVhdGVUaHJlYWQsCisgICAgICAgIHdoaWNoIHJldHVybnMgVGhyZWFkSWRlbnRp
Zmllci4gU28gd2UgY2Fubm90IGRyb3AgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBpbiBXaW5k
b3dzIGVudmlyb25tZW50LiBUaGlzIHBhdGNoIGtlZXBzIFRocmVhZElkZW50aWZpZXIgaW4gV2lu
ZG93cy4KKworICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAgICAgICAgKFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQpOgorICAgICAgICAoV1RGOjppc01haW5UaHJlYWQpOgorICAgICAg
ICAoV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQpOgorICAgICAgICAqIHd0
Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAo
V1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseUltcGwpOgorICAgICAgICAoV1RGOjpQ
YXJraW5nTG90Ojp1bnBhcmtPbmUpOgorICAgICAgICAoV1RGOjpQYXJraW5nTG90Ojp1bnBhcmtP
bmVJbXBsKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJrQ291bnQpOgorICAgICAg
ICAqIHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oOgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVM
b2NrQWRhcHRlcjo6bG9jayk6CisgICAgICAgIChXVEY6OlJlY3Vyc2l2ZUxvY2tBZGFwdGVyOjp1
bmxvY2spOgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6dHJ5TG9jayk6Cisg
ICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6ZHVtcCBj
b25zdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6
OmlkIGNvbnN0KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpvcGVyYXRvcj09KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6VGhyZWFkOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6Y3VycmVudFRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OndhaXRGb3JDb21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpk
ZXRhY2gpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VExTKToKKyAg
ICAgICAgKFdURjo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplc3Rh
Ymxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJy
ZW50SUQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OndhaXRGb3JDb21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFk
OjpzdXNwZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50RHlpbmcpOgorICAgICAg
ICAqIHd0Zi9tYWMvTWFpblRocmVhZE1hYy5tbToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUFw
cGxpY2F0aW9uVUlUaHJlYWQpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkUGxh
dGZvcm0pOgorICAgICAgICAoV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQp
OgorICAgICAgICAoV1RGOjppbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcik6
IERlbGV0ZWQuCisKIDIwMTctMTItMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBXVEY6Okhhc2hlciwgYW4gZWFzaWVyIHRvIHVzZSByZXBsYWNlbWVudCBm
b3IgV1RGOjpJbnRlZ2VySGFzaGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA5YWE1MzhjNjA4MjAyODYwMmQw
Mzg3MzEwOWRmZjI3YjZhMGRjYi4uOTk4ZmZmNjY0OTBhNTc2ZGVjYzBlOTNiZjU5ZTBmNmY1ZTQ5
MWY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1NSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhh
dmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpvcmlnaW5UaHJlYWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpwZXJmb3JtQ2FsbGJhY2tPbk9yaWdpblRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6OmNhbGxGdW5jdGlvbk9uT3Jp
Z2luVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2ZURPTU9iamVjdDo6b3JpZ2lu
VGhyZWFkSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OklEQkN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6On5JREJDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yOjpzb3VyY2VzRGVsZXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3I6OnRyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNv
cjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6YWR2YW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpzZXRHZXRSZXN1bHQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmFtZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVyc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZTo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6ZGlkQ3JlYXRlSW5kZXhJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpk
aWREZWxldGVJbmRleEluZm8pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpJREJJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6fklEQkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4
OjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpzZXROYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6a2V5UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6
dW5pcXVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0aUVudHJ5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9u
Q2hhbmdlQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OmRvQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRv
R2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldEtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpn
ZXRBbGxLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptYXJrQXNEZWxldGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6On5JREJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6c2V0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6a2V5
UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1l
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6Z2V0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXRPckFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0NvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpnZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6Om1hcmtBc0RlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJl
cXVlc3Q6On5JREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJl
cXVlc3Q6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6dmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uRGlkRmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdlQ29tbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVFcnJvckFmdGVyVmVyc2lvbkNoYW5n
ZUNvbXBsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6ZGlzcGF0
Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uRGVsZXRlRGF0YWJhc2VTdWNj
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdEJsb2NrZWQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6fklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6dHJhbnNhY3Rpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6c291cmNlT2JqZWN0U3RvcmVJZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNvdXJjZUluZGV4SWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZXF1ZXN0ZWRPYmplY3RTdG9yZVJl
Y29yZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVxdWVzdGVk
SW5kZXhSZWNvcmRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVxdWVzdDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpl
bnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVmaW5lZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZXN1bHRDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0Ojpjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246On5JREJUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVOYW1lcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmVycm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnRyYW5zaXRpb25lZFRvRmluaXNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aW50
ZXJuYWxBYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNl
cnZlckFuZENhbmNlbFJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjppc0ZpbmlzaGVkT3JGaW5pc2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmFkZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OnJlbW92ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25U
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNvbW1pdE9uU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaW5pc2hBYm9ydE9yQ29tbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OmRpZEFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkaWRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmZpcmVPbkNv
bXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaXJlT25BYm9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlT25TZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFJlbmFtZU9iamVjdFN0
b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRDcmVhdGVJbmRleE9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXhPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3JPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVj
dFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldEFsbEluZGV4UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Z2V0QWxsUmVjb3Jkc09uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RHZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdEdldEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpnZXRSZWNv
cmRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVj
b3JkT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZVJlY29yZE9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmpl
Y3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRD
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlcXVlc3RQdXRPckFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
cHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlk
UHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0
ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkZWxldGVJbmRleE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkaWREZWxldGVJbmRleE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6ZXN0YWJsaXNoT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmFjdGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpk
ZWFjdGl2YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6cmVtb3ZlSXRlbXNN
YXRjaGluZ0N1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbjo6flRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRv
Q29tcGxldGVPblRoaXNUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRvQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6ZG9Db21wbGV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpvcmlnaW5UaHJlYWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bjo6b3JpZ2luVGhyZWFkSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnRyeUxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
aXNHcmFwaE93bmVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzZXRBdWRpb1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmF1ZGlvVGhyZWFkIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OnBlcmZvcm1DbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6OkRhdGFiYXNlRGV0YWlscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6OnRocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZURldGFpbHM6OnRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJl
YWQ6OmdldFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6Z2V0VGhy
ZWFkSUQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNrQW5kSGFu
ZGxlQ2xvc2VkRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFj
a2VuZDo6ZG9DbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2Vu
ZDo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRh
OjpKU0NhbGxiYWNrRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpT
Q2FsbGJhY2tEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQpOgorICAgICAg
ICAqIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFk
Ojppc0N1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6cHJvdmlkZVN1cHBsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnJlbW92ZVN1cHBsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnJlcXVpcmVTdXBwbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpTdXBwbGVtZW50YWJsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNl
OjpUaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJC
YXNlOjpzZXROZXh0RmlyZVRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRl
T25Db21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmdldEF2YWlsYWJsZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphcHBlbmRUb1VudXNlZEJ1
ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6c3dhcEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoUnVuV2Vi
VGhyZWFkKToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6
Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsb3NlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlOjpzcWxpdGUzSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
Ojp+V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2Nv
cGU6OmlzQ29udGV4dFRocmVhZCBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6
V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWQ6OnRocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnRo
cmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZv
dW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9i
UmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JK
b2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNo
ZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNo
YW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNv
bnRleHRJZGVudGlmaWVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2Vy
Sm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRo
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29s
dmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZW5GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVYTUxQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MUGFyc2VyQ29udGV4dDo6Y3JlYXRlU3RyaW5nUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZU1lbW9yeVBh
cnNlcik6CisKIDIwMTctMTItMDMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyIGxlYWtzIHdo
ZW4gcGFzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYWE1ODI1NTAzNTMyMTZkMGYxNjUxZTNkZjgxZjE1YzQ0
YzQ2NzkwLi5lNWM1MTAxYWZmZGMwYjk2ZWJlYjg0NWMyYzlhM2JjYWJlOTJlZDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRuJ3QgaGF2ZSBib3RoIFRocmVhZCBh
bmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWND
YWxsYmFjazo6fkdlbmVyaWNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxs
YmFjazo6cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKToKKwogMjAxNy0xMi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgc2VydmljZVdv
cmtlci5wb3N0TWVzc2FnZSgpIGluc2lkZSBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCmluZGV4IDFkZThjYWE4
OWQ0MTgwNjgxYjcyNzY4YzcyZWYzOTVhNTUyMWIzMTYuLmU2YWY1M2I2MTlmZDYwNzdiNzVlNDE3
NWJlMzc1ZjQ4ZTg2MGNiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgTWFjaGluZVRo
cmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYgbG9j
a2VyLCB2b2lkCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgIGZv
ciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykgewotICAgICAgICAgICAgaWYgKHRocmVhZC5nZXQo
KSAhPSBjdXJyZW50VGhyZWFkKSB7CisgICAgICAgICAgICBpZiAodGhyZWFkLnB0cigpICE9ICZj
dXJyZW50VGhyZWFkKSB7CiAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSB0aHJlYWQtPnN1
c3BlbmQoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgICAg
ICBpc1N1c3BlbmRlZC5zZXQoaW5kZXgpOwpAQCAtMTYwLDggKzE2MCw4IEBAIGJvb2wgTWFjaGlu
ZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYg
bG9ja2VyLCB2b2lkCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIHRocmVhZHMgd2lsbCBi
ZSByZW1vdmVkIGZyb20gdGhlIFRocmVhZEdyb3VwLiBUaHVzLCB3ZSBkbyBub3QgZG8gYW55dGhp
bmcgaGVyZSBleGNlcHQgZm9yIHJlcG9ydGluZy4KICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdC5lcnJvcigpICE9IEtFUk5fU1VDQ0VTUyk7CiAgICAgICAgICAgICAgICAgICAgIFdU
RlJlcG9ydEVycm9yKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBlbmNv
dW50ZXJlZCBhbiBpbnZhbGlkIHRocmVhZCAoZXJyIDB4JXgpOiBUaHJlYWQgWyVkLyVkOiAlcF0g
aWQgJXUuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcigpLCBpbmRleCwg
dGhyZWFkcy5zaXplKCksIHRocmVhZC5wdHIoKSwgdGhyZWFkLT5pZCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBlbmNvdW50ZXJlZCBh
biBpbnZhbGlkIHRocmVhZCAoZXJyIDB4JXgpOiBUaHJlYWQgWyVkLyVkOiAlcF0uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcigpLCBpbmRleCwgdGhyZWFkcy5zaXplKCks
IHRocmVhZC5wdHIoKSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCAyMWU5MDJkNDk1NWY4YmNiZjcyODBmNGYxYjlkYTM5Nzc3MTNiNTNiLi43YTE1ZTIyOWVlMGEy
YzgxOTY0Mzc4OGU4YjE2Y2EzMzA5OGI0YmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE5MSw4ICsxOTEsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxs
aW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBm
cm9tV2hlcmUsIGludCBvcGVyYW5kKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgZGF0YUxv
Z0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6
ICVkXG4iLAotICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAgIGRhdGFMb2dGKCI8JXA+
ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZFxuIiwK
KyAgICAgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVC
bG9jaygpLAogICAgICAgICAgICAgZXhlYywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0
cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKQEAg
LTIxNSw4ICsyMTUsOCBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFj
ZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYwogICAgIH0gdTsKICAgICB1
LmFzVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwogICAgIGRhdGFMb2dGKAotICAgICAg
ICAiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWQ6ICUwOHg6JTA4eDogJXNcbiIsCi0gICAgICAgIGN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAg
IjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
OiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICAmVGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICBleGVjLAogICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSks
CkBAIC0yMzIsNyArMjMyLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMKIAogTExJTlRfU0xP
V19QQVRIX0RFQ0wodHJhY2VfcHJvbG9ndWUpCiB7Ci0gICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAl
cDogaW4gcHJvbG9ndWUgb2YgIiwgY3VycmVudFRocmVhZCgpLCBleGVjLT5jb2RlQmxvY2soKSwg
ZXhlYyk7CisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwgJlRo
cmVhZDo6Y3VycmVudCgpLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CiAgICAgZGF0YUxvZygq
ZXhlYy0+Y29kZUJsb2NrKCksICJcbiIpOwogICAgIExMSU5UX0VORF9JTVBMKCk7CiB9CkBAIC0y
NDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWMKICAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwogICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7Ci0g
ICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogaW4gJXMgb2YgIiwgY3VycmVudFRocmVhZCgpLCBj
b2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQpOworICAgIGRhdGFMb2dGKCI8JXA+ICVwIC8gJXA6IGlu
ICVzIG9mICIsICZUaHJlYWQ6OmN1cnJlbnQoKSwgY29kZUJsb2NrLCBleGVjLCBjb21tZW50KTsK
ICAgICBkYXRhTG9nKCpjb2RlQmxvY2spOwogICAgIGRhdGFMb2dGKCIgZnVuY3Rpb24gJXAsIGV4
ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVM
b2NhbHMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAogICAgICAgICBjYWxsZWUsIGV4ZWN1dGFibGUs
IGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FscywgZXhlYy0+Y2FsbGVyRnJhbWUoKSk7CkBAIC0yNzUsOCAr
Mjc1LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KQogTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpOwotICAgIGRhdGFM
b2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAotICAg
ICAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAgIGRhdGFMb2dGKCI8JXA+ICVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgICAgICAgICAgJlRocmVhZDo6Y3Vy
cmVudCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVj
LAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjk0LDggKzI5NCw4IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHRyYWNlKQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzcGVjaWFsX3RyYWNl
KQogewotICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2Ug
YmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAotICAgICAgICAgICAgY3VycmVudFRo
cmVhZCgpLAorICAgIGRhdGFMb2dGKCI8JXA+ICVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNh
c2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICAgJlRocmVh
ZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAg
ICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCmluZGV4IDY5MGJjMTIyOWYyMTQwYTA4
ZGJhNzdiN2U1NWJhMmMyMWY4YzI3YmYuLjdkMWMwNmE5NTQxYjE1MDEzMDI0NjhhY2JiMDFmODY3
NDQ4OWFmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25TY29wZS5jcHAKQEAgLTU1LDE0ICs1NSwxNCBAQCBDU3RyaW5nIEV4Y2VwdGlvblNjb3BlOjp1
bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0
OwogCi0gICAgb3V0LnByaW50bG4oIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9ic2VydmVkIG9uIHRo
cmVhZCAiLCBjdXJyZW50VGhyZWFkKCksICIgYXQ6Iik7CisgICAgb3V0LnByaW50bG4oIlVuZXhw
ZWN0ZWQgZXhjZXB0aW9uIG9ic2VydmVkIG9uIHRocmVhZCAiLCBUaHJlYWQ6OmN1cnJlbnQoKSwg
IiBhdDoiKTsKICAgICBhdXRvIGN1cnJlbnRTdGFjayA9IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFj
a1RyYWNlKE9wdGlvbnM6OnVuZXhwZWN0ZWRFeGNlcHRpb25TdGFja1RyYWNlTGltaXQoKSwgMSk7
CiAgICAgY3VycmVudFN0YWNrLT5kdW1wKG91dCwgIiAgICAiKTsKIAogICAgIGlmICghbV92bS5u
YXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKSkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsK
ICAgICAKLSAgICBvdXQucHJpbnRsbigiVGhlIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGZyb20gdGhy
ZWFkICIsIG1fdm0udGhyb3dpbmdUaHJlYWQoKSwgIiBhdDoiKTsKKyAgICBvdXQucHJpbnRsbigi
VGhlIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGZyb20gdGhyZWFkICIsICptX3ZtLnRocm93aW5nVGhy
ZWFkKCksICIgYXQ6Iik7CiAgICAgbV92bS5uYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKS0+
ZHVtcChvdXQsICIgICAgIik7CiAKICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBkZWEwNTAyOGNkNzM1ZWI2MzkxNzQ3
MGMxNTIyYjE4MjQ1ZGU1NzU1Li5iZWRmMmI1NzI4MDY3NzQ2NDdkZTIxYjdjMzE4ZmZhMzhlZTM3
NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApAQCAtOTgsNyArOTgs
NyBAQCBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SlNMb2NrPiB7
CiAgICAgICAgICAgICByZXR1cm4gbV9vd25lclRocmVhZDsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9Ci0gICAgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpIHsg
cmV0dXJuIG1faGFzT3duZXJUaHJlYWQgJiYgbV9vd25lclRocmVhZC0+aWQoKSA9PSBjdXJyZW50
VGhyZWFkKCk7IH0KKyAgICBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkgeyByZXR1
cm4gbV9oYXNPd25lclRocmVhZCAmJiBtX293bmVyVGhyZWFkLmdldCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKTsgfQogCiAgICAgdm9pZCB3aWxsRGVzdHJveVZNKFZNKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1YWJkZmJiZDg4YmEyODVmMWEzNThkODcxM2I2NWEy
MmU2NTQ5MWUwLi42OGZiY2U3YmVmYTNiYjI4YjgyNWYyM2NiNTczYWNjNWE1YTg2Yjg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBW
TTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikK
IAogI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgIG1fbmF0aXZl
U3RhY2tUcmFjZU9mTGFzdFRocm93ID0gU3RhY2tUcmFjZTo6Y2FwdHVyZVN0YWNrVHJhY2UoT3B0
aW9uczo6dW5leHBlY3RlZEV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdCgpKTsKLSAgICBtX3Rocm93
aW5nVGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgIG1fdGhyb3dpbmdUaHJlYWQgPSAmVGhy
ZWFkOjpjdXJyZW50KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
aW5kZXggMzY2ODczYjJiNzlkOWQ1M2ZjZjliYWYzNmY2YzVlMjU5ZDNmOWIwMC4uYTZjMmQ1M2Zj
ODAxZDFjZGFkZGZmMWExZmFjYzU0NTQ5Y2FiYWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCkBAIC03MTEsNyArNzExLDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKIAogI2lmIEVO
QUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgIFN0YWNrVHJhY2UqIG5hdGl2
ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlU3RhY2tUcmFj
ZU9mTGFzdFRocm93LmdldCgpOyB9Ci0gICAgVGhyZWFkSWRlbnRpZmllciB0aHJvd2luZ1RocmVh
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3dpbmdUaHJlYWQ7IH0KKyAgICBUaHJlYWQqIHRocm93
aW5nVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd2luZ1RocmVhZC5nZXQoKTsgfQogI2Vu
ZGlmCiAKICNpZiBVU0UoQ0YpCkBAIC03NTQsNyArNzU0LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+
IHsKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKICAgICAgICAgbV9u
ZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKICAgICAgICAgbV9uYXRpdmVTdGFja1RyYWNlT2ZM
YXN0VGhyb3cgPSBudWxscHRyOwotICAgICAgICBtX3Rocm93aW5nVGhyZWFkID0gMDsKKyAgICAg
ICAgbV90aHJvd2luZ1RocmVhZCA9IG51bGxwdHI7CiAjZW5kaWYKICAgICAgICAgbV9leGNlcHRp
b24gPSBudWxscHRyOwogICAgIH0KQEAgLTgwNiw3ICs4MDYsNyBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogICAgIG11dGFibGUgYm9vbCBtX25lZWRFeGNlcHRpb25DaGVjayB7IGZhbHNlIH07CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IG1fbmF0aXZlU3RhY2tUcmFjZU9mTGFzdFRo
cm93OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFja1RyYWNlPiBtX25hdGl2ZVN0YWNrVHJhY2VP
Zkxhc3RTaW11bGF0ZWRUaHJvdzsKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyb3dpbmdUaHJl
YWQ7CisgICAgUmVmUHRyPFRocmVhZD4gbV90aHJvd2luZ1RocmVhZDsKICNlbmRpZgogCiAgICAg
Ym9vbCBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5kZXggOWEyZDJhY2JhM2Y0NzAxMmEwMjEz
YTVkYjA2ZjljNjhiNmQxYTk2MC4uY2Q5MWVlMWE0ZTAzMGU4ZThjYWExNWNhN2Y5ZWFhYWE0MTAy
Y2VjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmll
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAK
QEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEhlYXBWZXJpZmllcjo6cHJpbnRWZXJpZmljYXRpb25I
ZWFkZXIoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkpOwog
ICAgIENvbGxlY3Rpb25TY29wZSBzY29wZSA9IGN1cnJlbnRDeWNsZSgpLnNjb3BlOwogICAgIE1v
bm90b25pY1RpbWUgZ2NDeWNsZVRpbWVzdGFtcCA9IGN1cnJlbnRDeWNsZSgpLnRpbWVzdGFtcDsK
LSAgICBkYXRhTG9nKCJWZXJpZnlpbmcgaGVhcCBpbiBbcCIsIGdldEN1cnJlbnRQcm9jZXNzSUQo
KSwgIiwgdCIsIGN1cnJlbnRUaHJlYWQoKSwgIl0gdm0gIiwKKyAgICBkYXRhTG9nKCJWZXJpZnlp
bmcgaGVhcCBpbiBbcCIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIiwgIiwgVGhyZWFkOjpjdXJy
ZW50KCksICJdIHZtICIsCiAgICAgICAgIFJhd1BvaW50ZXIobV9oZWFwLT52bSgpKSwgIiBvbiAi
LCBzY29wZSwgIiBHQyBAICIsIGdjQ3ljbGVUaW1lc3RhbXAsICJcbiIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01haW5U
aHJlYWQuY3BwCmluZGV4IDJjNDE2MjdkNmU3OTQwZDQ4Yzk1ZGM3M2FjZTNmYmIyNjEzODZiZDMu
LmQ4NTkyYjc1NGI5ZjYwNTAwMjVkYzZkN2U0NWI4OGMwMzU1ZTc1YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiBzdGF0aWMgYm9vbCBj
YWxsYmFja3NQYXVzZWQ7IC8vIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIG9ubHkgYWNjZXNzZWQg
ZnJvbSBtYWluIHRocmVhZC4KICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgVGhyZWFkSWRl
bnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIG1haW5UaHJlYWQg
eyBudWxscHRyIH07CiAjZW5kaWYKIAogc3RhdGljIFN0YXRpY0xvY2sgbWFpblRocmVhZEZ1bmN0
aW9uUXVldWVNdXRleDsKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZCgpCiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10gewogICAgICAgICBpbml0
aWFsaXplVGhyZWFkaW5nKCk7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQotICAgICAgICBtYWluVGhy
ZWFkSWRlbnRpZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgbWFpblRocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgogICAgICAgICBpbml0aWFsaXplTWFpblRocmVhZFBs
YXRmb3JtKCk7CiAgICAgICAgIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogYm9v
bCBpc01haW5UaHJlYWQoKQogewotICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gbWFpblRo
cmVhZElkZW50aWZpZXI7CisgICAgcmV0dXJuIG1haW5UaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVu
dCgpOwogfQogI2VuZGlmCiAKQEAgLTk4LDkgKzk4LDkgQEAgdm9pZCBpbml0aWFsaXplV2ViVGhy
ZWFkKCkKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmICFVU0UoV0VCX1RIUkVBRCkK
LWJvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFRocmVhZElkZW50aWZpZXIg
dGhyZWFkSWQpCitib29sIGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChUaHJlYWQm
IHRocmVhZCkKIHsKLSAgICByZXR1cm4gdGhyZWFkSWQgPT0gY3VycmVudFRocmVhZCgpOworICAg
IHJldHVybiAmdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWlu
VGhyZWFkLmgKaW5kZXggYzk1ZjkyZmJkZjNhNGJkMzU4NzlkYmRlZWEwZDE1MWE0YzAyOTAyYi4u
ZWQxZDQ5NWZlYmQ3MmY1ZTgwM2FjNWRiNDY0MTFkNzc4ZTI0MmVjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQu
aApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3RyZWFt
OworY2xhc3MgVGhyZWFkOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVh
ZC4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CkBAIC01
NCwxNCArNTUsMTMgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWFpblRocmVhZENhbGxi
YWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFp
blRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2Nh
bERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkJik7CiAKICNpZiBVU0Uo
V0VCX1RIUkVBRCkKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV2ViVGhyZWFkKCk7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc1VJVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBpbml0aWFsaXplV2ViVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFs
aXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGluaXRpYWxpemVXZWJUaHJlYWRJZGVudGlmaWVyKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogdm9pZCBpbml0aWFsaXplV2Vi
VGhyZWFkUGxhdGZvcm0oKTsKICNlbHNlCiBpbmxpbmUgYm9vbCBpc1dlYlRocmVhZCgpIHsgcmV0
dXJuIGlzTWFpblRocmVhZCgpOyB9CkBAIC0xMTMsOCArMTEzLDcgQEAgdXNpbmcgV1RGOjpjYWxs
T25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQ7CiAjZW5kaWYKICNpZiBVU0Uo
V0VCX1RIUkVBRCkKIHVzaW5nIFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZDsKLXVzaW5nIFdURjo6
aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyOwotdXNpbmcgV1RGOjppbml0
aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcjsKK3VzaW5nIFdURjo6aW5pdGlhbGl6ZUFwcGxpY2F0
aW9uVUlUaHJlYWQ7CiAjZW5kaWYKIAogI2VuZGlmIC8vIE1haW5UaHJlYWRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5n
TG90LmNwcAppbmRleCBmOGZlZDg4YjFmN2M5OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNjZTFjLi5i
MTRkN2EyY2RlZDhmNWVkM2QzNDAyZjc4ODBkMzcxNjI2ODllOGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90
LmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICB2b2lkIGVucXVldWUo
VGhyZWFkRGF0YSogZGF0YSkKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAg
ICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVucXVldWVpbmcgIiwgUmF3
UG9pbnRlcihkYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2ludGVyKGRhdGEtPmFkZHJl
c3MpLCAiIG9udG8gIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAgICAgICAgICAgZGF0
YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyAiLCBSYXdQb2lu
dGVyKGRhdGEpLCAiIHdpdGggYWRkcmVzcyA9ICIsIFJhd1BvaW50ZXIoZGF0YS0+YWRkcmVzcyks
ICIgb250byAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIEFTU0VSVChkYXRh
LT5hZGRyZXNzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLT5uZXh0SW5RdWV1ZSk7CiAgICAgICAg
IApAQCAtOTksMTEgKzk5LDExIEBAIHN0cnVjdCBCdWNrZXQgewogICAgIHZvaWQgZ2VuZXJpY0Rl
cXVldWUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3Nl
KQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRlcXVl
dWVpbmcgZnJvbSBidWNrZXQgYXQgIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAgICAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZGVxdWV1ZWluZyBm
cm9tIGJ1Y2tldCBhdCAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIAogICAg
ICAgICBpZiAoIXF1ZXVlSGVhZCkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAg
ICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVtcHR5LlxuIikp
OworICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6
IGVtcHR5LlxuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0Mywx
NCArMTQzLDE0IEBAIHN0cnVjdCBCdWNrZXQgewogICAgICAgICB3aGlsZSAoc2hvdWxkQ29udGlu
dWUpIHsKICAgICAgICAgICAgIFRocmVhZERhdGEqIGN1cnJlbnQgPSAqY3VycmVudFB0cjsKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmco
Y3VycmVudFRocmVhZCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJc
biIpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgp
LCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJcbiIpKTsKICAgICAgICAg
ICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIERl
cXVldWVSZXN1bHQgcmVzdWx0ID0gZnVuY3RvcihjdXJyZW50LCB0aW1lVG9CZUZhaXIpOwogICAg
ICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJlc3Vs
dDo6SWdub3JlOgogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3VycmVudFB0ciA9ICIs
IFJhd1BvaW50ZXIoY3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigq
Y3VycmVudFB0ciksICJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3VycmVudFB0ciA9ICIsIFJhd1BvaW50ZXIoY3VycmVu
dFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigqY3VycmVudFB0ciksICJcbiIp
KTsKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICAg
Y3VycmVudFB0ciA9ICYoKmN1cnJlbnRQdHIpLT5uZXh0SW5RdWV1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICAgICAgICAg
ICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJlc3VsdDo6UmVtb3Zl
QW5kQ29udGludWU6CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBkZXF1ZXVlaW5nICIs
IFJhd1BvaW50ZXIoY3VycmVudCksICIgZnJvbSAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCks
ICI6IGRlcXVldWVpbmcgIiwgUmF3UG9pbnRlcihjdXJyZW50KSwgIiBmcm9tICIsIFJhd1BvaW50
ZXIodGhpcyksICJcbiIpKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBxdWV1ZVRh
aWwpCiAgICAgICAgICAgICAgICAgICAgIHF1ZXVlVGFpbCA9IHByZXZpb3VzOwogICAgICAgICAg
ICAgICAgIGRpZERlcXVldWUgPSB0cnVlOwpAQCAtMjcxLDcgKzI3MSw3IEBAIEhhc2h0YWJsZSog
ZW5zdXJlSGFzaHRhYmxlKCkKICAgICAgICAgICAgIGN1cnJlbnRIYXNodGFibGUgPSBIYXNodGFi
bGU6OmNyZWF0ZShtYXhMb2FkRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChoYXNodGFibGUuY29t
cGFyZUV4Y2hhbmdlV2VhayhudWxscHRyLCBjdXJyZW50SGFzaHRhYmxlKSkgewogICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5n
KGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBpbml0aWFsIGhhc2h0YWJsZSAiLCBSYXdQb2lu
dGVyKGN1cnJlbnRIYXNodGFibGUpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IGNyZWF0ZWQgaW5pdGlhbCBoYXNodGFi
bGUgIiwgUmF3UG9pbnRlcihjdXJyZW50SGFzaHRhYmxlKSwgIlxuIikpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50SGFzaHRhYmxlOwogICAgICAgICAgICAgfQogCkBAIC0zNDYsNyAr
MzQ2LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51bVRocmVhZHMpCiAg
ICAgSGFzaHRhYmxlKiBvbGRIYXNodGFibGUgPSBoYXNodGFibGUubG9hZCgpOwogICAgIGlmIChv
bGRIYXNodGFibGUgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihvbGRIYXNodGFibGUtPnNpemUpIC8g
c3RhdGljX2Nhc3Q8ZG91YmxlPihudW1UaHJlYWRzKSA+PSBtYXhMb2FkRmFjdG9yKSB7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhy
ZWFkKCksICI6IG5vIG5lZWQgdG8gcmVoYXNoIGJlY2F1c2UgIiwgb2xkSGFzaHRhYmxlLT5zaXpl
LCAiIC8gIiwgbnVtVGhyZWFkcywgIiA+PSAiLCBtYXhMb2FkRmFjdG9yLCAiXG4iKSk7CisgICAg
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBubyBuZWVkIHRv
IHJlaGFzaCBiZWNhdXNlICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMs
ICIgPj0gIiwgbWF4TG9hZEZhY3RvciwgIlxuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51
bVRocmVhZHMpCiAgICAgb2xkSGFzaHRhYmxlID0gaGFzaHRhYmxlLmxvYWQoKTsKICAgICBpZiAo
b2xkSGFzaHRhYmxlICYmIHN0YXRpY19jYXN0PGRvdWJsZT4ob2xkSGFzaHRhYmxlLT5zaXplKSAv
IHN0YXRpY19jYXN0PGRvdWJsZT4obnVtVGhyZWFkcykgPj0gbWF4TG9hZEZhY3RvcikgewogICAg
ICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRo
cmVhZCgpLCAiOiBhZnRlciBsb2NraW5nLCBubyBuZWVkIHRvIHJlaGFzaCBiZWNhdXNlICIsIG9s
ZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMsICIgPj0gIiwgbWF4TG9hZEZhY3Rv
ciwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQo
KSwgIjogYWZ0ZXIgbG9ja2luZywgbm8gbmVlZCB0byByZWhhc2ggYmVjYXVzZSAiLCBvbGRIYXNo
dGFibGUtPnNpemUsICIgLyAiLCBudW1UaHJlYWRzLCAiID49ICIsIG1heExvYWRGYWN0b3IsICJc
biIpKTsKICAgICAgICAgdW5sb2NrSGFzaHRhYmxlKGJ1Y2tldHNUb1VubG9jayk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIGVuc3VyZUhhc2h0YWJs
ZVNpemUodW5zaWduZWQgbnVtVGhyZWFkcykKICAgICAKICAgICBIYXNodGFibGUqIG5ld0hhc2h0
YWJsZSA9IEhhc2h0YWJsZTo6Y3JlYXRlKG5ld1NpemUpOwogICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBuZXcgaGFz
aHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKKyAgICAgICAgZGF0
YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3JlYXRlZCBuZXcgaGFzaHRhYmxl
OiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKICAgICBmb3IgKFRocmVhZERh
dGEqIHRocmVhZERhdGEgOiB0aHJlYWREYXRhcykgewogICAgICAgICBpZiAodmVyYm9zZSkKLSAg
ICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiByZWhhc2hpbmcg
dGhyZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAi
LCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICBk
YXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiByZWhhc2hpbmcgdGhyZWFkIGRh
dGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2lu
dGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CiAgICAgICAgIHVuc2lnbmVkIGhhc2gg
PSBoYXNoQWRkcmVzcyh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSBoYXNoICUgbmV3SGFzaHRhYmxlLT5zaXplOwogICAgICAgICBpZiAodmVyYm9zZSkKLSAg
ICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBpbmRleCA9ICIs
IGluZGV4LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3Vy
cmVudCgpLCAiOiBpbmRleCA9ICIsIGluZGV4LCAiXG4iKSk7CiAgICAgICAgIEJ1Y2tldCogYnVj
a2V0ID0gbmV3SGFzaHRhYmxlLT5kYXRhW2luZGV4XS5sb2FkKCk7CiAgICAgICAgIGlmICghYnVj
a2V0KSB7CiAgICAgICAgICAgICBpZiAocmV1c2FibGVCdWNrZXRzLmlzRW1wdHkoKSkKQEAgLTQ4
NSw3ICs0ODUsNyBAQCBib29sIGVucXVldWUoY29uc3Qgdm9pZCogYWRkcmVzcywgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCks
ICI6IGVucXVldWVpbmcgb250byBidWNrZXQgIiwgUmF3UG9pbnRlcihidWNrZXQpLCAiIHdpdGgg
aW5kZXggIiwgaW5kZXgsICIgZm9yIGFkZHJlc3MgIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIiB3
aXRoIGhhc2ggIiwgaGFzaCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhU
aHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyBvbnRvIGJ1Y2tldCAiLCBSYXdQb2ludGVy
KGJ1Y2tldCksICIgd2l0aCBpbmRleCAiLCBpbmRleCwgIiBmb3IgYWRkcmVzcyAiLCBSYXdQb2lu
dGVyKGFkZHJlc3MpLCAiIHdpdGggaGFzaCAiLCBoYXNoLCAiXG4iKSk7CiAgICAgICAgIGJ1Y2tl
dC0+bG9jay5sb2NrKCk7CiAKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaGFzaHRhYmxl
IGNvdWxkIGhhdmUgcmVoYXNoZWQgdW5kZXIgdXMuCkBAIC00OTgsNyArNDk4LDcgQEAgYm9vbCBl
bnF1ZXVlKGNvbnN0IHZvaWQqIGFkZHJlc3MsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAg
ICAgIGJvb2wgcmVzdWx0OwogICAgICAgICBpZiAodGhyZWFkRGF0YSkgewogICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhy
ZWFkKCksICI6IHByb2NlZWRpbmcgdG8gZW5xdWV1ZSAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEp
LCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJl
bnQoKSwgIjogcHJvY2VlZGluZyB0byBlbnF1ZXVlICIsIFJhd1BvaW50ZXIodGhyZWFkRGF0YSks
ICJcbiIpKTsKICAgICAgICAgICAgIGJ1Y2tldC0+ZW5xdWV1ZSh0aHJlYWREYXRhKTsKICAgICAg
ICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNTY3LDcgKzU2Nyw3IEBA
IE5FVkVSX0lOTElORSBQYXJraW5nTG90OjpQYXJrUmVzdWx0IFBhcmtpbmdMb3Q6OnBhcmtDb25k
aXRpb25hbGx5SW1wbCgKICAgICBjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIHRpbWVv
dXQpCiB7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVu
dFRocmVhZCgpLCAiOiBwYXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRo
cmVhZDo6Y3VycmVudCgpLCAiOiBwYXJraW5nLlxuIikpOwogICAgIAogICAgIFRocmVhZERhdGEq
IG1lID0gbXlUaHJlYWREYXRhKCk7CiAgICAgbWUtPnRva2VuID0gMDsKQEAgLTY2MSw3ICs2NjEs
NyBAQCBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6UGFya1Jlc3VsdCBQYXJraW5nTG90OjpwYXJr
Q29uZGl0aW9uYWxseUltcGwoCiBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6VW5wYXJrUmVzdWx0
IFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKQogewogICAgIGlmICh2
ZXJib3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5w
YXJraW5nIG9uZS5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJl
bnQoKSwgIjogdW5wYXJraW5nIG9uZS5cbiIpKTsKICAgICAKICAgICBVbnBhcmtSZXN1bHQgcmVz
dWx0OwogCkBAIC03MDYsNyArNzA2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgUGFya2luZ0xvdDo6
dW5wYXJrT25lSW1wbCgKICAgICBjb25zdCBTY29wZWRMYW1iZGE8aW50cHRyX3QoUGFya2luZ0xv
dDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJraW5nIG9uZSB0aGUg
aGFyZCB3YXkuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50
KCksICI6IHVucGFya2luZyBvbmUgdGhlIGhhcmQgd2F5LlxuIikpOwogICAgIAogICAgIFJlZlB0
cjxUaHJlYWREYXRhPiB0aHJlYWREYXRhOwogICAgIGJvb2wgdGltZVRvQmVGYWlyID0gZmFsc2U7
CkBAIC03NTEsNyArNzUxLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVu
cGFya0NvdW50KGNvbnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICAgICAgcmV0
dXJuIDA7CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmco
Y3VycmVudFRocmVhZCgpLCAiOiB1bnBhcmtpbmcgY291bnQgPSAiLCBjb3VudCwgIiBmcm9tICIs
IFJhd1BvaW50ZXIoYWRkcmVzcyksICIuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmco
VGhyZWFkOjpjdXJyZW50KCksICI6IHVucGFya2luZyBjb3VudCA9ICIsIGNvdW50LCAiIGZyb20g
IiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpKTsKICAgICAKICAgICBWZWN0b3I8UmVmUHRy
PFRocmVhZERhdGE+LCA4PiB0aHJlYWREYXRhczsKICAgICBkZXF1ZXVlKApAQCAtNzYxLDcgKzc2
MSw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25z
dCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3VuCiAgICAgICAgIEJ1Y2tldE1vZGU6Oklnbm9y
ZUVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQsIGJvb2wpIHsKICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3Vy
cmVudFRocmVhZCgpLCAiOiBPYnNlcnZpbmcgZWxlbWVudCB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQ
b2ludGVyKGVsZW1lbnQtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxv
Zyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogT2JzZXJ2aW5nIGVsZW1lbnQgd2l0aCBh
ZGRyZXNzID0gIiwgUmF3UG9pbnRlcihlbGVtZW50LT5hZGRyZXNzKSwgIlxuIikpOwogICAgICAg
ICAgICAgaWYgKGVsZW1lbnQtPmFkZHJlc3MgIT0gYWRkcmVzcykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICAgICAgdGhyZWFkRGF0YXMuYXBw
ZW5kKGVsZW1lbnQpOwpAQCAtNzczLDcgKzc3Myw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQ
YXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3Vu
CiAKICAgICBmb3IgKFJlZlB0cjxUaHJlYWREYXRhPiYgdGhyZWFkRGF0YSA6IHRocmVhZERhdGFz
KSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhj
dXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEuZ2V0
KCkpLCAiIHdpdGggYWRkcmVzcyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAi
XG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAi
OiB1bnBhcmtpbmcgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLmdldCgpKSwgIiB3aXRoIGFkZHJl
c3MgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLT5hZGRyZXNzKSwgIlxuIikpOwogICAgICAgICBB
U1NFUlQodGhyZWFkRGF0YS0+YWRkcmVzcyk7CiAgICAgICAgIHsKICAgICAgICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcih0aHJlYWREYXRhLT5wYXJraW5nTG9jayk7CkBAIC03ODMsNyArNzgzLDcg
QEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVucGFya0NvdW50KGNvbnN0IHZv
aWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICB9CiAKICAgICBpZiAodmVyYm9zZSkKLSAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRvbmUgdW5wYXJraW5n
LlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBk
b25lIHVucGFya2luZy5cbiIpKTsKICAgICAKICAgICByZXR1cm4gdGhyZWFkRGF0YXMuc2l6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmgKaW5kZXggOTdhMjQzYjkwYmNh
YzAwYjJkN2VlY2RmMjdlMDQyNWZjNTJkNjdhNy4uZDRmZWIzNzEwYTg0NjdlMzdmNTA0ODY1OTlj
ZmVjZDIwZjE0YzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0Fk
YXB0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oCkBAIC0z
OCw4ICszOCw4IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAKICAgICB2b2lk
IGxvY2soKQogICAgIHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJl
YWQoKTsKLSAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9
IFRocmVhZDo6Y3VycmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAg
ICAgICAgIG1fcmVjdXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZWN1cnNpdmVMb2NrQWRhcHRlciB7CiAgICAgICAg
IG1fbG9jay5sb2NrKCk7CiAgICAgICAgIEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VS
VCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9v
d25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1cnNpb25Db3VudCA9IDE7CiAgICAgfQogICAgIApA
QCAtNTUsMTQgKzU1LDE0IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICB7CiAg
ICAgICAgIGlmICgtLW1fcmVjdXJzaW9uQ291bnQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1fb3duZXIgPSAwOworICAgICAgICBtX293bmVyID0gbnVsbHB0cjsKICAgICAgICAgbV9s
b2NrLnVubG9jaygpOwogICAgIH0KICAgICAKICAgICBib29sIHRyeUxvY2soKQogICAgIHsKLSAg
ICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAgaWYg
KG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9IFRocmVhZDo6Y3VycmVudCgp
OworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAgICAgICAgIG1fcmVjdXJzaW9u
Q291bnQrKzsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC03Miw3ICs3
Miw3IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAgICAgCiAgICAgICAgIEFT
U0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAg
ICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9vd25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1
cnNpb25Db3VudCA9IDE7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTgzLDcgKzgz
LDcgQEAgY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgewogICAgIH0KICAgICAKIHByaXZhdGU6
Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX293bmVyIHsgMCB9OworICAgIFRocmVhZCogbV9vd25l
ciB7IG51bGxwdHIgfTsgLy8gVXNlIFRocmVhZCogaW5zdGVhZCBvZiBSZWZQdHI8VGhyZWFkPiBz
aW5jZSBtX293bmVyIHRocmVhZCBpcyBhbHdheXMgYWxpdmUgd2hpbGUgbV9vbndlciBpcyBzZXQu
CiAgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsKICAgICBMb2NrVHlwZSBtX2xv
Y2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMGJlNWExMGVkMGY3MjVmOGQzZTE3ZTFjZjE5
YWIyMDlhOTAwYTgyOS4uYzU2ZjE1NmRkOWNiZWM0OTk5Njk3YzZkNTQ5ZTg3NTZmNzNiMjlmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgcW9zX2NsYXNzX3QgVGhyZWFk
OjphZGp1c3RlZFFPU0NsYXNzKHFvc19jbGFzc190IG9yaWdpbmFsQ2xhc3MpCiAKIHZvaWQgVGhy
ZWFkOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1faWQp
OworICAgIG91dC5wcmludCgiVGhyZWFkOiIsIFJhd1BvaW50ZXIodGhpcykpOwogfQogCiAjaWYg
IUhBVkUoRkFTVF9UTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGVlMTMwM2ExOTFiMDlkNGVjOWRkYzg3
Y2NjODgxNTQyOTdmYTIzMDYuLmM3NDM5NGI1MjAyMGE3ZjA1ZjZkNzE2MTA4MThjMjBhMTllMmZl
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCkBAIC04MCw3ICs4MCw5IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFk
R3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogICAgIGZyaWVuZCBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgT1MoV0lO
RE9XUykKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbihUaHJlYWRJZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5UaHJlYWQoKTsKIApAQCAtOTEsMTIgKzkzLDE2IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAvLyBSZXR1cm5zIFRocmVhZCBv
YmplY3QuCiAgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCisjaWYgT1MoV0lORE9XUykK
ICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBp
ZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4g
QXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJ
ZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQogICAgIC8vIHRoYXQgdGhlIHRocmVhZCBpbmZvcm1h
dGlvbiBpcyBhbGl2ZS4gV2hpbGUgVGhyZWFkOjpjdXJyZW50KCkgaXMgbm90IHNhZmUgaWYgaXQg
aXMgY2FsbGVkCiAgICAgLy8gZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3RoZXIgVExTIGRh
dGEsIGN1cnJlbnRJRCgpIGFsd2F5cyByZXR1cm5zIG1lYW5pbmdmdWwgdGhyZWFkIElELgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsK
IAorICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisjZW5k
aWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNoYW5nZVByaW9yaXR5KGludCk7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaCgpOwpAQCAtMTM3LDE4ICsxNDMsNiBAQCBjbGFzcyBU
aHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogCi0gICAg
VGhyZWFkSWRlbnRpZmllciBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLQotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUaHJlYWQmIHRocmVhZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBp
ZCgpID09IHRocmVhZC5pZCgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBU
aHJlYWQmIHRocmVhZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpZCgpICE9IHRocmVhZC5pZCgp
OwotICAgIH0KLQogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZygp
OwogCiAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrKCkgY29uc3QKQEAgLTI4MCw3ICsyNzQs
NiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7
CiAKICAgICAvLyBXb3JkTG9jayAmIExvY2sgcmVseSBvbiBUaHJlYWRTcGVjaWZpYy4gQnV0IFRo
cmVhZCBvYmplY3QgY2FuIGJlIGRlc3Ryb3llZCBldmVuIGFmdGVyIFRocmVhZFNwZWNpZmljIHRo
aW5ncyBhcmUgZGVzdHJveWVkLgogICAgIHN0ZDo6bXV0ZXggbV9tdXRleDsKLSAgICBUaHJlYWRJ
ZGVudGlmaWVyIG1faWQgeyAwIH07CiAgICAgSm9pbmFibGVTdGF0ZSBtX2pvaW5hYmxlU3RhdGUg
eyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9pc1NodXR0aW5nRG93biB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwpAQCAtMjg4LDcgKzI4MSw5IEBAIGNsYXNzIFRocmVh
ZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBTdGFja0JvdW5k
cyBtX3N0YWNrIHsgU3RhY2tCb3VuZHM6OmVtcHR5Qm91bmRzKCkgfTsKICAgICBWZWN0b3I8c3Rk
Ojp3ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhyZWFkR3JvdXBzOwogICAgIFBsYXRmb3JtVGhy
ZWFkSGFuZGxlIG1faGFuZGxlOwotI2lmIE9TKERBUldJTikKKyNpZiBPUyhXSU5ET1dTKQorICAg
IFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsKKyNlbGlmIE9TKERBUldJTikKICAgICBtYWNo
X3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwogI2VsaWYgVVNFKFBUSFJFQURTKQogICAgIFBsYXRm
b3JtUmVnaXN0ZXJzKiBtX3BsYXRmb3JtUmVnaXN0ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMzA3LDEx
ICszMDIsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhy
ZWFkPiB7CiAgICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKIH07CiAKLWlubGluZSBUaHJl
YWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQotewotICAgIHJldHVybiBUaHJlYWQ6OmN1cnJl
bnRJRCgpOwotfQotCiBpbmxpbmUgVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQog
ewogI2lmICFIQVZFKEZBU1RfVExTKQpAQCAtMzQ1LDExICszMzUsMTAgQEAgaW5saW5lIFRocmVh
ZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6
VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6VGhyZWFkOwotdXNpbmcgV1RGOjpjdXJyZW50
VGhyZWFkOwogCiAjaWYgT1MoV0lORE9XUykKK3VzaW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsK
IHVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwogdXNpbmcgV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IDZlODhh
YTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZhZGMzMGM2ZDIuLjRhY2UyOGYxZjU5Zjg4Njk3MDkx
MDA4YTBhMGIxMjAxMGM5NzYyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgK
QEAgLTQ1LDcgKzQ1LDYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIFRocmVhZElkZW50
aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFRocmVhZEZ1bmN0aW9uID0gdm9pZCAoKikodm9pZCog
YXJndW1lbnQpOwogCiAjaWYgVVNFKFBUSFJFQURTKQpAQCAtNTMsNiArNTIsNyBAQCB1c2luZyBQ
bGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRfdDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBw
dGhyZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0Zm9ybUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90
OwogI2VsaWYgT1MoV0lORE9XUykKK3VzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsK
IHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0gSEFORExFOwogc3RydWN0IFBsYXRmb3JtTXV0
ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04gbV9pbnRlcm5hbE11dGV4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDgzYjlkNTA5OTUyNWIwNmI2MGU5MTEwM2RkZjUyNjQ5
YmE5MDgwM2MuLmNmYzYyYWEwMDE3YjAxZjhmZTcwM2E4YTNjN2E2NjJhOGQ1ZTUwNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTI4MCw5ICsyODAsOSBAQCBpbnQgVGhy
ZWFkOjp3YWl0Rm9yQ29tcGxldGlvbigpCiAgICAgaW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pv
aW4oaGFuZGxlLCAwKTsKIAogICAgIGlmIChqb2luUmVzdWx0ID09IEVERUFETEspCi0gICAgICAg
IExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tl
ZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3
YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIHRoaXMpOwogICAgIGVs
c2UgaWYgKGpvaW5SZXN1bHQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAl
dSB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIsIG1faWQpOworICAgICAgICBMT0dfRVJST1Io
IlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIsIHRoaXMpOwogCiAgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBBU1NFUlQoam9p
bmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFRocmVh
ZDo6ZGV0YWNoKCkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0
ZXgpOwogICAgIGludCBkZXRhY2hSZXN1bHQgPSBwdGhyZWFkX2RldGFjaChtX2hhbmRsZSk7CiAg
ICAgaWYgKGRldGFjaFJlc3VsdCkKLSAgICAgICAgTE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVy
ICV1IHdhcyB1bmFibGUgdG8gYmUgZGV0YWNoZWRcbiIsIG1faWQpOworICAgICAgICBMT0dfRVJS
T1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGRldGFjaGVkXG4iLCB0aGlzKTsKIAogICAg
IGlmICghaGFzRXhpdGVkKCkpCiAgICAgICAgIGRpZEJlY29tZURldGFjaGVkKCk7CkBAIC0zMDgs
NyArMzA4LDcgQEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiAKIFRocmVhZCYgVGhyZWFkOjppbml0
aWFsaXplQ3VycmVudFRMUygpCiB7Ci0gICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQgdGhyZWFkLCBU
aHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCisgICAgLy8gTm90IGEgV1RG
LWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWQgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAgICBSZWY8
VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKICAgICB0aHJlYWQtPmVz
dGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUocHRocmVhZF9zZWxmKCkpOwogICAgIHRocmVh
ZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CkBAIC0zMTcsMTEgKzMxNyw2IEBAIFRocmVhZCYgVGhy
ZWFkOjppbml0aWFsaXplQ3VycmVudFRMUygpCiAgICAgcmV0dXJuIGluaXRpYWxpemVUTFMoV1RG
TW92ZSh0aHJlYWQpKTsKIH0KIAotVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgp
Ci17Ci0gICAgcmV0dXJuIGN1cnJlbnQoKS5pZCgpOwotfQotCiBib29sIFRocmVhZDo6c2lnbmFs
KGludCBzaWduYWxOdW1iZXIpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2tlcihtX211dGV4KTsKQEAgLTMzMyw3ICszMjgsNyBAQCBib29sIFRocmVhZDo6c2lnbmFsKGlu
dCBzaWduYWxOdW1iZXIpCiAKIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9p
ZCwgUGxhdGZvcm1TdXNwZW5kRXJyb3I+CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKGlkKCkgIT0gY3VycmVudFRocmVhZCgpLCAiV2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuZGlu
ZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
TUVTU0FHRSh0aGlzICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1
c3BlbmRpbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICAvLyBEdXJpbmcgc3Vz
cGVuZCwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9tIHRoZSBv
dGhlciB0aHJlYWRzLgogICAgIC8vIFdlIHVzZSBnbG9iYWwgbG9jayBpbnN0ZWFkIG9mIHBlciB0
aHJlYWQgbG9jay4KICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNhc2UsIHRoZXJlIGFy
ZSB0aHJlYWRzIEEgYW5kIEIuCkBAIC00NTEsMTMgKzQ0Niw5IEBAIHZvaWQgVGhyZWFkOjplc3Rh
Ymxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCBoYW5kbGUpCiB7CiAgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBtX2hhbmRsZSA9
IGhhbmRsZTsKLSAgICBpZiAoIW1faWQpIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6YXRvbWljPFRo
cmVhZElkZW50aWZpZXI+IHByb3ZpZGVyIHsgMCB9OwotICAgICAgICBtX2lkID0gKytwcm92aWRl
cjsKICNpZiBPUyhEQVJXSU4pCi0gICAgICAgIG1fcGxhdGZvcm1UaHJlYWQgPSBwdGhyZWFkX21h
Y2hfdGhyZWFkX25wKGhhbmRsZSk7CisgICAgbV9wbGF0Zm9ybVRocmVhZCA9IHB0aHJlYWRfbWFj
aF90aHJlYWRfbnAoaGFuZGxlKTsKICNlbmRpZgotICAgIH0KIH0KIAogI2lmICFIQVZFKEZBU1Rf
VExTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggYmVjMGQzNDNkYWU1ZWVkNDFmOTUxYjNl
OTZiZGZmZjA1NjU3ZDgxNy4uYTgxNTkwNDA2OTY3ZDZlODU2NjkxNTM3ZTIwY2M1ZTgxZTFiOWMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgaW50IFRocmVh
ZDo6d2FpdEZvckNvbXBsZXRpb24oKQogCiAgICAgRFdPUkQgam9pblJlc3VsdCA9IFdhaXRGb3JT
aW5nbGVPYmplY3QoaGFuZGxlLCBJTkZJTklURSk7CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gV0FJ
VF9GQUlMRUQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91
bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0df
RVJST1IoIlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVp
dCIsIHRoaXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211
dGV4KTsKICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTIxNiw3
ICsyMTYsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKIAogYXV0byBUaHJlYWQ6OnN1c3BlbmQo
KSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsKLSAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoaWQoKSAhPSBjdXJyZW50VGhyZWFkKCksICJXZSBkbyBub3Qg
c3VwcG9ydCBzdXNwZW5kaW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7CisgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMgIT0gJlRocmVhZDo6Y3VycmVudCgpLCAiV2Ug
ZG8gbm90IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOwog
ICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKICAgICBEV09SRCByZXN1
bHQgPSBTdXNwZW5kVGhyZWFkKG1faGFuZGxlKTsKICAgICBpZiAocmVzdWx0ICE9IChEV09SRCkt
MSkKQEAgLTI5Myw3ICsyOTMsNyBAQCBUaHJlYWQqIFRocmVhZDo6Y3VycmVudER5aW5nKCkKICAg
ICBBU1NFUlQoc19rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKICAgICAvLyBBZnRl
ciBGTFMgaXMgZGVzdHJveWVkLCB0aGlzIG1hcCBvZmZlcnMgdGhlIHZhbHVlIHVudGlsIHRoZSBz
ZWNvbmQgdGhyZWFkIGV4aXQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHN0ZDo6bG9ja19ndWFy
ZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgcmV0dXJuIHRocmVh
ZE1hcCgpLmdldChjdXJyZW50VGhyZWFkKCkpOworICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQo
Y3VycmVudElEKCkpOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2Rl
IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL01h
aW5UaHJlYWRNYWMubW0KaW5kZXggMzFkODE0YmY3YTdiOTY1Nzk1MmU4NWY4ZGZkNjQ2MDg4ZTNl
ZDcyNS4uMjk5Yjk5OTZiNzNkODYwMTgwYTk2M2VjYTMwNzc4NzY1MmRlNzE2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KKysrIGIvU291cmNlL1dURi93
dGYvbWFjL01haW5UaHJlYWRNYWMubW0KQEAgLTY2LDggKzY2LDggQEAgc3RhdGljIHB0aHJlYWRf
dCBtYWluVGhyZWFkUHRocmVhZDsKIHN0YXRpYyBOU1RocmVhZCogbWFpblRocmVhZE5TVGhyZWFk
OwogCiAjaWYgVVNFKFdFQl9USFJFQUQpCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzQXBwbGlj
YXRpb25VSVRocmVhZElkZW50aWZpZXI7Ci1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzV2ViVGhy
ZWFkSWRlbnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIHNBcHBsaWNhdGlvblVJVGhyZWFkOworc3Rh
dGljIFRocmVhZCogc1dlYlRocmVhZDsKICNlbmRpZgogCiB2b2lkIGluaXRpYWxpemVNYWluVGhy
ZWFkUGxhdGZvcm0oKQpAQCAtMTczLDE2ICsxNzMsMTAgQEAgYm9vbCBpc1dlYlRocmVhZCgpCiAg
ICAgcmV0dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5UaHJlYWRQdGhyZWFk
KTsKIH0KIAotdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKQor
dm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpCiB7CiAgICAgQVNTRVJUKHB0aHJl
YWRfbWFpbl9ucCgpKTsKLSAgICBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIgPSBjdXJy
ZW50VGhyZWFkKCk7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZVdlYlRocmVhZElkZW50aWZpZXIoKQot
ewotICAgIEFTU0VSVCghcHRocmVhZF9tYWluX25wKCkpOwotICAgIHNXZWJUaHJlYWRJZGVudGlm
aWVyID0gY3VycmVudFRocmVhZCgpOworICAgIHNBcHBsaWNhdGlvblVJVGhyZWFkID0gJlRocmVh
ZDo6Y3VycmVudCgpOwogfQogCiB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCkBA
IC0xOTIsMTYgKzE4NiwxOCBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCiAg
ICAgbWFpblRocmVhZEVzdGFibGlzaGVkQXNQdGhyZWFkTWFpbiA9IGZhbHNlOwogICAgIG1haW5U
aHJlYWRQdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CiAgICAgbWFpblRocmVhZE5TVGhyZWFkID0g
W1tOU1RocmVhZCBjdXJyZW50VGhyZWFkXSByZXRhaW5dOworCisgICAgc1dlYlRocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKIH0KIAotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JU
aHJlYWQoVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9j
YWxEYXRhRm9yVGhyZWFkKFRocmVhZCYgdGhyZWFkKQogewotICAgIFRocmVhZElkZW50aWZpZXIg
Y3VycmVudFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIGlmICh0aHJlYWRJZCA9PSBj
dXJyZW50VGhyZWFkSWQpCisgICAgVGhyZWFkJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJy
ZW50KCk7CisgICAgaWYgKCZ0aHJlYWQgPT0gJmN1cnJlbnRUaHJlYWQpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKHRocmVhZElkID09IHNXZWJUaHJlYWRJZGVudGlmaWVyIHx8IHRo
cmVhZElkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IChjdXJyZW50VGhyZWFkSWQgPT0gc1dlYlRocmVhZElkZW50aWZpZXIgfHwgY3VycmVudFRocmVh
ZElkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkSWRlbnRpZmllcikgJiYgd2ViVGhyZWFkSXNVbmlu
aXRpYWxpemVkT3JMb2NrZWRPckRpc2FibGVkKCk7CisgICAgaWYgKCZ0aHJlYWQgPT0gc1dlYlRo
cmVhZCB8fCAmdGhyZWFkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkKQorICAgICAgICByZXR1cm4g
KCZjdXJyZW50VGhyZWFkID09IHNXZWJUaHJlYWQgfHwgJmN1cnJlbnRUaHJlYWQgPT0gc0FwcGxp
Y2F0aW9uVUlUaHJlYWQpICYmIHdlYlRocmVhZElzVW5pbml0aWFsaXplZE9yTG9ja2VkT3JEaXNh
YmxlZCgpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaAppbmRleCAxM2YzMTIxNTZj
NjQ4ZmYyNTJhODZjYjRlZGVkYTY0YzgxZTk3ZjAyLi4yYjQyYzA2ZjM5ODM4ZDA5OGM1MzdmYzEz
M2JjOGFkOWU0ZDhjNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaApAQCAtMzUsMTAgKzM1LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBvcmlnaW5UaHJlYWRJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkSUQ7IH0KKyAgICBUaHJlYWQmIG9yaWdpblRo
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkLmdldCgpOyB9CiAKICAgICB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbCB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgICAgIEFTU0VSVChtX29yaWdpblRocmVhZC5w
dHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2Nr
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dExvY2spOwogICAgICAgICBBY3RpdmVET01PYmplY3Q6
OmNvbnRleHREZXN0cm95ZWQoKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgY2xhc3MgSURCQWN0aXZlRE9N
T2JqZWN0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gUGFyYW1ldGVycywgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZv
aWQgcGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoVCYgb2JqZWN0LCB2b2lkIChUOjoqbWV0
aG9kKShQYXJhbWV0ZXJzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKG9yaWdpblRocmVhZElEKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZElEKCkp
OworICAgICAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZvYmplY3Qub3JpZ2luVGhyZWFk
KCkpOwogCi0gICAgICAgIGlmIChvYmplY3Qub3JpZ2luVGhyZWFkSUQoKSA9PSBjdXJyZW50VGhy
ZWFkKCkpIHsKKyAgICAgICAgaWYgKCZvYmplY3Qub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKSB7CiAgICAgICAgICAgICAob2JqZWN0LiptZXRob2QpKGFyZ3VtZW50cy4uLik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3Mg
SURCQWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAKICAgICB2b2lk
IGNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5j
dGlvbikKICAgICB7Ci0gICAgICAgIGlmIChvcmlnaW5UaHJlYWRJRCgpID09IGN1cnJlbnRUaHJl
YWQoKSkgeworICAgICAgICBpZiAoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSkgewogICAgICAgICAgICAgZnVuY3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtODcsNyArODcsNyBAQCBjbGFzcyBJREJBY3RpdmVET01PYmplY3QgOiBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSWRlbnRpZmll
ciBtX29yaWdpblRocmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4g
bV9vcmlnaW5UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogICAgIExvY2sgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0TG9jazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDYyZmExNTFjYWIwOTdiZjQ5ZGUzMTExYzczOTBj
NGExZTdlMDRjZWYuLjQxMTJlYWQ0MjU4ZDc1YjU4NTdkZjdiOTkxNmM1ODFiYTc4ODM4Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBJREJDdXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgYwogICAgICwgbV9pbmZvKGluZm8p
CiAgICAgLCBtX3NvdXJjZSgmb2JqZWN0U3RvcmUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJmVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KQEAgLTcxLDE5ICs3MSwxOSBAQCBJREJD
dXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQkluZGV4JiBp
bmRleCwgY29uc3QgSURCQ3VycwogICAgICwgbV9pbmZvKGluZm8pCiAgICAgLCBtX3NvdXJjZSgm
aW5kZXgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RT
dG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJmVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBzdXNwZW5kSWZOZWVk
ZWQoKTsKIH0KIAogSURCQ3Vyc29yOjp+SURCQ3Vyc29yKCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUo
KS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKIH0KIAogYm9vbCBJREJDdXJzb3I6OnNvdXJjZXNEZWxldGVkKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
c291cmNlLAogICAgICAgICBbXSAoY29uc3QgUmVmUHRyPElEQk9iamVjdFN0b3JlPiYgb2JqZWN0
U3RvcmUpIHsgcmV0dXJuIG9iamVjdFN0b3JlLT5pc0RlbGV0ZWQoKTsgfSwKQEAgLTEwMSwxNCAr
MTAxLDE0IEBAIElEQk9iamVjdFN0b3JlJiBJREJDdXJzb3I6OmVmZmVjdGl2ZU9iamVjdFN0b3Jl
KCkgY29uc3QKIAogSURCVHJhbnNhY3Rpb24mIElEQkN1cnNvcjo6dHJhbnNhY3Rpb24oKSBjb25z
dAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUo
KS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBlZmZlY3RpdmVPYmpl
Y3RTdG9yZSgpLnRyYW5zYWN0aW9uKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCQ3Vyc29yOjp1cGRhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjp1cGRhdGUiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3Rv
cmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAogICAgIGlmIChzb3VyY2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4
ZWN1dGUgJ3VwZGF0ZScgb24gJ0lEQkN1cnNvcic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZm
ZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0xNDksNyArMTQ5
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogRXhjZXB0aW9uT3I8dm9pZD4gSURCQ3Vyc29y
OjphZHZhbmNlKHVuc2lnbmVkIGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDdXJz
b3I6OmFkdmFuY2UiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9i
amVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9y
ZXF1ZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
QEAgLTIzNCw3ICsyMzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJDdXJzb3I6OmNvbnRpbnVl
RnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5VgogRXhjZXB0aW9uT3I8
dm9pZD4gSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleURhdGEmIGtleSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uICh0byBr
ZXkgJXMpIiwga2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0
U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9yZXF1ZXN0KQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5RGF0YSYg
a2V5KQogCiB2b2lkIElEQkN1cnNvcjo6dW5jaGVja2VkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJL
ZXlEYXRhJiBrZXksIHVuc2lnbmVkIGNvdW50KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgKyttX291dHN0YW5kaW5nUmVxdWVzdENvdW50OwogCkBAIC0yNzgsNyArMjc4LDcg
QEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0
YSYga2V5LCB1bnNpZ25lZCBjb3VudCkKIAogdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJh
dGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5
S2V5KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3Rv
cmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgKyttX291dHN0YW5kaW5n
UmVxdWVzdENvdW50OwogCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hl
Y2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRh
JgogRXhjZXB0aW9uT3I8UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OmRlbGV0
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1
cnNvcjo6ZGVsZXRlRnVuY3Rpb24iKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVm
ZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigp
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAg
IGlmIChzb3VyY2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2RlbGV0ZScgb24g
J0lEQkN1cnNvcic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9y
ZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0zMjAsNyArMzIwLDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUKIHZvaWQgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkN1cnNvcjo6c2V0R2V0UmVzdWx0IC0gY3VycmVudCBrZXkgJXMiLCBnZXRSZXN1bHQu
a2V5RGF0YSgpLmxvZ2dpbmdTdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTAwKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCku
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSByZXF1
ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggOGY2
ZTc3NWRhMmRjNzJmMTYwNTg0YTViYzgyZGFlNjdlNjE5MjQ0My4uMTA5MzIxOTM4NWE2OWI5M2Y5
OWMyOTMzMDNiNTQyOTdjZTRkZWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBJREJEYXRhYmFzZTo6
SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9jbG9zZWRJblNl
cnZlcikKICAgICAgICAgbV9jb25uZWN0aW9uUHJveHktPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3Nl
ZCgqdGhpcyk7CkBAIC03NCw3ICs3NCw3IEBAIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQog
CiBib29sIElEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSB8fCBtYXlCZUdDVGhyZWFk
KCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8
IG1heUJlR0NUaHJlYWQoKSk7CiAKICAgICBpZiAobV9jbG9zZWRJblNlcnZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtODcsMTkgKzg3LDE5IEBAIGJvb2wgSURCRGF0YWJhc2U6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAKIGNvbnN0IFN0cmluZyBJREJEYXRhYmFzZTo6bmFtZSgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAg
ICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9CiAKIHVpbnQ2NF90IElEQkRhdGFiYXNlOjp2ZXJz
aW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKICAgICByZXR1cm4gbV9pbmZvLnZlcnNpb24oKTsKIH0KIAogUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9y
IChhdXRvJiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKQEAgLTExMCw3ICsxMTAs
NyBAQCBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMo
KSBjb25zdAogCiB2b2lkIElEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZShJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24pOwogICAgIEFTU0VSVChtX2luZm8uaGFzT2JqZWN0U3RvcmUob2JqZWN0
U3RvcmUuaW5mbygpLm5hbWUoKSkpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJREJEYXRh
YmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25z
dCBTdHJpbmcmIG4KIAogdm9pZCBJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoSURCSW5kZXgmIGlu
ZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KTsKICAgICBBU1NFUlQobV9pbmZvLmhhc09iamVjdFN0b3JlKGluZGV4Lm9iamVjdFN0b3JlKCku
aW5mbygpLm5hbWUoKSkpOwogICAgIEFTU0VSVChtX2luZm8uaW5mb0ZvckV4aXN0aW5nT2JqZWN0
U3RvcmUoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFtZSgpKS0+aGFzSW5kZXgoaW5kZXgu
aW5mbygpLm5hbWUoKSkpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJP
YmplY3RTdG9yZT4+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZSAtICglcyAlcykiLCBtX2luZm8ubmFtZSgpLnV0ZjgoKS5kYXRhKCksIG5hbWUudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAg
ICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CiAKICAgICBpZiAoIW1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKQpAQCAtMTY1LDcgKzE2NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJUcmFu
c2FjdGlvbj4+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTdHJpbmdPclZlY3Rvck9mU3RyaW5n
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbiIpOwogCi0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9j
bG9zZVBlbmRpbmcpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAndHJhbnNhY3Rpb24nIG9uICdJREJE
YXRhYmFzZSc6IFRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3NpbmcuIikgfTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2RlbGV0ZU9iamVjdFN0b3JlJyBvbiAn
SURCRGF0YWJhc2UnOiBUaGUgZGF0YWJhc2UgaXMgbm90IHJ1bm5pbmcgYSB2ZXJzaW9uIGNoYW5n
ZSB0cmFuc2FjdGlvbi4iKSB9OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSURCRGF0YWJhc2U6
OmNsb3NlKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmNsb3NlIC0gJSIg
UFJJdTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fY2xvc2VQZW5kaW5n
KSB7CiAgICAgICAgIG1fY2xvc2VQZW5kaW5nID0gdHJ1ZTsKQEAgLTI1OSw3ICsyNTksNyBAQCB2
b2lkIElEQkRhdGFiYXNlOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KGNvbnN0IElEQkVycm9yJiBl
cnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmNvbm5lY3Rpb25Ub1Nl
cnZlckxvc3QgLSAlIiBQUkl1NjQsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fY2xv
c2VQZW5kaW5nID0gdHJ1ZTsKICAgICBtX2Nsb3NlZEluU2VydmVyID0gdHJ1ZTsKQEAgLTI4NCw3
ICsyODQsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIoKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyIC0gJSIgUFJJ
dTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9jbG9zZWRJblNlcnZlcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzAxLDEzICszMDEsMTMgQEAgdm9pZCBJREJEYXRhYmFzZTo6
bWF5YmVDbG9zZUluU2VydmVyKCkKIAogY29uc3QgY2hhciogSURCRGF0YWJhc2U6OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogICAgIHJldHVybiAiSURCRGF0YWJhc2UiOwogfQogCiBib29sIElEQkRhdGFi
YXNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IHZhbHVlIHdpbGwgc29tZXRpbWVzIGJlIGZhbHNlIHdoZW4gZGF0YWJhc2Ugb3BlcmF0aW9ucyBh
cmUgYWN0dWFsbHkgaW4gcHJvZ3Jlc3MuCiAgICAgLy8gU3VjaCBkYXRhYmFzZSBvcGVyYXRpb25z
IGRvIG5vdCB5ZXQgZXhpc3QuCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6
c3RvcCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpzdG9wIC0gJSIgUFJJ
dTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVy
cygpOwogCkBAIC0zNDEsNyArMzQxLDcgQEAgUmVmPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFz
ZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3QKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uICVzIiwgaW5mby5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNT
RVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7CiAgICAgQVNTRVJUKGluZm8ubW9kZSgp
ID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSk7CiAgICAgQVNTRVJUKCFtX2Ns
b3NlUGVuZGluZyk7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkU3Rh
cnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3Ig
dGhlIGNsaWVudCB0byBoYXZlIGFib3J0ZWQgYSB0cmFuc2FjdGlvbiBiZWZvcmUgdGhlIHNlcnZl
ciByZXBsaWVzIGJhY2sgdGhhdCBpdCBoYXMgc3RhcnRlZC4KICAgICBpZiAobV9hYm9ydGluZ1Ry
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSkKQEAg
LTM3Miw3ICszNzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJE
YXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlk
ZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gcmVmVHJhbnNhY3Rp
b24gPSBtX2FjdGl2ZVRyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCkpOwogICAgIEFTU0VSVChyZWZUcmFuc2FjdGlvbik7CkBAIC0zODMsNyArMzgzLDcgQEAg
dm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ29tbWl0
VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID09ICZ0
cmFuc2FjdGlvbikKICAgICAgICAgbV9pbmZvLnNldFZlcnNpb24odHJhbnNhY3Rpb24uaW5mbygp
Lm5ld1ZlcnNpb24oKSk7CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6d2ls
bEFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24gJXMiLCB0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAg
YXV0byByZWZUcmFuc2FjdGlvbiA9IG1fYWN0aXZlVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFyZWZUcmFuc2FjdGlvbikKQEAgLTQx
NSw3ICs0MTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uKElEQlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJh
c2U6OmRpZEFib3J0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKHRyYW5zYWN0aW9uLmlzVmVyc2lv
bkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5vcmlnaW5hbERhdGFiYXNl
SW5mbygpKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRDb21taXRP
ckFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uICVz
IiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
IAogICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9PSAmdHJhbnNhY3Rpb24pCiAg
ICAgICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKQEAgLTQ2MSw3ICs0
NjEsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZQogICAgIHVpbnQ2NF90IGN1cnJlbnRWZXJz
aW9uID0gbV9pbmZvLnZlcnNpb24oKTsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6
OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQgLSBjdXJyZW50IHZlcnNpb24gJSIgUFJJdTY0ICIsIHJl
cXVlc3RlZCB2ZXJzaW9uICUiIFBSSXU2NCAiLCBjb25uZWN0aW9uICUiIFBSSXU2NCAiICglcCki
LCBjdXJyZW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbiwgbV9kYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgfHwgbV9jbG9zZVBl
bmRpbmcpIHsKICAgICAgICAgY29ubmVjdGlvblByb3h5KCkuZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudChtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyKTsK
QEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZQogdm9pZCBJREJEYXRh
YmFzZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50ICglIiBQUkl1NjQgIikgKCVwKSIsIG1fZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKTsKIApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpc3BhdGNoRXZl
bnQoRXZlbnQmIGV2ZW50KQogCiB2b2lkIElEQkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleEluZm8o
Y29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0Zv
ckV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAg
QVNTRVJUKG9iamVjdFN0b3JlKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIElEQkRhdGFiYXNl
OjpkaWRDcmVhdGVJbmRleEluZm8oY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogCiB2b2lkIElE
QkRhdGFiYXNlOjpkaWREZWxldGVJbmRleEluZm8oY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0
byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mby5v
YmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCA0OTdkZWMx
YTQwZmQwZDdjNmY1MTEyOWI1MTgxZGYyZjFlODczM2MwLi4xZTBhYjk5M2ZjOGMxMzc2YzJiNmI4
MmQ3NGRkNDMzMDhmMDBhNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguY3BwCkBAIC00OCwxNCArNDgsMTQgQEAgSURCSW5kZXg6OklEQkluZGV4KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywg
SUQKICAgICAsIG1fb3JpZ2luYWxJbmZvKGluZm8pCiAgICAgLCBtX29iamVjdFN0b3JlKG9iamVj
dFN0b3JlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKIElEQklu
ZGV4Ojp+SURCSW5kZXgoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogfQogCiBjb25zdCBjaGFyKiBJREJJbmRleDo6
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC03NSwxMyArNzUsMTMgQEAgYm9vbCBJREJJ
bmRleDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogY29uc3QgU3RyaW5nJiBJREJJbmRl
eDo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkluZGV4OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNh
Y3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgc2V0IHByb3Bl
cnR5ICduYW1lJyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggaGFzIGJlZW4gZGVsZXRlZC4iKSB9
OwpAQCAtMTA5LDMxICsxMDksMzEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSURCSW5kZXg6OnNldE5h
bWUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBJREJPYmplY3RTdG9yZSYgSURCSW5kZXg6Om9iamVj
dFN0b3JlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUu
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gbV9vYmplY3RTdG9yZTsKIH0KIAogY29u
c3QgSURCS2V5UGF0aCYgSURCSW5kZXg6OmtleVBhdGgoKSBjb25zdAogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCiBib29sIElEQkluZGV4Ojp1bmlxdWUoKSBj
b25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFu
c2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29i
amVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBtX2luZm8udW5pcXVlKCk7CiB9CiAKIGJvb2wg
SURCSW5kZXg6Om11bHRpRW50cnkoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBtX2lu
Zm8ubXVsdGlFbnRyeSgpOwogfQogCiB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJz
aW9uQ2hhbmdlQWJvcnQoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgLy8gT25seSByb2xsYmFjayB0byB0
aGUgb3JpZ2luYWwgaW5mbyBpZiB0aGlzIGluZGV4IHN0aWxsIGV4aXN0cyBpbiB0aGUgcm9sbGVk
LWJhY2sgZGF0YWJhc2UgaW5mby4KICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5pbmZvKCkuaW5mb0ZvckV4aXN0aW5nT2Jq
ZWN0U3RvcmUobV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTE1Miw3ICsx
NTIsNyBAQCB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJvcnQo
KQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRl
ZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5DdXJzb3InIG9uICdJREJJbmRleCc6IFRo
ZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTE3
Myw3ICsxNzMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVu
Q3Vyc29yKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYQogRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQkluZGV4OjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIGtleVJh
bmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmIChrZXlSYW5n
ZS5oYXNFeGNlcHRpb24oKSkKQEAgLTE4NSw3ICsxODUsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4OjpvcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1Zh
bHVlCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29y
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuS2V5
Q3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRy
YW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUu
aXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1cnNvcicgb24gJ0lE
QkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4i
KSB9OwpAQCAtMjI3LDcgKzIyNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmNvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlm
IChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS5pc0RlbGV0ZWQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBl
eGVjdXRlICdjb3VudCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3Rv
cmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjYyLDcgKzI2Miw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXkpCiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigp
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9y
IGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjk3LDcgKzI5Nyw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEtleShFeGVjU3Rh
dGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCSW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29i
amVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24g
J0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRl
ZC4iKSB9OwpAQCAtMzE1LDcgKzMxNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLCiBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVj
U3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsJyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggb3Ig
aXRzIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0zMzgsNyArMzM4LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsS2V5cyIpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1f
ZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1
dGUgJ2dldEFsbEtleXMnIG9uICdJREJJbmRleCc6IFRoZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0
b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTM2MCw3ICszNjAsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0
YXRlLCBKU1ZhbHVlCiAKIHZvaWQgSURCSW5kZXg6Om1hcmtBc0RlbGV0ZWQoKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFi
YXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgQVNTRVJUKCFtX2RlbGV0ZWQpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAK
aW5kZXggMDhhNzg0YmEyNDIyMzBlNjM1MzcyNTYwMDEzMWJlNjFiMzJiYmQwZC4uMjg1ODk1NzZj
NjMyYmE0ZGU1N2U1NmMwNjFhMzJjZmY3OWZmNzkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjEsMTQgKzYxLDE0
IEBAIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBJREJPYmplY3RTCiAgICAgLCBtX29yaWdpbmFsSW5mbyhpbmZvKQog
ICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKIElEQk9iamVj
dFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiB9CiAKIGNvbnN0IGNoYXIqIElEQk9iamVjdFN0b3JlOjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKQEAgLTg4LDEzICs4OCwxMyBAQCBib29sIElEQk9iamVjdFN0b3JlOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBjb25zdCBTdHJpbmcmIElEQk9iamVjdFN0b3Jl
OjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
ICAgIHJldHVybiBtX2luZm8ubmFtZSgpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmpl
Y3RTdG9yZTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgc2V0
IHByb3BlcnR5ICduYW1lJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhh
cyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTExOSwxMyArMTE5LDEzIEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IElEQk9iamVjdFN0b3JlOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogY29uc3Qg
c3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25z
dAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1f
aW5mby5rZXlQYXRoKCk7CiB9CiAKIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9y
ZTo6aW5kZXhOYW1lcygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5n
TGlzdDo6Y3JlYXRlKCk7CiAKQEAgLTE0MCwyMCArMTQwLDIwIEBAIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CiAKIElEQlRyYW5zYWN0aW9u
JiBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb247CiB9CiAKIGJvb2wgSURC
T2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5hdXRvSW5jcmVtZW50KCk7CiB9
CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJz
b3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIElEQkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVj
dFN0b3JlOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbkN1cnNv
cicgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVk
LiIpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlMKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhl
Y1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIElEQkN1cnNvckRp
cmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0
aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0
aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAog
ICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1cnNvcicg
b24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIp
IH07CkBAIC0yMDEsNyArMjAxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJP
YmplY3RTdG9yZTo6b3BlbktleUN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwKIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpnZXQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYg
KG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdnZXQnIG9uICdJREJPYmplY3RTdG9y
ZSc6IFRoZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjE5LDcgKzIx
OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQk9iamVjdFN0b3JlOjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdl
KiBrZXlSYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmdldCIp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9kZWxl
dGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhl
IG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yMzcsNyArMjM3LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0KEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW4KIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
T2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRLZXkiKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZh
aWxlZCB0byBleGVjdXRlICdnZXRLZXknIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjU1LDcgKzI1NSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSlNWYWx1CiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
b3JlOjpnZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdlKiBrZXlSYW5nZSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmdldEtleSIpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVj
dCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yOTcsNyArMjk3LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKIAogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQiKTsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKTsKICAgICBpZiAoIWNv
bnRleHQpCkBAIC0zNjksNyArMzY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjU3RhdGUKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbiIpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAvLyBUaGUgSURCIHNwZWMgZm9yIHNldmVyYWwgSURC
T2JqZWN0U3RvcmUgbWV0aG9kcyBzdGF0ZXMgdGhhdCB0cmFuc2FjdGlvbiByZWxhdGVkIGV4Y2Vw
dGlvbnMgc2hvdWxkIGZpcmUgYmVmb3JlCiAgICAgLy8gdGhlIGV4Y2VwdGlvbiBmb3IgYW4gb2Jq
ZWN0IHN0b3JlIGJlaW5nIGRlbGV0ZWQuCkBAIC00MDMsNyArNDAzLDcgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRl
JiBleGVjU3RhdGUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6
OmNsZWFyKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJP
YmplY3RTdG9yZTo6Y2xlYXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgLy8gVGhlIElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhv
ZHMgc3RhdGVzIHRoYXQgdHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJl
IGJlZm9yZQogICAgIC8vIHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBk
ZWxldGVkLgpAQCAtNDI1LDcgKzQyNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCT2JqZWN0U3RvcmU6OmNsZWFyKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlKQogRXhjZXB0aW9uT3I8
UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSYsIGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCS2V5UGF0aCYmIGtleVBhdGgsIGNvbnN0IEluZGV4UGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6
OmNyZWF0ZUluZGV4ICVzIChrZXlQYXRoOiAlcywgdW5pcXVlOiAlaSwgbXVsdGlFbnRyeTogJWkp
IiwgbmFtZS51dGY4KCkuZGF0YSgpLCBsb2dnaW5nU3RyaW5nKGtleVBhdGgpLnV0ZjgoKS5kYXRh
KCksIHBhcmFtZXRlcnMudW5pcXVlLCBwYXJhbWV0ZXJzLm11bHRpRW50cnkpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rpb24uaXNW
ZXJzaW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRlSW5kZXgnIG9uICdJ
REJPYmplY3RTdG9yZSc6IFRoZSBkYXRhYmFzZSBpcyBub3QgcnVubmluZyBhIHZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uLiIpIH07CkBAIC00NjYsNyArNDY2LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSYsIGNvbnN0
IFN0cmluZyYKIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjppbmRl
eChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2Jq
ZWN0U3RvcmU6OmluZGV4Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
IAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsgLy8gRklYTUU6IElzIHRoaXMgY29kZSB0ZXN0
ZWQ/IElzIGl0ZXZlbiByZWFjaGFibGU/CkBAIC00OTgsNyArNDk4LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lKQogRXhjZXB0aW9uT3I8dm9pZD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmRl
bGV0ZUluZGV4ICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVj
dXRlICdkZWxldGVJbmRleCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBo
YXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC01NTEsNyArNTUxLDcgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Y291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUs
IElEQktleVIKIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5n
ZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgLy8gVGhl
IElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQg
dHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8v
IHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNTcz
LDcgKzU3Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6
OmRvQ291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0CiBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0
IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTU5Niw3ICs1OTYsNyBAQCBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBl
eGVjU3RhdGUsIEpTVmFsdQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdl
PiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhl
Y3V0ZSAnZ2V0QWxsS2V5cycgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBo
YXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC02MTgsMTMgKzYxOCwxMyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKUwogCiB2b2lkIElEQk9iamVjdFN0b3JlOjptYXJrQXNEZWxldGVkKCkKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7
CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0
KCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgU3RyaW5n
IGN1cnJlbnROYW1lID0gbV9pbmZvLm5hbWUoKTsKICAgICBtX2luZm8gPSBtX29yaWdpbmFsSW5m
bzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5E
QlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5jcHAKaW5kZXggNzhkYTk3MDIyYTdjZTQ5YjUxMDNmNDhkYmVkYzY0MTE4ZDM2MDk2
Mi4uNTdkYjBhMDcwMzE2NjE3ZWNkZTY3YWYyYjI5NWQ2NDBkM2IzOTE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAK
QEAgLTYzLDEyICs2MywxMiBAQCBJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkNsaWVudDo6SQogCiBJREJPcGVuREJS
ZXF1ZXN0Ojp+SURCT3BlbkRCUmVxdWVzdCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiB9CiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihj
b25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kb21FcnJvciA9IGRhdGEuZXJyb3IoKS50b0RPTUV4
Y2VwdGlvbigpOwogICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIHRydWUsICp0aGlzKSk7CkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihjb25zdCBJREJSZXN1
bHREYXRhJiBkYXRhKQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbkRpZEZpbmlzaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAKICAgICAvLyAzLjMuNyAidmVyc2lvbmNoYW5nZSIgdHJhbnNhY3Rpb24gc3Rl
cHMKICAgICAvLyBXaGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCwgYWZ0ZXIgZmlyaW5n
IGNvbXBsZXRlL2Fib3J0IG9uIHRoZSB0cmFuc2FjdGlvbiwgaW1tZWRpYXRlbHkgc2V0IHJlcXVl
c3QncyB0cmFuc2FjdGlvbiBwcm9wZXJ0eSB0byBudWxsLgpAQCAtODcsNyArODcsNyBAQCB2b2lk
IElEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdlQ29tbWl0KCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6ZmlyZVN1Y2Nlc3NBZnRl
clZlcnNpb25DaGFuZ2VDb21taXQoKSAtICVzIiwgcmVzb3VyY2VJZGVudGlmaWVyKCkubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICBt
X3RyYW5zYWN0aW9uLT5hZGRSZXF1ZXN0KCp0aGlzKTsKIApAQCAtMTAxLDcgKzEwMSw3IEBAIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJzaW9uQ2hhbmdlQ29tcGxldGlv
bigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVFcnJvckFm
dGVyVmVyc2lvbkNoYW5nZUNvbXBsZXRpb24oKSAtICVzIiwgcmVzb3VyY2VJZGVudGlmaWVyKCku
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsK
IAogICAgIElEQkVycm9yIGlkYkVycm9yKEFib3J0RXJyb3IpOwpAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURCT3BlbkRC
UmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVz
dDo6b25TdWNjZXNzKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2VzcygpIik7CiAKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHNldFJlc3VsdChJREJE
YXRhYmFzZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNvbm5lY3Rpb25Qcm94
eSgpLCByZXN1bHREYXRhKSk7CiAgICAgbV9yZWFkeVN0YXRlID0gUmVhZHlTdGF0ZTo6RG9uZTsK
QEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyhjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9u
VXBncmFkZU5lZWRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZv
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgUmVmPElEQkRhdGFi
YXNlPiBkYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgY29ubmVjdGlvblByb3h5KCksIHJlc3VsdERhdGEpOwogICAgIFJlZjxJREJUcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS0+c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24ocmVzdWx0RGF0YS50cmFuc2FjdGlvbkluZm8oKSwgKnRoaXMpOwpAQCAtMTY2LDcgKzE2Niw3
IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25EZWxldGVEYXRh
YmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHVpbnQ2NF90IG9sZFZl
cnNpb24gPSByZXN1bHREYXRhLmRhdGFiYXNlSW5mbygpLnZlcnNpb24oKTsKIApAQCAtMTgyLDcg
KzE4Miw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZChjb25zdCBJ
REJSZXN1bHREYXRhJiBkYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1
ZXN0OjpyZXF1ZXN0Q29tcGxldGVkIik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIC8vIElmIGFuIE9wZW4gcmVxdWVzdCB3YXMgY29tcGxldGVk
IGFmdGVyIHRoZSBwYWdlIGhhcyBuYXZpZ2F0ZWQsIGxlYXZpbmcgdGhpcyByZXF1ZXN0CiAgICAg
Ly8gd2l0aCBhIHN0b3BwZWQgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LCB3ZSBuZWVkIHRvIG1l
c3NhZ2UgYmFjayB0byB0aGUgc2VydmVyIHNvIGl0CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBJ
REJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRh
dGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdEJsb2NrZWQodWludDY0X3Qgb2xk
VmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIExPRyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1
ZXN0OjpyZXF1ZXN0QmxvY2tlZCIpOwogICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdl
RXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBldmVudE5hbWVzKCkuYmxvY2tl
ZEV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwCmluZGV4IGNkYzliYWY1MzllZGZmMjE0MTVmOTQ0ZDgxODc4NWRjMjRhNjgyNTcuLmM5
Y2FkZWNmNDgzMDliNmYxOWFlNjdkYjFhMWU2MDJhZDZmNDE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0xNDMsNyArMTQzLDcg
QEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWQKIAogSURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYg
KG1fcmVzdWx0KSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24obV9yZXN1bHQudmFsdWUoKSwKQEAg
LTE2Myw3ICsxNjMsNyBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPElEQlJlcXVlc3Q6OlJl
c3VsdD4+IElEQlJlcXVlc3Q6OnJlc3VsdCgpIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPERPTUV4Y2Vw
dGlvbio+IElEQlJlcXVlc3Q6OmVycm9yKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghaXNEb25lKCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQg
dG8gcmVhZCB0aGUgJ2Vycm9yJyBwcm9wZXJ0eSBmcm9tICdJREJSZXF1ZXN0JzogVGhlIHJlcXVl
c3QgaGFzIG5vdCBmaW5pc2hlZC4iKSB9OwpAQCAtMTczLDcgKzE3Myw3IEBAIEV4Y2VwdGlvbk9y
PERPTUV4Y2VwdGlvbio+IElEQlJlcXVlc3Q6OmVycm9yKCkgY29uc3QKIAogdm9pZCBJREJSZXF1
ZXN0OjpzZXRTb3VyY2UoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2N1cnNvclJlcXVlc3ROb3Rp
Zmllcik7CiAKICAgICBtX3NvdXJjZSA9IFNvdXJjZSB7ICZjdXJzb3IgfTsKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJREJDdXJzb3ImIGN1cnNvcikKIAog
dm9pZCBJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbik7CiAgICAgQVNTRVJUKHRyYW5zYWN0
aW9uLmlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoIXRyYW5zYWN0aW9uLmlzRmluaXNo
ZWRPckZpbmlzaGluZygpKTsKQEAgLTE5NSwxMyArMTk1LDEzIEBAIHZvaWQgSURCUmVxdWVzdDo6
c2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
IAogUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiBJREJSZXF1ZXN0Ojp0cmFuc2FjdGlv
bigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAgICAgcmV0dXJuIG1fc2hvdWxkRXhwb3NlVHJhbnNhY3Rpb25Ub0RPTSA/IG1fdHJhbnNhY3Rp
b24gOiBudWxscHRyOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0Ojpzb3VyY2VPYmplY3RTdG9y
ZUlkZW50aWZpZXIoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0y
MTUsNyArMjE1LDcgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNlT2JqZWN0U3RvcmVJZGVu
dGlmaWVyKCkgY29uc3QKIAogdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNlSW5kZXhJZGVudGlm
aWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKIAogICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjI5LDE0ICsy
MjksMTQgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNlSW5kZXhJZGVudGlmaWVyKCkgY29u
c3QKIAogSW5kZXhlZERCOjpPYmplY3RTdG9yZVJlY29yZFR5cGUgSURCUmVxdWVzdDo6cmVxdWVz
dGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHJldHVybiBtX3JlcXVlc3RlZE9iamVjdFN0
b3JlUmVjb3JkVHlwZTsKIH0KIAogSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgSURCUmVxdWVz
dDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIEFT
U0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJJbmRleD4+KG1fc291cmNlLnZh
bHVlKCkpKTsKIApAQCAtMjQ1LDMzICsyNDUsMzMgQEAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5
cGUgSURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29uc3QKIAogRXZlbnRU
YXJnZXRJbnRlcmZhY2UgSURCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgcmV0
dXJuIElEQlJlcXVlc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKIGNvbnN0IGNoYXIq
IElEQlJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgcmV0dXJuICJJREJSZXF1ZXN0
IjsKIH0KIAogYm9vbCBJREJSZXF1ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSB8fCBtYXlCZUdDVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2hh
c1BlbmRpbmdBY3Rpdml0eTsKIH0KIAogdm9pZCBJREJSZXF1ZXN0OjpzdG9wKCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIW1fY29u
dGV4dFN0b3BwZWQpOwogCiAgICAgY2FuY2VsRm9yU3RvcCgpOwpAQCAtMjg4LDcgKzI4OCw3IEBA
IHZvaWQgSURCUmVxdWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURCUmVxdWVzdDo6ZW5x
dWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8
fCBtX2NvbnRleHRTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICszMDAsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50IC0gJXMgKCVwKSIsIGV2ZW50
LnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChtX2hhc1BlbmRpbmdBY3Rp
dml0eSk7CiAgICAgQVNTRVJUKCFtX2NvbnRleHRTdG9wcGVkKTsKIApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHZvaWQgSURCUmVxdWVzdDo6dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVu
dEhhbmRsZXIiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24gJiYgbV9pZGJFcnJvci5jb2RlKCkgIT0gQWJvcnRF
cnJvcikKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9N
RXhjZXB0aW9uOjpjcmVhdGUoQWJvcnRFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJUcmFuc2FjdGlv
biB3aWxsIGFib3J0IGR1ZSB0byB1bmNhdWdodCBleGNlcHRpb24gaW4gYW4gZXZlbnQgaGFuZGxl
ciIpKSk7CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2Vw
dGlvbkluRXZlbnRIYW5kbGVyKCkKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3Qg
SURCS2V5RGF0YSYga2V5RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6c2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAKIHZvaWQgSURCUmVxdWVz
dDo6c2V0UmVzdWx0KGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYga2V5RGF0YXMpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvKiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTM5
Myw3ICszOTMsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBWZWN0b3I8SURC
S2V5RGF0YT4mIGtleURhdGFzKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBW
ZWN0b3I8SURCVmFsdWU+JiB2YWx1ZXMpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIElEQlJl
cXVlc3Q6OnNldFJlc3VsdChjb25zdCBWZWN0b3I8SURCVmFsdWU+JiB2YWx1ZXMpCiAKIHZvaWQg
SURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDIzLDcgKzQyMyw3
IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIAogdm9pZCBJ
REJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBJREJWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUi
KTsKIApAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1
Y3R1cmVkQ2xvbmUoY29uc3QgSURCVmFsdWUmIHZhbHVlKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6c2V0UmVzdWx0VG9VbmRlZmluZWQoKQogCiBJREJDdXJzb3IqIElEQlJlcXVlc3Q6OnJlc3Vs
dEN1cnNvcigpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBpZiAoIW1fcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2OCw3
ICs0NjgsNyBAQCBJREJDdXJzb3IqIElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcigpCiAKIHZvaWQg
SURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGlzRG9u
ZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQo
bV90cmFuc2FjdGlvbik7CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBJREJSZXF1ZXN0Ojp3aWxs
SXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImIGN1cnNvcikKIAogdm9pZCBJREJSZXF1ZXN0OjpkaWRP
cGVuT3JJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1f
cGVuZGluZ0N1cnNvcik7CiAKICAgICBtX3Jlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKQEAgLTUwOSw3
ICs1MDksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IoY29uc3Qg
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIAogdm9pZCBJREJSZXF1ZXN0Ojpjb21wbGV0ZVJl
cXVlc3RBbmREaXNwYXRjaEV2ZW50KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3Jl
YWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25lOwogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBJ
REJSZXF1ZXN0OjpvbkVycm9yKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6
b25FcnJvciIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAgICAgQVNTRVJUKCFtX2lkYkVycm9yLmlzTnVsbCgpKTsKIAogICAgIG1fZG9tRXJyb3IgPSBt
X2lkYkVycm9yLnRvRE9NRXhjZXB0aW9uKCk7CkBAIC01MzQsMTQgKzUzNCwxNCBAQCB2b2lkIElE
QlJlcXVlc3Q6Om9uRXJyb3IoKQogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCiB2
b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChSZWY8SURCRGF0YWJhc2U+JiYgZGF0YWJhc2UpCiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3Jl
c3VsdCA9IFJlc3VsdCB7IFJlZlB0cjxJREJEYXRhYmFzZT4geyBXVEZNb3ZlKGRhdGFiYXNlKSB9
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKaW5kZXggYzFlMWRlZjU1ZWI2MWMyODZjYTNmYWVhMWQ5ODQwNTc4Y2RiMTM2
Ni4uYTlkNjQwZTUwYTA3OThjZmViMjE0OGExYmExNzBhODQ4YTVjYTA5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAt
ODAsNyArODAsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2Um
IGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uIC0gJXMiLCBtX2luZm8ubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1faW5mby5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAgIEFT
U0VSVChtX29wZW5EQlJlcXVlc3QpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIElEQlRyYW5zYWN0aW9u
OjpJREJUcmFuc2FjdGlvbihJREJEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IElEQlRyYW5zYWN0
aW9uSW5mbyYKIAogSURCVHJhbnNhY3Rpb246On5JREJUcmFuc2FjdGlvbigpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiB9CiAKIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBJREJUcmFuc2FjdGlvbjo6
Y29ubmVjdGlvblByb3h5KCkKQEAgLTExNiw3ICsxMTYsNyBAQCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSYgSURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25Qcm94eSgpCiAKIFJlZjxET01T
dHJpbmdMaXN0PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBuYW1lcyA9IGlzVmVyc2lvbkNo
YW5nZSgpID8gbV9kYXRhYmFzZS0+aW5mbygpLm9iamVjdFN0b3JlTmFtZXMoKSA6IG1faW5mby5v
YmplY3RTdG9yZXMoKTsKIApAQCAtMTMwLDIwICsxMzAsMjAgQEAgUmVmPERPTVN0cmluZ0xpc3Q+
IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIAogSURCRGF0YWJhc2Uq
IElEQlRyYW5zYWN0aW9uOjpkYigpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1fZGF0YWJh
c2UucHRyKCk7CiB9CiAKIERPTUV4Y2VwdGlvbiogSURCVHJhbnNhY3Rpb246OmVycm9yKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gbV9kb21FcnJvci5nZXQoKTsKIH0KIAogRXhj
ZXB0aW9uT3I8UmVmPElEQk9iamVjdFN0b3JlPj4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT2Jq
ZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmpl
Ywogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9NRXhjZXB0
aW9uJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmFib3J0
RHVlVG9GYWlsZWRSZXF1ZXN0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hlZE9y
RmluaXNoaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjphYm9ydER1ZVRvRmFpbGVkUmVxdWVzdChET01FeGNlcHRpb24mIGVycm9y
KQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjp0cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVk
REI6OlRyYW5zYWN0aW9uU3RhdGUgc3RhdGUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlQo
IWlzRmluaXNoZWRPckZpbmlzaGluZygpKTsKICAgICBtX3N0YXRlID0gc3RhdGU7CkBAIC0yMDQs
NyArMjA0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6dHJhbnNpdGlvbmVkVG9GaW5pc2hpbmco
SW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlIHN0YXRlKQogRXhjZXB0aW9uT3I8dm9pZD4gSURC
VHJhbnNhY3Rpb246OmFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OmFib3J0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hlZE9yRmluaXNoaW5n
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlM
aXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnYWJvcnQnIG9uICdJREJUcmFuc2FjdGlvbic6IFRo
ZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKSB9OwpAQCAtMjE3LDcgKzIx
Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQlRyYW5zYWN0aW9uOjphYm9ydCgpCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjppbnRlcm5hbEFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIWlz
RmluaXNoZWRPckZpbmlzaGluZygpKTsKIAogICAgIG1fZGF0YWJhc2UtPndpbGxBYm9ydFRyYW5z
YWN0aW9uKCp0aGlzKTsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjph
Ym9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHZvaWQgSURC
VHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMiKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKICAgICBBU1NFUlQobV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0VtcHR5
KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuYWJvcnRUcmFuc2FjdGlv
bigqdGhpcyk7CkBAIC0zMDksMjYgKzMwOSwyNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9y
dE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdAog
CiBjb25zdCBjaGFyKiBJREJUcmFuc2FjdGlvbjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuICJJREJUcmFuc2FjdGlvbiI7CiB9CiAKIGJvb2wg
SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBJREJUcmFuc2FjdGlv
bjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsK
KyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSB8fCBtYXlCZUdDVGhyZWFkKCkpOwogICAgIHJldHVybiAhbV9jb250ZXh0U3RvcHBlZCAm
JiBtX3N0YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQ7CiB9CiAK
IHZvaWQgSURCVHJhbnNhY3Rpb246OnN0b3AoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJU
cmFuc2FjdGlvbjo6c3RvcCAtICVzIiwgbV9pbmZvLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKIAogICAgIC8vIElEQkRhdGFiYXNlOjpzdG9wKCkgY2FsbHMgSURC
VHJhbnNhY3Rpb246OnN0b3AoKSBmb3IgZWFjaCBvZiBpdHMgYWN0aXZlIHRyYW5zYWN0aW9ucy4K
ICAgICAvLyBTaW5jZSB0aGUgb3JkZXIgb2YgY2FsbGluZyBBY3RpdmVET01PYmplY3Q6OnN0b3Ao
KSBpcyByYW5kb20sIHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIHN0b3BwZWQuCkBAIC0zNDcs
MTMgKzM0NywxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIAogYm9vbCBJREJUcmFu
c2FjdGlvbjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBtX3N0
YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6QWN0aXZlOwogfQogCiBib29sIElE
QlRyYW5zYWN0aW9uOjppc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSBjb25zdAogewotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgcmV0dXJuIG1fc3RhdGUgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpD
b21taXR0aW5nCiAgICAgICAgIHx8IG1fc3RhdGUgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0
YXRlOjpBYm9ydGluZwpAQCAtMzYyLDEzICszNjIsMTMgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6
aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkgY29uc3QKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWRk
UmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIG1fb3BlblJl
cXVlc3RzLmFkZCgmcmVxdWVzdCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJl
cXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9v
cGVuUmVxdWVzdHMuY29udGFpbnMoJnJlcXVlc3QpKTsKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1v
dmUoJnJlcXVlc3QpOwogfQpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OnJlbW92ZVJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHZvaWQgSURCVHJhbnNhY3Rpb246
OnNjaGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
PiYmIG9wZXJhdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
Y29udGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVyKCkpKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1f
cGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbik7CiAgICAg
bV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIFdU
Rk1vdmUob3BlcmF0aW9uKSk7CkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24+JiYKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGlt
ZXIoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKCFtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBl
bmRpbmdPcGVyYXRpb25UaW1lcigpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0
aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpw
ZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICBpZiAoIW1fc3RhcnRlZE9uU2VydmVyKQogICAgICAgICByZXR1cm47CkBAIC00MjksOCArNDI5
LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQoKQog
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJ
REJSZXN1bHREYXRhJiBkYXRhLCBJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVy
YXRpb24pCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWRJRCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9wZXJhdGlvbi5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKCZvcGVyYXRpb24ub3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fY29tcGxldGVkT25TZXJ2ZXJR
dWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9uLCBkYXRhIH0pOwogICAgIHNjaGVkdWxlQ29tcGxldGVk
T3BlcmF0aW9uVGltZXIoKTsKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJ
REJDbAogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRp
bWVyKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9jb21wbGV0ZWRPcGVyYXRpb25UaW1l
ci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2NvbXBsZXRlZE9wZXJhdGlvblRpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVk
dWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29tcGxl
dGVkT3BlcmF0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkICglcCkiLCB0aGlzKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIGlmIChtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuaXNFbXB0eSgpIHx8IG1f
Y3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5MSw3ICs0
OTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpmaW5pc2hlZERpc3BhdGNoRXZlbnRGb3JSZXF1
ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXQoKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tbWl0Iik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAgICAgQVNTRVJUKCFpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CiAKICAgICB0cmFuc2l0
aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcp
OwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
Ojpjb21taXRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVj
dGlvblByb3h5KCkuY29tbWl0VHJhbnNhY3Rpb24oKnRoaXMpOwogCkBAIC01MTksNyArNTE5LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29tbWl0T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZmluaXNoQWJv
cnRPckNvbW1pdCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblN0YXRlOjpGaW5pc2hlZCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3N0YXRlID0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KQEAgLTUyNyw3ICs1MjcsNyBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjpmaW5pc2hBYm9ydE9yQ29tbWl0KCkKIHZvaWQgSURCVHJhbnNh
Y3Rpb246OmRpZFN0YXJ0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2Rh
dGFiYXNlLT5kaWRTdGFydFRyYW5zYWN0aW9uKCp0aGlzKTsKIApAQCAtNTQ1LDcgKzU0NSw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQoY29uc3QgSURCRXJyb3ImIGVycm9y
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+ZGlkQWJvcnRUcmFuc2FjdGlvbigq
dGhpcyk7CiAgICAgbV9pZGJFcnJvciA9IGVycm9yOwpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246Om5vdGlmeURpZEFib3J0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmRpZEFib3J0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZEFib3J0Iik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBpZiAobV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlz
aGVkKQogICAgICAgICByZXR1cm47CkBAIC01NzMsNyArNTczLDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6ZGlkQWJvcnQoY29uc3QgSURCRXJyb3ImIGVycm9yKQogdm9pZCBJREJUcmFuc2FjdGlv
bjo6ZGlkQ29tbWl0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCht
X3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6Q29tbWl0dGluZyk7CiAKICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTU5MCwyMSArNTkwLDIxIEBAIHZvaWQgSURCVHJh
bnNhY3Rpb246OmRpZENvbW1pdChjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2b2lkIElEQlRyYW5z
YWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIGVucXVldWVFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
IH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQoKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBl
bnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwg
ZmFsc2UpKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KFJlZjxFdmVu
dD4mJiBldmVudCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBJbmRleGVkREI6OlRyYW5zYWN0
aW9uU3RhdGU6OkZpbmlzaGVkKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIHx8IG1fY29udGV4dFN0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTYx
Nyw3ICs2MTcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBl
dmVudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZl
bnQiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CiAgICAgQVNTRVJUKGV2ZW50LnRhcmdl
dCgpID09IHRoaXMpOwpAQCAtNjQ3LDcgKzY0Nyw3IEBAIFJlZjxJREJPYmplY3RTdG9yZT4gSURC
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlIik7
CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9y
ZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKIApAQCAtNjY0LDcgKzY2NCw3IEBAIFJlZjxJREJP
YmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25T
ZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNT
RVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94
eSgpLmNyZWF0ZU9iamVjdFN0b3JlKG9wZXJhdGlvbiwgaW5mbyk7CkBAIC02NzMsNyArNjczLDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRl
T2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVP
blNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVz
dWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6Q3JlYXRlT2JqZWN0U3RvcmVTdWNjZXNz
IHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApAQCAt
Njg1LDcgKzY4NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlKElE
Qk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nCiAKICAgICBBU1NFUlQoaXNW
ZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5jb250YWlu
cyhvYmplY3RTdG9yZS5pbmZvKCkubmFtZSgpKSk7CiAgICAgQVNTRVJUKCFtX3JlZmVyZW5jZWRP
YmplY3RTdG9yZXMuY29udGFpbnMobmV3TmFtZSkpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlKElEQk9iamVjdFN0b3JlJiBvYmplY3RT
dG9yZSwgY29uc3QgU3RyaW5nCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9y
ZU9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29u
c3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3Rv
cmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7
CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5yZW5hbWVPYmplY3RTdG9yZShv
cGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03MTEsNyArNzEx
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVu
YW1lT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lT2JqZWN0U3Rv
cmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwg
cmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6UmVuYW1lT2JqZWN0U3RvcmVTdWNj
ZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApA
QCAtNzE5LDcgKzcxOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4gSURCVHJhbnNhY3Rp
b246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCIpOwogICAgIEFTU0VSVChpc1Zl
cnNpb25DaGFuZ2UoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03MzMsNyArNzMzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3IKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25T
ZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJ
REJJbmRleEluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpjcmVhdGVJbmRleE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lv
bkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNyZWF0ZUlu
ZGV4KG9wZXJhdGlvbiwgaW5mbyk7CkBAIC03NDIsNyArNzQyLDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXQKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAg
IGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpDcmVhdGVJbmRleFN1Y2Nl
c3MpCiAgICAgICAgIHJldHVybjsKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpyZW5hbWVJbmRleChJREJJbmRleCYgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkK
IAogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlQobV9yZWZlcmVuY2VkT2Jq
ZWN0U3RvcmVzLmNvbnRhaW5zKGluZGV4Lm9iamVjdFN0b3JlKCkuaW5mbygpLm5hbWUoKSkpOwog
ICAgIEFTU0VSVChtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuZ2V0KGluZGV4Lm9iamVjdFN0b3Jl
KCkuaW5mbygpLm5hbWUoKSkgPT0gJmluZGV4Lm9iamVjdFN0b3JlKCkpOwpAQCAtNzgxLDcgKzc4
MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElEQkluZGV4JiBpbmRleCwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXhP
blNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0
IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IHVpbnQ2NF90JiBpbmRleElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBB
U1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblBy
b3h5KCkucmVuYW1lSW5kZXgob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
SWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03OTAsMTQgKzc5MCwxNCBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24mIG9wZXJhdAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlcihj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0
VHlwZTo6UmVuYW1lSW5kZXhTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3Vs
dFR5cGU6OkVycm9yKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3Rv
cmUsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYg
KGluZm8uY3Vyc29yVHlwZSgpID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5T25seSkKICAg
ICAgICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3Ioc3RhdGUsIElEQkN1cnNvcjo6Y3JlYXRl
KCp0aGlzLCBvYmplY3RTdG9yZSwgaW5mbykpOwpAQCAtODA4LDcgKzgwOCw3IEBAIFJlZjxJREJS
ZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRlJiBzdGF0
ZSwgSURCT2JqZWN0U3RvCiBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RP
cGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3Vy
c29ySW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJl
cXVlc3RPcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBl
KCkgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9S
ZXF1ZXN0T3BlbkN1cnNvcihzdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIGluZGV4LCBp
bmZvKSk7CkBAIC04MTksNyArODE5LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW4KIFJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUm
IHN0YXRlLCBSZWY8SURCQ3Vyc29yPiYmIGN1cnNvcikKIHsKICAgICBBU1NFUlQoaXNBY3RpdmUo
KSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KSk7CiAKQEAgLTgzNSw3ICs4MzUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OmRvUmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPElEQkN1cgogdm9pZCBJ
REJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZlciIpOwotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkub3BlbkN1cnNvcihv
cGVyYXRpb24sIGluZm8pOwogfQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246Om9wZW5DdXJzb3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBv
cGVyYXRpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIoSURCUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlciIpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgY29tcGxldGVDdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERh
dGEpOwogfQpAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVD
dXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhCiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yIik7CiAgICAgQVNT
RVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjdXJzb3IucmVxdWVzdCgpKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKIAogICAgIGFkZFJlcXVlc3QoKmN1cnNvci5yZXF1ZXN0KCkpOwogCkBAIC04NjUsNyArODY1
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImIGN1cnNv
ciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEKIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJh
dGVDdXJzb3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRp
b24sIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5pdGVyYXRlQ3Vyc29yKG9wZXJh
dGlvbiwgZGF0YSk7CiB9CkBAIC04NzMsNyArODczLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
aXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXIKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3JPblNlcnZlcihJREJSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyIik7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKICAgICBjb21wbGV0ZUN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0
RGF0YSk7CiB9CkBAIC04ODIsNyArODgyLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJgogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0
b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAg
IEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtOTAxLDcgKzkwMSw3
IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVj
b3JkcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzIik7CiAgICAgQVNTRVJUKGlzQWN0
aXZlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZz
dGF0ZSkpOwogCkBAIC05MTksNyArOTE5LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmdldEFsbFJlY29yZHNPblNlcnZlcihJREJDbGllbnQ6OlRyYW5z
YWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBn
ZXRBbGxSZWNvcmRzRGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246
OmdldEFsbFJlY29yZHNPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+
Y29ubmVjdGlvblByb3h5KCkuZ2V0QWxsUmVjb3JkcyhvcGVyYXRpb24sIGdldEFsbFJlY29yZHNE
YXRhKTsKIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRBbGxS
ZWNvcmRzT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Blcgogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyKElEQlJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIiKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJv
cikgewogICAgICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0
YSk7CkBAIC05NTQsNyArOTU0LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3IKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQiKTsKICAgICBBU1NF
UlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFnZXRSZWNvcmREYXRhLmtleVJhbmdlRGF0YS5p
c051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZz
dGF0ZSkpOwogCkBAIC05NzIsNyArOTcyLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3IKIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlKEV4ZWNTdGF0ZSYg
c3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZSIpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5kZXgs
IEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpWYWx1ZSwgcmFuZ2UpOwogfQpAQCAtOTgwLDcg
Kzk4MCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVl
KEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRlCiBSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICByZXR1
cm4gcmVxdWVzdEluZGV4UmVjb3JkKHN0YXRlLCBpbmRleCwgSW5kZXhlZERCOjpJbmRleFJlY29y
ZFR5cGU6OktleSwgcmFuZ2UpOwogfQpAQCAtOTkwLDcgKzk5MCw3IEBAIFJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElE
QkluZGV4JiBpCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
VmFsdWUiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051
bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0
ZSkpOwogCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RJbmRleFJlY29yZChFeGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaQogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmRE
YXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25T
ZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgp
LmdldFJlY29yZChvcGVyYXRpb24sIGdldFJlY29yZERhdGEpOwogfQpAQCAtMTAxNiw3ICsxMDE2
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW8KIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdl
dFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRSZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKHJlc3VsdERhdGEudHlw
ZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKSB7CiAgICAgICAgIGNvbXBsZXRlTm9uY3Vyc29y
UmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKQEAgLTEwNTEsNyArMTA1MSw3IEBAIFJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEV4ZWNTdGF0ZSYgc3RhdGUs
IElEQk9iamVjdFN0b3JlJiBvCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0Q291bnQgKElEQk9iamVjdFN0b3JlKSIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsK
ICAgICBBU1NFUlQoIXJhbmdlLmlzTnVsbCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlRfVU5V
U0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTEwNjksNyArMTA2OSw3IEBAIFJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEV4ZWNTdGF0ZSYgc3RhdGUs
IElEQkluZGV4JiBpbmRleCwKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJl
cXVlc3RDb3VudCAoSURCSW5kZXgpIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFT
U0VSVCghcmFuZ2UuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5k
ZXgmIGluZGV4LAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpnZXRD
b3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9u
UHJveHkoKS5nZXRDb3VudChvcGVyYXRpb24sIGtleVJhbmdlKTsKIH0KQEAgLTEwOTMsNyArMTA5
Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRDb3VudE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRDb3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICByZXF1ZXN0LnNldFJlc3VsdChy
ZXN1bHREYXRhLnJlc3VsdEludGVnZXIoKSk7CiAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0
KHJlcXVlc3QsIHJlc3VsdERhdGEpOwpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUs
IElEQk9iamVjdFMKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RE
ZWxldGVSZWNvcmQiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5n
ZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRl
KCZzdGF0ZSkpOwogCkBAIC0xMTE5LDcgKzExMTksNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0
Uwogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVj
b3JkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmRlbGV0ZVJlY29yZChvcGVyYXRpb24sIGtleVJhbmdlKTsKIH0KQEAgLTExMjcsNyAr
MTEyNyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZVJlY29yZE9uU2VydmVyKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpk
aWREZWxldGVSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6ZGlkRGVsZXRlUmVjb3JkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHJlcXVlc3Qu
c2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVx
dWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKEV4ZWNTdGF0ZSYgc3RhdGUs
IElEQk9iagogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENs
ZWFyT2JqZWN0U3RvcmUiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAK
ICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTExNTUsNyAr
MTE1NSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpj
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVy
Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5jbGVh
ck9iamVjdFN0b3JlKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIH0KQEAgLTEx
NjMsNyArMTE2Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNl
cnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmRpZENsZWFyT2JqZWN0U3RvcmVPblNlcnZlciIpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
CiAgICAgcmVxdWVzdC5zZXRSZXN1bHRUb1VuZGVmaW5lZCgpOwogICAgIGNvbXBsZXRlTm9uY3Vy
c29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKQEAgLTExNzUsNyArMTE3NSw3IEBAIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKEV4ZWNTdGF0ZSYg
c3RhdGUsIElEQk9iamVjdFN0b3JlCiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VS
VCghaXNSZWFkT25seSgpKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUuaW5mbygpLmF1dG9JbmNy
ZW1lbnQoKSB8fCBrZXkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKCZzdGF0ZSkpOwogCkBAIC0xMTkxLDcgKzExOTEsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmpl
Y3RTdG9yZQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIFJlZlB0cjxJREJLZXk+IGtleSwgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlJiBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghaXNSZWFkT25seSgpKTsKICAg
ICBBU1NFUlQodmFsdWUpOwogCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXJhdGlvbgogICAgIG9wZXJhdGlvbi5zZXROZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIoZmFsc2Up
OwogCiAgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJvdGVjdGVkT3BlcmF0aW9uID0gUmVmPElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+KG9wZXJhdGlvbiksIGtleURhdGEgPSBJREJLZXlE
YXRhKGtleS5nZXQoKSkuaXNvbGF0ZWRDb3B5KCksIG92ZXJ3cml0ZU1vZGVdKGNvbnN0IElEQlZh
bHVlJiBpZGJWYWx1ZSkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgaWYgKGlkYlZhbHVlLmRhdGEoKS5kYXRhKCkpIHsKICAgICAgICAgICAgIG1fZGF0YWJh
c2UtPmNvbm5lY3Rpb25Qcm94eSgpLnB1dE9yQWRkKHByb3RlY3RlZE9wZXJhdGlvbi5nZXQoKSwg
V1RGTW92ZShrZXlEYXRhKSwgaWRiVmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwpAQCAtMTI0Myw3ICsx
MjQzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KIHZvaWQgSURCVHJhbnNhY3Rpb246OmRp
ZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
ZFB1dE9yQWRkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChhdXRvKiByZXN1bHQg
PSByZXN1bHREYXRhLnJlc3VsdEtleSgpKQogICAgICAgICByZXF1ZXN0LnNldFJlc3VsdCgqcmVz
dWx0KTsKQEAgLTEyNTUsNyArMTI1NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFB1dE9y
QWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0CiB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9i
amVjdFN0b3JlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsK
IAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsK
QEAgLTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0
b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIiKTsK
ICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRh
YmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZGVsZXRlT2JqZWN0U3RvcmUob3BlcmF0aW9uLCBvYmpl
Y3RTdG9yZU5hbWUpOwogfQpAQCAtMTI4MiwxNCArMTI4MiwxNCBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb24mCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVy
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJ
REJSZXN1bHRUeXBlOjpEZWxldGVPYmplY3RTdG9yZVN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBl
KCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpk
ZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aW5kZXhOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRl
SW5kZXgiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogCiAg
ICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZGVsZXRlIGluZGV4IG9wZXJhdGlvbjog
JXMgKCUiIFBSSXU2NCAiKSIsIGluZGV4TmFtZS51dGY4KCkuZGF0YSgpLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOwpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVs
ZXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXQK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2
ZXIiKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAg
bV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZGVsZXRlSW5kZXgob3BlcmF0aW9uLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7CiB9CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24mIG9wZXJhdAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlSW5k
ZXhPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlSW5kZXhPblNlcnZlciIpOwotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkg
PT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5kZXhTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgp
ID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApAQCAtMTMxNiw4ICsxMzE2LDggQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBB
U1NFUlQoJm9wZXJhdGlvbi5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
ICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmdldChvcGVyYXRpb24uaWRlbnRp
ZmllcigpKSA9PSAmb3BlcmF0aW9uKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJhdGlv
bnNJblByb2dyZXNzUXVldWUuZmlyc3QoKSA9PSAmb3BlcmF0aW9uKTsKIApAQCAtMTMzMCwxNCAr
MTMzMCwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPbkNsaWVu
dChJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6
ZXN0YWJsaXNoT25TZXJ2ZXIoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6ZXN0YWJsaXNoT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNv
bm5lY3Rpb25Qcm94eSgpLmVzdGFibGlzaFRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogdm9pZCBJ
REJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKGlzRmlu
aXNoZWRPckZpbmlzaGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xMzQ3LDcgKzEzNDcsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjphY3RpdmF0ZSgpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRlYWN0aXZhdGUoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblN0YXRlOjpBY3RpdmUpCiAgICAgICAgIG1fc3RhdGUgPSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uU3RhdGU6OkluYWN0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNw
cAppbmRleCA5ZWIzZjI1YThkOTJhMGYzNzc1MTQ2OTk5ZWU4OTcxMjQ1YzExMjM5Li43NDJhNzdh
NGQ5ODVjNTQwZWNkMmIxN2IzMjExNTAyZGFmY2YyZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblBy
b3h5LmNwcApAQCAtNTE5LDEyICs1MTksMTIgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmZv
cmdldEFjdGl2ZU9wZXJhdGlvbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFuc2FjdGlvbk8KIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4KIHZvaWQgcmVtb3Zl
SXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQoSGFzaE1hcDxLZXlUeXBlLCBWYWx1ZVR5cGU+JiBt
YXApCiB7Ci0gICAgYXV0byBjdXJyZW50VGhyZWFkSUQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAg
YXV0byYgY3VycmVudFRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogCiAgICAgVmVjdG9yPEtl
eVR5cGU+IGtleXM7CiAgICAga2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1hcC5zaXplKCkp
OwogICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtYXApIHsKLSAgICAgICAgaWYgKGl0ZXJhdG9y
LnZhbHVlLT5vcmlnaW5UaHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWRJRCkKKyAgICAgICAgaWYg
KCZpdGVyYXRvci52YWx1ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJmN1cnJlbnRUaHJlYWQpCiAgICAg
ICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChpdGVyYXRvci5rZXkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBjNzI0NTMxYjJlMWU1OTYyNDVjNTY5M2I1NjU1
NWE5ZjY4ZGMzNmE1Li5lODU1MTI1MzFiNDY0ZDNkMzYxZTM0YjNiODlhYWMxMzZkMGIxZmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNTEsMTIgKzUxLDEyIEBAIGNsYXNzIFRy
YW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0
aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25PcGVyYXRp
b24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0gY3VycmVudFRo
cmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBwZXJmb3JtKCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFT
U0VSVChtX29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAg
ICBBU1NFUlQobV9wZXJmb3JtRnVuY3Rpb24pOwogICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbigp
OwogICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9IHsgfTsKQEAgLTY0LDcgKzY0LDcgQEAgY2xh
c3MgVHJhbnNhY3Rpb25PcGVyYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IHsKIAogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tcGxldGVPblRo
aXNUaHJlYWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVCht
X29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAgICBtX3Ry
YW5zYWN0aW9uLT5vcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihkYXRhLCAqdGhpcyk7CiAgICAg
fQogCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAgICAgewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIGlmIChtX29yaWdpblRocmVh
ZElEID09IGN1cnJlbnRUaHJlYWQoKSkKKyAgICAgICAgaWYgKG1fb3JpZ2luVGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0NvbXBsZXRl
T25UaGlzVGhyZWFkKGRhdGEpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fdHJhbnNh
Y3Rpb24tPnBlcmZvcm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCp0aGlzLCAmVHJhbnNhY3Rpb25P
cGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRlT25UaGlzVGhyZWFkLCBkYXRhKTsKQEAgLTgz
LDcgKzgzLDcgQEAgY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb24gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHsKIAogICAgIHZvaWQgZG9Db21wbGV0
ZShjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Jp
Z2luVGhyZWFkSUQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2lu
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAgICAgLy8gRHVlIHRv
IHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuIHRoZSBzZXJ2ZXIgc2VuZGluZyBhbiAib3BlcmF0aW9u
IGNvbXBsZXRlIiBtZXNzYWdlIGFuZCB0aGUgY2xpZW50CiAgICAgICAgIC8vIGZvcmNlZnVsbHkg
YWJvcnRpbmcgYW4gb3BlcmF0aW9uLCBpdCdzIHVuYXZvaWRhYmxlIHRoYXQgdGhpcyBtZXRob2Qg
bWlnaHQgYmUgY2FsbGVkIHR3aWNlLgpAQCAtMTAyLDcgKzEwMiw3IEBAIGNsYXNzIFRyYW5zYWN0
aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3Bl
cmF0aW9uPiB7CiAKICAgICBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAgIFRocmVhZElkZW50aWZpZXIg
b3JpZ2luVGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZElEOyB9CisgICAg
VGhyZWFkJiBvcmlnaW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZC5nZXQo
KTsgfQogCiAgICAgSURCUmVxdWVzdCogaWRiUmVxdWVzdCgpIHsgcmV0dXJuIG1faWRiUmVxdWVz
dC5nZXQoKTsgfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRp
b24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHsK
ICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKSB7IHJldHVybiBtX3RyYW5zYWN0aW9u
LmdldCgpOyB9CiAgICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgaW5kZXhSZWNvcmRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleFJlY29yZFR5cGU7IH0KIAotICAgIFRocmVhZElkZW50
aWZpZXIgbV9vcmlnaW5UaHJlYWRJRCB7IGN1cnJlbnRUaHJlYWQoKSB9OworICAgIFJlZjxUaHJl
YWQ+IG1fb3JpZ2luVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gbV9pZGJSZXF1ZXN0OwogICAgIGJvb2wgbV9uZXh0UmVxdWVzdENhbkdvVG9TZXJ2
ZXIgeyB0cnVlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCmluZGV4IGQ5NTA0N2M5MDMwNTFjMGJjM2Q1ZTYzOGIyN2I0NTg1NDI0
YjA1MzIuLmExMTAxYWU4ZTg4Y2VjZWUxM2E3ZTc5ZTg2YzVjODgyNDFmMDFjODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEw
MCw5ICsxMDAsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLS8vIEZJWE1FOiBjaGVjayB0aGUgcHJvcGVyIHdheSB0byBy
ZWZlcmVuY2UgYW4gdW5kZWZpbmVkIHRocmVhZCBJRAotY29uc3QgaW50IFVuZGVmaW5lZFRocmVh
ZElkZW50aWZpZXIgPSAweGZmZmZmZmZmOwotCiBjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzYsNyArMTMzLDYg
QEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9ldmVudFF1ZXVlKHN0ZDo6bWFr
ZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKLSAgICAsIG1fZ3JhcGhPd25lclRo
cmVhZChVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyKQogewogICAgIGNvbnN0cnVjdENvbW1vbigp
OwogCkBAIC0xNTIsNyArMTQ4LDYgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1l
bnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICAgICAsIG1f
aXNPZmZsaW5lQ29udGV4dCh0cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3Vu
aXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQotICAgICwgbV9ncmFwaE93bmVyVGhyZWFk
KFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIpCiB7CiAgICAgY29uc3RydWN0Q29tbW9uKCk7CiAK
QEAgLTY5NiwyMyArNjkxLDIzIEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpsb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykKICAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sgaW4gcmVhbC10aW1l
IGF1ZGlvIHRocmVhZC4KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgVGhyZWFk
SWRlbnRpZmllciB0aGlzVGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgIFRocmVhZCYgdGhp
c1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogCi0gICAgaWYgKHRoaXNUaHJlYWQgPT0gbV9n
cmFwaE93bmVyVGhyZWFkKSB7CisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRo
cmVhZCkgewogICAgICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGxvY2suCiAgICAgICAgIG11
c3RSZWxlYXNlTG9jayA9IGZhbHNlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFjcXVpcmUg
dGhlIGxvY2suCiAgICAgICAgIG1fY29udGV4dEdyYXBoTXV0ZXgubG9jaygpOwotICAgICAgICBt
X2dyYXBoT3duZXJUaHJlYWQgPSB0aGlzVGhyZWFkOworICAgICAgICBtX2dyYXBoT3duZXJUaHJl
YWQgPSAmdGhpc1RocmVhZDsKICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gdHJ1ZTsKICAgICB9
CiB9CiAKIGJvb2wgQXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykK
IHsKLSAgICBUaHJlYWRJZGVudGlmaWVyIHRoaXNUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Ci0g
ICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gdGhpc1RocmVhZCA9PSBhdWRpb1RocmVhZCgpOworICAg
IFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNBdWRp
b1RocmVhZCA9ICZ0aGlzVGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CiAKICAgICAvLyBUcnkgdG8g
Y2F0Y2ggY2FzZXMgb2YgdXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91bGQg
dXNlIHJlZ3VsYXIgbG9jay4KICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlvVGhy
ZWFkRmluaXNoZWQoKSk7CkBAIC03MjUsNyArNzIwLDcgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OnRy
eUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAgIAogICAgIGJvb2wgaGFzTG9jazsKICAg
ICAKLSAgICBpZiAodGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICBpZiAo
JnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CiAgICAgICAgIC8vIFRocmVhZCBh
bHJlYWR5IGhhcyB0aGUgbG9jay4KICAgICAgICAgaGFzTG9jayA9IHRydWU7CiAgICAgICAgIG11
c3RSZWxlYXNlTG9jayA9IGZhbHNlOwpAQCAtNzM0LDcgKzcyOSw3IEBAIGJvb2wgQXVkaW9Db250
ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykKICAgICAgICAgaGFzTG9jayA9IG1f
Y29udGV4dEdyYXBoTXV0ZXgudHJ5TG9jaygpOwogICAgICAgICAKICAgICAgICAgaWYgKGhhc0xv
Y2spCi0gICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSB0aGlzVGhyZWFkOworICAgICAg
ICAgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CiAKICAgICAgICAgbXVzdFJl
bGVhc2VMb2NrID0gaGFzTG9jazsKICAgICB9CkBAIC03NDQsMjAgKzczOSwyMCBAQCBib29sIEF1
ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCiAKIHZvaWQgQXVkaW9D
b250ZXh0Ojp1bmxvY2soKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9ncmFw
aE93bmVyVGhyZWFkKTsKKyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKLSAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBVbmRlZmluZWRUaHJlYWRJ
ZGVudGlmaWVyOworICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IG51bGxwdHI7CiAgICAgbV9jb250
ZXh0R3JhcGhNdXRleC51bmxvY2soKTsKIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OmlzQXVkaW9U
aHJlYWQoKSBjb25zdAogewotICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gbV9hdWRpb1Ro
cmVhZDsKKyAgICByZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7CiB9
CiAKIGJvb2wgQXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIoKSBjb25zdAogewotICAgIHJldHVy
biBjdXJyZW50VGhyZWFkKCkgPT0gbV9ncmFwaE93bmVyVGhyZWFkOworICAgIHJldHVybiBtX2dy
YXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOwogfQogCiB2b2lkIEF1ZGlvQ29u
dGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqIG5vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA0NzRlNjg3YWJj
ODAwOThhN2VmYzM5NGQyNTQ4N2M0OGRmZTBlM2U0Li4yOGVkYmNiMjVmMmM0NDcyZjgyYWQ0NmFh
NjNiODVlZWI0ZTM2OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmgKQEAgLTE3OCw4ICsxNzgsOCBAQCBjbGFzcyBBdWRpb0NvbnRleHQgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9D
bwogICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6CiAgICAgLy8KICAgICAK
LSAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZElkZW50aWZpZXIgdGhyZWFkKSB7IG1fYXVk
aW9UaHJlYWQgPSB0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3QgaW5pdGlhbGl6
ZWQgb3IgdGhlIHNhbWUKLSAgICBUaHJlYWRJZGVudGlmaWVyIGF1ZGlvVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFk
JiB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVp
dGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFk
KCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQogICAgIGJvb2wgaXNBdWRpb1RocmVh
ZCgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRo
cmVhZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgpAQCAtMzgxLDggKzM4MSwx
MCBAQCBjbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9DbwogCiAgICAgLy8gR3JhcGggbG9ja2luZy4KICAg
ICBMb2NrIG1fY29udGV4dEdyYXBoTXV0ZXg7Ci0gICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmll
ciBtX2F1ZGlvVGhyZWFkIHsgMCB9OwotICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9n
cmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUg
dGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBVbmRlZmluZWRUaHJlYWRJZGVudGlm
aWVyCisgICAgLy8gRklYTUU6IFVzaW5nIHZvbGF0aWxlIHNlZW1zIGluY29ycmVjdC4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzMyCisgICAgVGhy
ZWFkKiB2b2xhdGlsZSBtX2F1ZGlvVGhyZWFkIHsgbnVsbHB0ciB9OworICAgIFRocmVhZCogdm9s
YXRpbGUgbV9ncmFwaE93bmVyVGhyZWFkIHsgbnVsbHB0ciB9OyAvLyBpZiB0aGUgbG9jayBpcyBo
ZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBu
dWxscHRyLgogCiAgICAgQXN5bmNBdWRpb0RlY29kZXIgbV9hdWRpb0RlY29kZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKaW5kZXggNTExMjgxODUxODRmM2NjYjVhNWQwZjhlOTAwMzc2MWU5YTM1MGM3Yy4u
NjI5NzY2YzNiOGU3NWNhZTAxMTFhMzdhMzNjOGZmYmUyOGYxYjk3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKEF1
ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnUKICAgICAvLyBUaGlz
IHdpbGwgdGFrZSBjYXJlIG9mIGFsbCBBdWRpb05vZGVzIGJlY2F1c2UgdGhleSBhbGwgcHJvY2Vz
cyB3aXRoaW4gdGhpcyBzY29wZS4KICAgICBEZW5vcm1hbERpc2FibGVyIGRlbm9ybWFsRGlzYWJs
ZXI7CiAgICAgCi0gICAgY29udGV4dCgpLnNldEF1ZGlvVGhyZWFkKGN1cnJlbnRUaHJlYWQoKSk7
CisgICAgY29udGV4dCgpLnNldEF1ZGlvVGhyZWFkKFRocmVhZDo6Y3VycmVudCgpKTsKICAgICAK
ICAgICBpZiAoIWNvbnRleHQoKS5pc0luaXRpYWxpemVkKCkpIHsKICAgICAgICAgZGVzdGluYXRp
b25CdXMtPnplcm8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAKaW5kZXggNzgzZjkyMWYxMjdhNWEzNGVjZWI1OGFjNmQ1YWE4ZGYzMzZiMjFk
YS4uYmRlY2ZhMDE2ZTNlNzBlNzE2NWNmMDgyM2M4NjYxNzkyYzRiYzFkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTI4Nyw3ICsy
ODcsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAKIHZvaWQgRGF0YWJhc2U6OnBlcmZvcm1D
bG9zZSgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZVRocmVhZCgp
LmdldFRocmVhZElEKCkpOworICAgIEFTU0VSVChkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwpAQCAtNzY4LDcgKzc2OCw3IEBAIFNl
Y3VyaXR5T3JpZ2luRGF0YSBEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmICht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQogICAgICAgICByZXR1
cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFk
U2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwotICAgIGlmIChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJh
c2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgpKQorICAgIGlmIChkYXRhYmFzZVRocmVhZCgpLmdldFRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdp
bi5nZXQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oCmlu
ZGV4IGE0ZTk5YWQwYmRmZjkwNmIwNmIzZDdmYjhjNDdkMzFjYzk0YTg0MjUuLmRlZmU3MWEzZmU4
NmI5YmVlMDU0ZDBmZGNiZjEzMWM0OWM0YWRjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaApAQCAtMzUsMTcgKzM1LDMz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VEZXRhaWxzIHsKIHB1Ymxp
YzoKLSAgICBEYXRhYmFzZURldGFpbHMoKQotICAgICAgICA6IG1fZXhwZWN0ZWRVc2FnZSgwKQot
ICAgICAgICAsIG1fY3VycmVudFVzYWdlKDApCi0gICAgICAgICwgbV9jcmVhdGlvblRpbWUoMCkK
LSAgICAgICAgLCBtX21vZGlmaWNhdGlvblRpbWUoMCkKKyAgICBEYXRhYmFzZURldGFpbHMoKSA9
IGRlZmF1bHQ7CisKKyAgICBEYXRhYmFzZURldGFpbHMoY29uc3QgRGF0YWJhc2VEZXRhaWxzJiBk
ZXRhaWxzKQorICAgICAgICA6IG1fbmFtZShkZXRhaWxzLm1fbmFtZSkKKyAgICAgICAgLCBtX2Rp
c3BsYXlOYW1lKGRldGFpbHMubV9kaXNwbGF5TmFtZSkKKyAgICAgICAgLCBtX2V4cGVjdGVkVXNh
Z2UoZGV0YWlscy5tX2V4cGVjdGVkVXNhZ2UpCisgICAgICAgICwgbV9jdXJyZW50VXNhZ2UoZGV0
YWlscy5tX2N1cnJlbnRVc2FnZSkKKyAgICAgICAgLCBtX2NyZWF0aW9uVGltZShkZXRhaWxzLm1f
Y3JlYXRpb25UaW1lKQorICAgICAgICAsIG1fbW9kaWZpY2F0aW9uVGltZShkZXRhaWxzLm1fbW9k
aWZpY2F0aW9uVGltZSkKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV90aHJlYWRJRChUaHJl
YWQ6OmN1cnJlbnRJRCgpKQorICAgICAgICAsIG1fdGhyZWFkKGRldGFpbHMubV90aHJlYWQuY29w
eVJlZigpKQogI2VuZGlmCiAgICAgewogICAgIH0KIAorICAgIERhdGFiYXNlRGV0YWlscyYgb3Bl
cmF0b3I9KGNvbnN0IERhdGFiYXNlRGV0YWlscyYgZGV0YWlscykKKyAgICB7CisgICAgICAgIG1f
bmFtZSA9IGRldGFpbHMubV9uYW1lOworICAgICAgICBtX2Rpc3BsYXlOYW1lID0gZGV0YWlscy5t
X2Rpc3BsYXlOYW1lOworICAgICAgICBtX2V4cGVjdGVkVXNhZ2UgPSBkZXRhaWxzLm1fZXhwZWN0
ZWRVc2FnZTsKKyAgICAgICAgbV9jdXJyZW50VXNhZ2UgPSBkZXRhaWxzLm1fY3VycmVudFVzYWdl
OworICAgICAgICBtX2NyZWF0aW9uVGltZSA9IGRldGFpbHMubV9jcmVhdGlvblRpbWU7CisgICAg
ICAgIG1fbW9kaWZpY2F0aW9uVGltZSA9IGRldGFpbHMubV9tb2RpZmljYXRpb25UaW1lOworICAg
ICAgICBtX3RocmVhZCA9IGRldGFpbHMubV90aHJlYWQuY29weVJlZigpOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCiAgICAgRGF0YWJhc2VEZXRhaWxzKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcg
ZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgZG91YmxlIGNy
ZWF0aW9uVGltZSwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgIDogbV9uYW1lKGRh
dGFiYXNlTmFtZSkKICAgICAgICAgLCBtX2Rpc3BsYXlOYW1lKGRpc3BsYXlOYW1lKQpAQCAtNTMs
OSArNjksNiBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAgICAgICAsIG1fY3VycmVudFVz
YWdlKGN1cnJlbnRVc2FnZSkKICAgICAgICAgLCBtX2NyZWF0aW9uVGltZShjcmVhdGlvblRpbWUp
CiAgICAgICAgICwgbV9tb2RpZmljYXRpb25UaW1lKG1vZGlmaWNhdGlvblRpbWUpCi0jaWZuZGVm
IE5ERUJVRwotICAgICAgICAsIG1fdGhyZWFkSUQoVGhyZWFkOjpjdXJyZW50SUQoKSkKLSNlbmRp
ZgogICAgIHsKICAgICB9CiAKQEAgLTY2LDE4ICs3OSwxOCBAQCBjbGFzcyBEYXRhYmFzZURldGFp
bHMgewogICAgIGRvdWJsZSBjcmVhdGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9u
VGltZTsgfQogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9t
b2RpZmljYXRpb25UaW1lOyB9CiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElkZW50aWZpZXIg
dGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZElEOyB9CisgICAgVGhyZWFkJiB0aHJl
YWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV9kaXNwbGF5TmFtZTsKLSAgICB1aW50
NjRfdCBtX2V4cGVjdGVkVXNhZ2U7Ci0gICAgdWludDY0X3QgbV9jdXJyZW50VXNhZ2U7Ci0gICAg
ZG91YmxlIG1fY3JlYXRpb25UaW1lOwotICAgIGRvdWJsZSBtX21vZGlmaWNhdGlvblRpbWU7Cisg
ICAgdWludDY0X3QgbV9leHBlY3RlZFVzYWdlIHsgMCB9OworICAgIHVpbnQ2NF90IG1fY3VycmVu
dFVzYWdlIHsgMCB9OworICAgIGRvdWJsZSBtX2NyZWF0aW9uVGltZSB7IDAuMCB9OworICAgIGRv
dWJsZSBtX21vZGlmaWNhdGlvblRpbWUgeyAwLjAgfTsKICNpZm5kZWYgTkRFQlVHCi0gICAgVGhy
ZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhy
ZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDQ4ZTBjNDc2
NzhjOGYyNjU1NDhkOTc1MTFhNTk5MDcxOTZhYTk5MjcuLmI0YWRjNjYyODA3YzBkNTJlNDI3YWRm
YTUxZmI3MjgxY2JkYTczYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBEYXRh
YmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25z
dCBTdHJpbmcmIG5hbWUsIFNlYwogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7
IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OwogICAgICAgICBmb3IgKGF1dG8qIHByb3Bvc2Vk
RGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICBpZiAocHJvcG9z
ZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bvc2VkRGF0YWJhc2Ut
Pm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHByb3Bv
c2VkRGF0YWJhc2UtPmRldGFpbHMoKS50aHJlYWRJRCgpID09IFRocmVhZDo6Y3VycmVudElEKCkg
fHwgaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCgmcHJvcG9zZWREYXRh
YmFzZS0+ZGV0YWlscygpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSB8fCBpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Bvc2VkRGF0YWJhc2UtPmRldGFp
bHMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAxMTUyNGNkY2Qy
YWIzNDJmYjA5ZmU2MTlhYjQ2ZjU3OTIzY2U2OWVmLi4wMDc4MDBjOTVjZGY1ODZhZDU0OGFjYzJk
YzMyNzQ2MzQ1YTcxODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRGF0
YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKICAgICAvLyBDbGVhbiB1cCB0aGUgbGlzdCBv
ZiBhbGwgcGVuZGluZyB0cmFuc2FjdGlvbnMgb24gdGhpcyBkYXRhYmFzZSB0aHJlYWQKICAgICBt
X3RyYW5zYWN0aW9uQ29vcmRpbmF0b3ItPnNodXRkb3duKCk7CiAKLSAgICBMT0coU3RvcmFnZUFQ
SSwgIkFib3V0IHRvIGRldGFjaCB0aHJlYWQgJWkgYW5kIGNsZWFyIHRoZSByZWYgdG8gRGF0YWJh
c2VUaHJlYWQgJXAsIHdoaWNoIGN1cnJlbnRseSBoYXMgJWkgcmVmKHMpIiwgbV90aHJlYWQtPmlk
KCksIHRoaXMsIHJlZkNvdW50KCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAiQWJvdXQgdG8gZGV0
YWNoIHRocmVhZCAlcCBhbmQgY2xlYXIgdGhlIHJlZiB0byBEYXRhYmFzZVRocmVhZCAlcCwgd2hp
Y2ggY3VycmVudGx5IGhhcyAlaSByZWYocykiLCBtX3RocmVhZC5nZXQoKSwgdGhpcywgcmVmQ291
bnQoKSk7CiAKICAgICAvLyBDbG9zZSB0aGUgZGF0YWJhc2VzIHRoYXQgd2UgcmFuIHRyYW5zYWN0
aW9ucyBvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgYW55IHRyYW5zYWN0aW9ucyBhcmUgc3RpbGwg
b3BlbiwgdGhleSBhcmUgcm9sbGVkIGJhY2sgYW5kIHdlIGRvbid0IGxlYXZlIHRoZSBkYXRhYmFz
ZSBpbiBhbgogICAgIC8vIGluY29uc2lzdGVudCBvciBsb2NrZWQgc3RhdGUuCkBAIC0xMzgsNyAr
MTM4LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNl
JiBkYXRhYmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRl
eCk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAg
ICBBU1NFUlQobV90aHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIW1f
b3BlbkRhdGFiYXNlU2V0LmNvbnRhaW5zKCZkYXRhYmFzZSkpOwogICAgIG1fb3BlbkRhdGFiYXNl
U2V0LmFkZCgmZGF0YWJhc2UpOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgRGF0YWJhc2VU
aHJlYWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CiAKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSB8fCBtX29w
ZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2UpKTsKICAgICBtX29wZW5EYXRhYmFzZVNl
dC5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCAzNDAwOWQxYjIyYzQ0YzJlMDNlZWNi
YjdmNDRlNGM3YzhkN2RhZDU4Li5hOGM1NzBiNmYzYWM0YjNhN2RkNDFjZjFiMTI3NzJiZWJkOGM0
N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIERhdGFiYXNlVGhyZWFkIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNlVGhyZWFkPiB7CiAKICAgICB2b2lkIHJl
Y29yZERhdGFiYXNlT3BlbihEYXRhYmFzZSYpOwogICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9z
ZWQoRGF0YWJhc2UmKTsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGdldFRocmVhZElEKCkgeyByZXR1
cm4gbV90aHJlYWQgPyBtX3RocmVhZC0+aWQoKSA6IDA7IH0KKyAgICBUaHJlYWQqIGdldFRocmVh
ZCgpIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAKICAgICBTUUxUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTcxZTBkYjc4MWFjZTlmYzVlNzU0
N2JlMTNiN2ZlNGIzNzY3MGI5Yi4uMTg3N2YzNGE4YzNiNjFjNjJkOGNjYmU1MjFhNDdmNWIwYzRm
NzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbi5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
OjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkKICAgICBtX2Vycm9yQ2FsbGJhY2tXcmFw
cGVyLmNsZWFyKCk7CiAKICAgICAvLyBUaGUgbmV4dCBzdGVwcyBzaG91bGQgYmUgZXhlY3V0ZWQg
b25seSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgotICAgIGlmIChjdXJyZW50VGhyZWFkKCkg
IT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgpKQorICAgIGlmICgm
VGhyZWFkOjpjdXJyZW50KCkgIT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJl
YWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5z
YWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAK
aW5kZXggMmVhOTNkZGYyYjU0NzU4MDY1ZjZkNjExM2EwZWRlYzFjMjNlZTVlYy4uZDAwZWMxZDk0
MjQ4YmY5YWQ1MTU0OTE5MGNiZmNkOWM1ZjAwZGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNw
cApAQCAtMzUzLDcgKzM1Myw3IEBAIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6flNRTFRyYW5zYWN0
aW9uQmFja2VuZCgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpkb0NsZWFudXAoKQog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRh
dGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKG1fZnJvbnRlbmQuZGF0
YWJhc2UoKS5kYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmlnaW5Mb2NrSWZOZWVkZWQoKTsKIApAQCAt
NDY1LDcgKzQ2NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21wdXRlTmV4dFN0
YXRlQW5kQ2xlYW51cElmTmVlZGVkKCkKIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om5v
dGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKG1fZnJvbnRlbmQuZGF0YWJhc2UoKS5kYXRhYmFzZVRocmVh
ZCgpLmdldFRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAvLyBJZiB0aGUg
dHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCByb2xsIGl0IGJhY2sgaGVyZSwg
c2luY2UgdGhpcwogICAgIC8vIGlzIG91ciBsYXN0IG9wcG9ydHVuaXR5IHRvIGRvIHNvbWV0aGlu
ZyByZWxhdGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCA0OWUxNTM1MzZhNmEzNTRhNmMzNmI1MTQ5
MTA4OTczZGEzOWNiZGRjLi5jNmJkYTU1ZTUwMWFkNzcyY2UzOTAxZjgyOThkOWI2YzliYjgxNDdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTUy
LDcgKzUyLDcgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEgewogICAgIGV4cGxpY2l0IEpTQ2FsbGJh
Y2tEYXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIDogbV9nbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3RocmVh
ZChjdXJyZW50VGhyZWFkKCkpCisgICAgICAgICwgbV90aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkp
CiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBKU0NhbGxiYWNr
RGF0YSB7CiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7CiAjaWYgIVBMQVRGT1JNKElPUykK
LSAgICAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFT
U0VSVChtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAgICAg
fQogICAgIApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBKU0NhbGxiYWNrRGF0YSB7CiBwcml2YXRl
OgogICAgIEpTQzo6V2VhazxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAjaWZu
ZGVmIE5ERUJVRwotICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWQ7CisgICAgUmVmPFRocmVh
ZD4gbV90aHJlYWQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDBmNzRlNmMxNDAxZDhiYWRkNGE0NTZiMTFjYzlj
Zjk0YjdhODE0NzcuLjYzNTc3NjlkMzJkMzM3ODhmOWFhZDhiYWU1MjNjYzU4NzRkMzk0NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAt
MTQ2LDcgKzE0Niw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKERvY3VtZW50JiBk
b2N1bWVudCkKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckdsb2JhbFNjb3Bl
JiB3b3JrZXJHbG9iYWxTY29wZSkKIHsKICAgICAvLyBJbiBhIFdvcmtlciwgdGhlIGV4ZWN1dGlv
biBzaG91bGQgYWx3YXlzIGhhcHBlbiBvbiBhIHdvcmtlciB0aHJlYWQuCi0gICAgQVNTRVJUKHdv
cmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKTsK
KyAgICBBU1NFUlQod29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRy
b2xsZXIgPSB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDIxOTlkNGExZTE2YWEzYmJlNjRl
YzZhYzE0OTg5Y2NlZTQzYWI2NDEuLmI2ZTg1ZWE5OWM1ZGEwYzJkYTdmZjYyNTcxZWY3NTlhNDQ1
YzE4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpc3Bh
dGNoTWVzc2FnZVBvcnRFdmVudHMoKQogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjcmVh
dGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogewogICAgIEFTU0VSVCgo
aXM8RG9jdW1lbnQ+KCp0aGlzKSAmJiBpc01haW5UaHJlYWQoKSkKLSAgICAgICAgfHwgKGlzPFdv
cmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAgICAgICB8
fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkpOwog
CiAgICAgbV9tZXNzYWdlUG9ydHMuYWRkKCZtZXNzYWdlUG9ydCk7CiB9CkBAIC0xNzIsNyArMTcy
LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVz
c2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0
cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiB7CiAgICAgQVNTRVJU
KChpczxEb2N1bWVudD4oKnRoaXMpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CisgICAgICAg
IHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpICYmIGRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKSk7
CiAKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuaAppbmRleCA2NDZkZmVmY2MwYjZkYTQ1
Nzk0N2FhZDJkOGUzNWE4YWYyODcwMTQ1Li4xNmFlYTYwMWQxNGUyNjI4NzQ1YjYwNDA0YmY3OWZk
YmI2ZDM5OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VP
dmVybGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5o
CkBAIC03OCw3ICs3OCw2IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5IGZpbmFsIDogcHVi
bGljIFBhZ2VPdmVybGF5OjpDbGllbnQgewogICAgIEludFBvaW50IG1fZHJhZ1BvaW50OwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEIHsgMCB9
OwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2xheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVy
PiBtX2NvbnRhaW5lckxheWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCBkMjA0Yzc2MjEwYjMzNDA0ZGY0NGM0
ZGEzZmNhN2FjY2Q3N2I0MmEyLi42MWZhYzNhZThjNTJkMzkxZDNkOTBiOGUxNzJhMDRmMzkzOGNi
M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ro
cmVhZC5jcHAKQEAgLTQwLDggKzQwLDcgQEAgU2Nyb2xsaW5nVGhyZWFkOjpTY3JvbGxpbmdUaHJl
YWQoKQogCiBib29sIFNjcm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhyZWFkKCkKIHsKLSAgICBS
ZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBTY3JvbGxpbmdUaHJlYWQ6OnNpbmdsZXRvbigpLm1fdGhy
ZWFkOwotICAgIHJldHVybiB0aHJlYWQgJiYgdGhyZWFkLT5pZCgpID09IGN1cnJlbnRUaHJlYWQo
KTsKKyAgICByZXR1cm4gU2Nyb2xsaW5nVGhyZWFkOjpzaW5nbGV0b24oKS5tX3RocmVhZCA9PSAm
VGhyZWFkOjpjdXJyZW50KCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChG
dW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1cHBs
ZW1lbnRhYmxlLmgKaW5kZXggMzNmNjlhMmQxZWQ1ZWI4MDBjYmQ5NTAwNGYxODYyYWU4MThmMTMy
Ni4uNmMyNjE5YzJjOTk4ZDE5NjI0ZWFlZmEzY2YwN2I4N2Y1NzAyY2E2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCkBAIC05OCwzMyArOTgsMzMgQEAgY2xhc3Mg
U3VwcGxlbWVudGFibGUgewogcHVibGljOgogICAgIHZvaWQgcHJvdmlkZVN1cHBsZW1lbnQoY29u
c3QgY2hhcioga2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U3VwcGxlbWVudDxUPj4gc3VwcGxlbWVudCkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQo
bV90aHJlYWRJZCkpOworICAgICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9y
VGhyZWFkKG1fdGhyZWFkLmdldCgpKSk7CiAgICAgICAgIEFTU0VSVCghbV9zdXBwbGVtZW50cy5n
ZXQoa2V5KSk7CiAgICAgICAgIG1fc3VwcGxlbWVudHMuc2V0KGtleSwgV1RGTW92ZShzdXBwbGVt
ZW50KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVTdXBwbGVtZW50KGNvbnN0IGNoYXIqIGtl
eSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJl
YWQobV90aHJlYWRJZCkpOworICAgICAgICBBU1NFUlQoY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRh
Rm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSk7CiAgICAgICAgIG1fc3VwcGxlbWVudHMucmVtb3Zl
KGtleSk7CiAgICAgfQogCiAgICAgU3VwcGxlbWVudDxUPiogcmVxdWlyZVN1cHBsZW1lbnQoY29u
c3QgY2hhcioga2V5KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2Fs
RGF0YUZvclRocmVhZChtX3RocmVhZElkKSk7CisgICAgICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJl
YWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJuIG1f
c3VwcGxlbWVudHMuZ2V0KGtleSk7CiAgICAgfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogcHJv
dGVjdGVkOgotICAgIFN1cHBsZW1lbnRhYmxlKCkgOiBtX3RocmVhZElkKGN1cnJlbnRUaHJlYWQo
KSkgeyB9CisgICAgU3VwcGxlbWVudGFibGUoKSA9IGRlZmF1bHQ7CiAjZW5kaWYKIAogcHJpdmF0
ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxTdXBw
bGVtZW50PFQ+PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFN1cHBsZW1lbnRNYXA7CiAgICAgU3Vw
cGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBUaHJl
YWRJZGVudGlmaWVyIG1fdGhyZWFkSWQ7CisgICAgUmVmPFRocmVhZD4gbV90aHJlYWQgeyBUaHJl
YWQ6OmN1cnJlbnQoKSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAK
aW5kZXggOWNjYjQwMjFmNTAzMzc4YTg2MjI0ZTRhNmQ3NTFkYTQ4YTkzMjY3Ny4uODdkNGU2OTBm
NjE2NDBiM2M1ODI4MWFiYzI5YzY0MTllMDFiNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmNwcApAQCAtMTg2LDkgKzE4Niw2IEBAIGlubGluZSBib29sIFRpbWVySGVhcExlc3NUaGFuRnVu
Y3Rpb246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNlKiBhLCBjb25zdCBUaW1lCiAvLyAtLS0t
LS0tLS0tLS0tLS0tCiAKIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSNpZm5kZWYgTkRFQlVHCi0g
ICAgOiBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjAzLDcg
KzIwMCw3IEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAKIHZvaWQgVGltZXJCYXNlOjpzdGFy
dChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpCiB7Ci0g
ICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOwor
ICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0
KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXRJbnRlcnZhbDsKICAgICBzZXRO
ZXh0RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBuZXh0RmlyZUludGVydmFsKTsKQEAg
LTIxMSw3ICsyMDgsNyBAQCB2b2lkIFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUlu
dGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQogCiB2b2lkIFRpbWVyQmFzZTo6c3RvcCgp
CiB7Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVh
ZCkpOworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJl
YWQuZ2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSAwX3M7CiAgICAgc2V0TmV4dEZp
cmVUaW1lKE1vbm90b25pY1RpbWUgeyB9KTsKQEAgLTM2Miw3ICszNTksNyBAQCB2b2lkIFRpbWVy
QmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25pY1RpbWUgb2xkVGltZSkKIAogdm9pZCBU
aW1lckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9uaWNUaW1lIG5ld1RpbWUpCiB7Ci0gICAg
QVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAg
IEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkp
KTsKICAgICBBU1NFUlQoIW1fd2FzRGVsZXRlZCk7CiAKICAgICBpZiAobV91bmFsaWduZWROZXh0
RmlyZVRpbWUgIT0gbmV3VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IGUzZmQ3Yjk2
Y2Q5M2JmOWZhMjcwNmRiYzRiNTgwN2I1NzBlZDU2YzUuLjUyYzczOTg0NDRjNjVlNWU5MDlhZGMw
NTg3NDQyYjM2MjNhZDZlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtMTAzLDcgKzEw
Myw3IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgVmVjdG9yPFRpbWVyQmFzZSo+KiBtX2NhY2hl
ZFRocmVhZEdsb2JhbFRpbWVySGVhcCB7IG51bGxwdHIgfTsKIAogI2lmbmRlZiBOREVCVUcKLSAg
ICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOworICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsg
VGhyZWFkOjpjdXJyZW50KCkgfTsKICAgICBib29sIG1fd2FzRGVsZXRlZCB7IGZhbHNlIH07CiAj
ZW5kaWYKIApAQCAtMTQwLDkgKzE0MCw5IEBAIGlubGluZSBib29sIFRpbWVyQmFzZTo6aXNBY3Rp
dmUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXcml0ZSB0aGlzIGluIHRlcm1zIG9mIFVTRShX
RUJfVEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElPUykuCiAjaWYgIVBMQVRGT1JNKElPUykK
LSAgICBBU1NFUlQobV90aHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV90
aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbHNlCi0gICAgQVNTRVJUKFdl
YlRocmVhZElzQ3VycmVudCgpIHx8IHB0aHJlYWRfbWFpbl9ucCgpIHx8IG1fdGhyZWFkID09IGN1
cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpIHx8IHB0aHJl
YWRfbWFpbl9ucCgpIHx8IG1fdGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX25l
eHRGaXJlVGltZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggMWYyYjVmNWQwYmE4
NTFiMjEzOTU0Zjg0ODQ3ZDkzYTQyYjBhNTlmMi4uNjExZWRmYjQ3MmM4YjllN2IwNTQyZDY4ZTIw
ZWY5ZTc1YmIwZDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMTIyNCw4ICsxMjI0
LDggQEAgc3RhdGljIGJvb2wgc2hvdWxkQXV0b0FjdGl2YXRlRm9udElmTmVlZGVkKGNvbnN0IEF0
b21pY1N0cmluZyYgZmFtaWx5KQogI2lmbmRlZiBOREVCVUcKICAgICAvLyBUaGlzIGNhY2hlIGlz
IG5vdCB0aHJlYWQgc2FmZSBzbyB0aGUgZm9sbG93aW5nIGFzc2VydGlvbiBpcyB0aGVyZSB0bwog
ICAgIC8vIG1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxsZWQgZnJvbSB0aGUg
c2FtZSB0aHJlYWQuCi0gICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaW5pdFRocmVhZElkID0g
Y3VycmVudFRocmVhZCgpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gaW5pdFRocmVh
ZElkKTsKKyAgICBzdGF0aWMgVGhyZWFkKiBpbml0VGhyZWFkID0gJlRocmVhZDo6Y3VycmVudCgp
OworICAgIEFTU0VSVChpbml0VGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYK
IAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IGtub3du
RmFtaWxpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eS5jcHAKaW5kZXggMWNjYTBjY2RhODIxYWE1MmVkNWUwNTQ1MWYxZjFkNWYxY2FjODdjYi4uYjIz
ZGFjMjliNGQ3NDlmY2ZjY2IyMzM3NjA5NWZlZjIwYjVlODBhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtNTgsOSArNTgsMTAgQEAg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHkoKQogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0
ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY29tcG9zaXRvciwgVGV4dHVyZU1hcHBl
ckxheWVyKiB0YXJnZXRMYXllcikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgbV9jb21wb3NpdG9y
VGhyZWFkSUQgPSBtX2NvbXBvc2l0b3JUaHJlYWRJRCA/IG1fY29tcG9zaXRvclRocmVhZElEIDog
V1RGOjpjdXJyZW50VGhyZWFkKCk7CisgICAgaWYgKCFtX2NvbXBvc2l0b3JUaHJlYWQpCisgICAg
ICAgIG1fY29tcG9zaXRvclRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgotICAg
IEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IEFTU0VSVChjb21wb3NpdG9yKTsKICAgICBBU1NFUlQodGFyZ2V0TGF5ZXIpOwogICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CkBAIC04MCw3ICs4MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0
b3IqIGNvCiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0
ZSgpCiB7Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAgICAgRnVuY3Rpb248dm9pZCgpPiB1cGRhdGVGdW5jdGlvbjsKICAgICB7CiAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CkBAIC0xMjAsNyArMTIxLDcgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxl
QnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdMaW50IGludGVybmFsRm9ybWF0KQogewogICAg
IEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJ
RCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVh
ZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYXZhaWxhYmxlQnVmZmVyOwogCiAgICAgYXV0byBidWZm
ZXJzID0gV1RGTW92ZShtX3VzZWRCdWZmZXJzKTsKQEAgLTE0NCw3ICsxNDUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojph
cHBlbmRUb1VudXNlZEJ1ZmZlcnMoc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0g
ICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsK
KyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAg
ICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICBzY2hlZHVsZVJl
bGVhc2VVbnVzZWRCdWZmZXJzKCk7CiB9CkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQo
KQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQog
ewotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQo
KSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgaWYgKCFtX3RhcmdldExheWVy
IHx8ICFtX3BlbmRpbmdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmluZGV4IGQwMDRjYzgwZmU4NjVjYjczYzJl
MWQ0YzhjYmZjZjI2Y2NlMjliODYuLmYzY2JkZjRlOGI0MzhiYWMzM2M1Y2ZmMzM0NzNhZDQ0ZDU4
YjNlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHku
aApAQCAtOTEsNyArOTEsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRleHR1cmVNYXBwZQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4g
bV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVh
ZElkZW50aWZpZXIgbV9jb21wb3NpdG9yVGhyZWFkSUQgeyAwIH07CisgICAgUmVmUHRyPFRocmVh
ZD4gbV9jb21wb3NpdG9yVGhyZWFkOwogI2VuZGlmCiAKICAgICB2b2lkIGNvbXBvc2l0b3JUaHJl
YWRVcGRhdGVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggODBlNDU0MDg0YzgwZTA2YTIxOGJmN2YwYjBlYWRj
MjE2OTkxMzMzYy4uOTVmY2YxMzEzNTJlMmEzODFkOWY0YzU3YzVlMjRlMGQwN2E5OGI1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpA
QCAtNjU2LDcgKzY1Niw2IEBAIHZvaWQgKlJ1bldlYlRocmVhZCh2b2lkICphcmcpCiAgICAgCiAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIFdlYlRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkIHNo
YXJlIHRoZSBzYW1lIFRocmVhZEdsb2JhbERhdGEgb2JqZWN0cy4KICAgICBXZWJDb3JlOjp0aHJl
YWRHbG9iYWxEYXRhKCkuc2V0V2ViQ29yZVRocmVhZERhdGEoKTsKLSAgICBpbml0aWFsaXplV2Vi
VGhyZWFkSWRlbnRpZmllcigpOwogCiAjaWYgSEFWRShQVEhSRUFEX1NFVE5BTUVfTlApCiAgICAg
cHRocmVhZF9zZXRuYW1lX25wKCJXZWJUaHJlYWQiKTsKQEAgLTc2Niw3ICs3NjUsNyBAQCBzdGF0
aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAgICAgICAgIHN0YXJ0dXBDb25kaXRpb24ud2FpdChz
dGFydHVwTG9jayk7CiAgICAgfQogCi0gICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJ
ZGVudGlmaWVyKCk7CisgICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWQoKTsKIH0KIAog
c3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2sgKHB0aHJlYWRfY29uZF90ICpjb25kaXRp
b24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9jaywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCA5ODdi
MzQ2YWViOTE3MjM4NDhmMDM2NzRhODFhOTE3MmNhNzgzMzYxLi4yMDk1ZWU4MTE4YWExMjAyNjM3
NTdhMjMzY2Q5NjY0NzlhZjU5OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBib29sIFNRTGl0ZURhdGFi
YXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgZm9yV2ViU1FMRGF0YWJhc2Up
CiAgICAgfQogCiAgICAgaWYgKGlzT3BlbigpKQotICAgICAgICBtX29wZW5pbmdUaHJlYWQgPSBj
dXJyZW50VGhyZWFkKCk7CisgICAgICAgIG1fb3BlbmluZ1RocmVhZCA9ICZUaHJlYWQ6OmN1cnJl
bnQoKTsKICAgICBlbHNlCiAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9ICJzcWxpdGVfb3Bl
biByZXR1cm5lZCBudWxsIjsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJh
c2U6OmNsb3NlKCkKIHsKICAgICBpZiAobV9kYikgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBiZWluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBKUyBHQy4gPHJkYXI6Ly9w
cm9ibGVtLzU3Mzk4MTg+Ci0gICAgICAgIC8vIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9v
cGVuaW5nVGhyZWFkKTsKKyAgICAgICAgLy8gQVNTRVJUKG1fb3BlbmluZ1RocmVhZCA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogICAgICAgICBzcWxpdGUzKiBkYiA9IG1fZGI7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXgpOwpA
QCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAg
c3FsaXRlM19jbG9zZShkYik7CiAgICAgfQogCi0gICAgbV9vcGVuaW5nVGhyZWFkID0gMDsKKyAg
ICBtX29wZW5pbmdUaHJlYWQgPSBudWxscHRyOwogICAgIG1fb3BlbkVycm9yID0gU1FMSVRFX0VS
Uk9SOwogICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9IENTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKaW5kZXggNzE3MmU0ZTEzMzY2M2Fj
ZTBmODljNTQ0ZjFmMGYxMDY2NGJiOTBjMC4uZGViYjdjOGNhMTEzN2U4NWIyZTIwNWYxNzMyZGVm
ZGM0ZTg0YWEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBTUUxpdGVEYXRhYmFzZSB7CiAgICAgc3Fs
aXRlMyogc3FsaXRlM0hhbmRsZSgpIGNvbnN0CiAgICAgewogI2lmICFQTEFURk9STShJT1MpCi0g
ICAgICAgIEFTU0VSVChtX3NoYXJhYmxlIHx8IGN1cnJlbnRUaHJlYWQoKSA9PSBtX29wZW5pbmdU
aHJlYWQgfHwgIW1fZGIpOworICAgICAgICBBU1NFUlQobV9zaGFyYWJsZSB8fCBtX29wZW5pbmdU
aHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8ICFtX2RiKTsKICNlbmRpZgogICAgICAgICBy
ZXR1cm4gbV9kYjsKICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgU1FMaXRlRGF0YWJh
c2UgewogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplcjsKIAogICAg
IExvY2sgbV9sb2NraW5nTXV0ZXg7Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX29wZW5pbmdUaHJl
YWQgeyAwIH07CisgICAgUmVmUHRyPFRocmVhZD4gbV9vcGVuaW5nVGhyZWFkIHsgbnVsbHB0ciB9
OwogCiAgICAgTG9jayBtX2RhdGFiYXNlQ2xvc2luZ011dGV4OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg4NjFlYjgxZDU2ZWY5OGE4MzMx
ZTI4NDRjZjIwMGE5OGY5OGYxNWEuLmJmNzQ1MmVjYzZjM2M5YmVhNjFjZTVmNGJlMDY4MzY5NGZh
ZWYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjCiAKIFdvcmtlckdsb2Jh
bFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gdGhyZWFkKCkudGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKHRocmVhZCgpLnRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsK
ICAgICBtX2NyeXB0byA9IG51bGxwdHI7CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBXb3JrZXJH
bG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb24KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNDb250ZXh0VGhyZWFkKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IHRocmVhZCgpLnRocmVhZElE
KCk7CisgICAgcmV0dXJuIHRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsK
IH0KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CmluZGV4IGI1ZGQzOGE1NjBhMjRhNWQyN2MyN2NiNTUwYWIxODY4MTczZjdkNzkuLmVkMDI0YTI0
N2VhMDQyMjU0YmE1YmUzZTg2YTM0MzJhYjc0YjI0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXImIHdvcmtlck9iamVj
dCkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAgQVNTRVJUKChp
czxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkp
Ci0gICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigq
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWRJRCgpKSk7CisgICAgICAg
IHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYg
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRo
cmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkpOwogCiAgICAgLy8gTm9ib2R5
IG91dHNpZGUgdGhpcyBjbGFzcyByZWYgY291bnRzIHRoaXMgb2JqZWN0LiBUaGUgb3JpZ2luYWwg
cmVmCiAgICAgLy8gaXMgYmFsYW5jZWQgYnkgdGhlIGRlcmVmIGluIHdvcmtlckdsb2JhbFNjb3Bl
RGVzdHJveWVkSW50ZXJuYWwuCkBAIC02OSw3ICs2OSw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogewogICAgIEFTU0VSVCghbV93b3JrZXJPYmplY3Qp
OwogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYm
IGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFk
SUQoKSkpOworICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpKTsK
IH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxp
bmUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIGJv
b2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNU
aW1lIHRpbWVPcmlnaW4sIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncywgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAK
aW5kZXggMjM2MWJmNzQ1YWFiNTRmNTkxMzYwNzM5Mjc2OWI2MmFkYjNlMGJjZS4uNTZmYWY3ZDU0
ZWUyOWZjYjhhMzEyNWNmYmVlYjVhNWQ0ODAxMDc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJl
c3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQs
IGNvbnMKIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdv
cmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBNb2RlUHJlZGljYXRlJiBwcmVkaWNhdGUs
IFdhaXRNb2RlIHdhaXRNb2RlKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQo
Y29udGV4dC0+dGhyZWFkKCkudGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFT
U0VSVChjb250ZXh0LT50aHJlYWQoKS50aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
CiAgICAgSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJOb3RpZmljYXRpb25DYWxsYmFjayB0aW1l
ckFkZGVkVGFzayA9IFdURjo6Y3JlYXRlU2hhcmVkVGFzazxKU0M6OkpTUnVuTG9vcFRpbWVyOjpU
aW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGFjdHVh
bGx5IGRvIGFueXRoaW5nIGhlcmUsIHdlIGp1c3Qgd2FudCB0byBsb29wIGFyb3VuZCBydW5Jbk1v
ZGUKQEAgLTIyMSw3ICsyMjEsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxv
b3A6OnJ1bkluTW9kZShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29ucwogdm9pZCBXb3Jr
ZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQpCiB7
CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVChjb250ZXh0LT50aHJlYWQoKS50aHJl
YWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQtPnRocmVhZCgp
LnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1fbWVzc2FnZVF1
ZXVlLmtpbGxlZCgpKTsKIAogICAgIHdoaWxlICh0cnVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAppbmRleCA0OWU1YzRiYmJmNTJiZGNhODE1N2MxYzA3ZmIxOTZlOGRlYmVj
OTZiLi43YzQyZTI5M2RhMzQ2NGI1Yzk3ZGE1NDYxOTIwNDQ1NzQ1NzBmOGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgV29ya2Vy
VGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlclRocmVhZD4gewogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIGV2YWx1YXRlQ2FsbGJhY2spOwogICAgIHZvaWQgc3RvcChXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiB0ZXJtaW5hdGVkQ2FsbGJhY2spOwogCi0gICAgVGhyZWFkSWRlbnRpZmllciB0aHJl
YWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkID8gbV90aHJlYWQtPmlkKCkgOiAwOyB9Cisg
ICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQoKTsgfQogICAg
IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7IH0KICAgICBXb3Jr
ZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtl
ckxvYWRlclByb3h5OyB9CiAgICAgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2VyRGVidWdnZXJQ
cm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyRGVidWdnZXJQcm94eTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwCmluZGV4IDE1ZDBmZWNjNzNmM2Y1OTFkYmY5YzIwZjA3MWE1YWNjNGRhMTA2MTQuLjU2
ZWNiYzQwNTRiODI4NzZmZWIyMTNhNmQxNzYzMGUwZWI1Yjg0NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LAogU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6flNlcnZpY2VXb3JrZXJDb250YWluZXIoKQogewogI2lmbmRlZiBOREVCVUcK
LSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5k
aWYKIH0KIApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYKIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IoUmVmPFNlcnZpY2VXb3JrZXJKb2I+
JiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9
PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVChtX3N3Q29ubmVjdGlv
bik7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFy
dE1lc3NhZ2VzKCkKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4
Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9u
KQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJy
ZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSB7CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpv
YiwgY29uc3QKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJl
VXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9
PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChhdXRvKiByZWdpc3RyYXRp
b24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQpAQCAtMzIwLDcgKzMyMCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91
bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Ompv
YlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkIHNo
b3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1f
Y3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBhdXRv
IGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CkBAIC0zNjAsNyArMzYw
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3Ry
YXRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm9iJiBq
b2IsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1f
Y3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAg
ICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewpAQCAtMzgx
LDcgKzM4MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRo
VW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQog
ewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50
VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2V2aWNlV29y
a2VyQ29udGFpbmVyICVwIHN0YXJ0aW5nIHNjcmlwdCBmZXRjaCBmb3Igam9iICVzIiwgdGhpcywg
am9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC00MDIs
NyArNDAyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNo
Rm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQu
cHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0
IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbgog
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZp
Y2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJU
KG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBM
T0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmYWlsZWQgZmV0Y2hp
bmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9i
LCBjb25zdAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JEaWRGaW5pc2goU2Vydmlj
ZVdvcmtlckpvYiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFk
LnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGF1dG8gdGFrZW4g
PSBtX2pvYk1hcC50YWtlKGpvYi5pZGVudGlmaWVyKCkpOwpAQCAtNDcwLDcgKzQ3MCw3IEBAIFNX
Q2xpZW50Q29ubmVjdGlvbiYgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRD
b25uZWN0aW9uKCkKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9u
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICNpZm5kZWYgTkRF
QlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
I2VuZGlmCiAKICAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5hZGRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSW5TZXJ2ZXIocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSk7CkBAIC00ODAs
NyArNDgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24o
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmEKIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJl
Z2lzdHJhdGlvbikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJl
YWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBtX3N3Q29ubmVjdGlvbi0+
cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKHJlZ2lzdHJhdGlvbi5pZGVu
dGlmaWVyKCkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmlyZUNvbnRyb2xsZXJD
aGFuZ2VFdmVudCgpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhy
ZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRy
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgaWYgKG1faXNTdG9wcGVk
KQpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCgp
CiBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpjb250
ZXh0SWRlbnRpZmllcigpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQu
cHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCAyZDlhOWYwNDZhYmI0YWNl
ZjAzNjE3OThmNjNmMTYxODhkODI3ZDAwLi5lYTEyZThjNTk0ZGZiNDMzYzM2NDhkMzVjZjVmOTE1
NjE5YzlhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsIHB1YmxpYyBBYwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24qPiBtX3JlZ2lzdHJhdGlvbnM7CiAKICNp
Zm5kZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX2NyZWF0aW9uVGhyZWFkIHsgY3Vy
cmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVh
ZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRleCBmNzNmOTA3MmEwM2MzYzA1
ZTMyNjE1NDdhODg5MWFkYTk1NzI0MDk5Li40YTg4MWQ3N2I1OGY5ODczYTY1Yjg1MDc1ZDBkZDll
OWY5MDVlYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2IuY3BwCkBAIC00NywxMiArNDcsMTIgQEAgU2VydmljZVdvcmtlckpvYjo6
U2VydmljZVdvcmtlckpvYihTZXJ2aWNlV29ya2VySm9iQ2xpZW50JiBjbGllbnQsIFJlZjxEZWZl
cnJlZFAKIAogU2VydmljZVdvcmtlckpvYjo6flNlcnZpY2VXb3JrZXJKb2IoKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7CisgICAgQVNTRVJUKG1f
Y3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbiYgZXhj
ZXB0aW9uKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlvblRocmVh
ZCk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1
ZTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhj
ZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJK
b2I6OnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSYmIGRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsK
KyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwpA
QCAtNzAsNyArNzAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmCiAKIHZvaWQgU2VydmljZVdv
cmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25U
aHJlYWQpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9
IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRX
aXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsCiAKIHZvaWQg
U2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0
ZWQpOwogCiAgICAgbV9jbGllbnQtPnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoKnRoaXMpOwpAQCAt
ODcsNyArODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goKQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICAv
LyBGSVhNRTogV29ya2VyU2NyaXB0TG9hZGVyIGlzIHRoZSB3cm9uZyBsb2FkZXIgY2xhc3MgdG8g
dXNlIGhlcmUsIGJ1dCB0aGVyZSdzIG5vdGhpbmcgZWxzZSBiZXR0ZXIgcmlnaHQgbm93LgpAQCAt
OTcsNyArOTcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBTZXJ2aWNlV29ya2Vy
Sm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0
aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogICAgIEFTU0VSVChtX3Nj
cmlwdExvYWRlcik7CiAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JgogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6Om5vdGlmeUZpbmlzaGVkKCkKIHsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChtX2Ny
ZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1f
c2NyaXB0TG9hZGVyKTsKICAgICAKICAgICBpZiAoIW1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5o
CmluZGV4IGMzMGE0ZmI4NDg5NzM4OWMxNWI2MjdmMWRmOWRlZmUyODkxNzllNGMuLjljNDI4ZTc3
MjAwMzQyOTkxYWYzMTczYTI5ZTA0MDEyOTVkNTI5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaApAQCAtOTAsNyArOTAsNyBAQCBj
bGFzcyBTZXJ2aWNlV29ya2VySm9iIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcnZp
Y2VXb3JrZXJKb2I+LCBwdWJsaWMgVwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9sYXN0UmVzcG9u
c2U7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgVGhyZWFkSWRlbnRpZmllciBtX2NyZWF0
aW9uVGhyZWFkIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4gbV9jcmVhdGlv
blRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCBhMzdkNjE1MTZhNjI4MDBmNWE0MzFiODkxYzcyNzM0ZjA5MDM1YmNjLi40ZWRhMzJhYTc3
OTYwMzliMzY4OWE0NTEzNzdhYTg4OWZhYmViMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC0zNDAsMTMg
KzM0MCwxMyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBpbnQgZ2xvYmFsRGVzY3JpcHRvciA9IDA7Ci1zdGF0
aWMgVGhyZWFkSWRlbnRpZmllciBsaWJ4bWxMb2FkZXJUaHJlYWQgPSAwOworc3RhdGljIFRocmVh
ZCogbGlieG1sTG9hZGVyVGhyZWFkIHsgbnVsbHB0ciB9OwogCiBzdGF0aWMgaW50IG1hdGNoRnVu
Yyhjb25zdCBjaGFyKikKIHsKICAgICAvLyBPbmx5IG1hdGNoIGxvYWRzIGluaXRpYXRlZCBkdWUg
dG8gdXNlcyBvZiBsaWJ4bWwyIGZyb20gd2l0aGluIFhNTERvY3VtZW50UGFyc2VyIHRvIGF2b2lk
CiAgICAgLy8gaW50ZXJmZXJpbmcgd2l0aCBjbGllbnQgYXBwbGljYXRpb25zIHRoYXQgYWxzbyB1
c2UgbGlieG1sMi4gIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzUz
Ci0gICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJj
ZUxvYWRlciAmJiBjdXJyZW50VGhyZWFkKCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkOworICAgIHJl
dHVybiBYTUxEb2N1bWVudFBhcnNlclNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXIg
JiYgbGlieG1sTG9hZGVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KIAogY2xhc3Mg
T2Zmc2V0QnVmZmVyIHsKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxv
d0V4dGVybmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25z
dCBjaGFyKiB1cmkpCiB7CiAgICAgQVNTRVJUKFhNTERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJl
bnRDYWNoZWRSZXNvdXJjZUxvYWRlcik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBs
aWJ4bWxMb2FkZXJUaHJlYWQpOworICAgIEFTU0VSVCgmVGhyZWFkOjpjdXJyZW50KCkgPT0gbGli
eG1sTG9hZGVyVGhyZWFkKTsKIAogICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7CiAKQEAgLTQ5NSwx
NyArNDk1LDIwIEBAIHN0YXRpYyB2b2lkIGVycm9yRnVuYyh2b2lkKiwgY29uc3QgY2hhciosIC4u
LikKIH0KICNlbmRpZgogCi1zdGF0aWMgYm9vbCBkaWRJbml0ID0gZmFsc2U7Ci0KLVJlZjxYTUxQ
YXJzZXJDb250ZXh0PiBYTUxQYXJzZXJDb250ZXh0OjpjcmVhdGVTdHJpbmdQYXJzZXIoeG1sU0FY
SGFuZGxlclB0ciBoYW5kbGVycywgdm9pZCogdXNlckRhdGEpCitzdGF0aWMgdm9pZCBpbml0aWFs
aXplWE1MUGFyc2VyKCkKIHsKLSAgICBpZiAoIWRpZEluaXQpIHsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgZmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShmbGFnLCBbJl0gewogICAgICAgICB4
bWxJbml0UGFyc2VyKCk7CiAgICAgICAgIHhtbFJlZ2lzdGVySW5wdXRDYWxsYmFja3MobWF0Y2hG
dW5jLCBvcGVuRnVuYywgcmVhZEZ1bmMsIGNsb3NlRnVuYyk7CiAgICAgICAgIHhtbFJlZ2lzdGVy
T3V0cHV0Q2FsbGJhY2tzKG1hdGNoRnVuYywgb3BlbkZ1bmMsIHdyaXRlRnVuYywgY2xvc2VGdW5j
KTsKLSAgICAgICAgbGlieG1sTG9hZGVyVGhyZWFkID0gY3VycmVudFRocmVhZCgpOwotICAgICAg
ICBkaWRJbml0ID0gdHJ1ZTsKLSAgICB9CisgICAgICAgIGxpYnhtbExvYWRlclRocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKKyAgICB9KTsKK30KKworUmVmPFhNTFBhcnNlckNvbnRleHQ+IFhN
TFBhcnNlckNvbnRleHQ6OmNyZWF0ZVN0cmluZ1BhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhhbmRs
ZXJzLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBpbml0aWFsaXplWE1MUGFyc2VyKCk7CiAKICAg
ICB4bWxQYXJzZXJDdHh0UHRyIHBhcnNlciA9IHhtbENyZWF0ZVB1c2hQYXJzZXJDdHh0KGhhbmRs
ZXJzLCAwLCAwLCAwLCAwKTsKICAgICBwYXJzZXItPl9wcml2YXRlID0gdXNlckRhdGE7CkBAIC01
MjIsMTMgKzUyNSw3IEBAIFJlZjxYTUxQYXJzZXJDb250ZXh0PiBYTUxQYXJzZXJDb250ZXh0Ojpj
cmVhdGVTdHJpbmdQYXJzZXIoeG1sU0FYSGFuZGxlclB0ciBoYW5kCiAvLyBDaHVuayBzaG91bGQg
YmUgZW5jb2RlZCBpbiBVVEYtOAogUmVmUHRyPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNv
bnRleHQ6OmNyZWF0ZU1lbW9yeVBhcnNlcih4bWxTQVhIYW5kbGVyUHRyIGhhbmRsZXJzLCB2b2lk
KiB1c2VyRGF0YSwgY29uc3QgQ1N0cmluZyYgY2h1bmspCiB7Ci0gICAgaWYgKCFkaWRJbml0KSB7
Ci0gICAgICAgIHhtbEluaXRQYXJzZXIoKTsKLSAgICAgICAgeG1sUmVnaXN0ZXJJbnB1dENhbGxi
YWNrcyhtYXRjaEZ1bmMsIG9wZW5GdW5jLCByZWFkRnVuYywgY2xvc2VGdW5jKTsKLSAgICAgICAg
eG1sUmVnaXN0ZXJPdXRwdXRDYWxsYmFja3MobWF0Y2hGdW5jLCBvcGVuRnVuYywgd3JpdGVGdW5j
LCBjbG9zZUZ1bmMpOwotICAgICAgICBsaWJ4bWxMb2FkZXJUaHJlYWQgPSBjdXJyZW50VGhyZWFk
KCk7Ci0gICAgICAgIGRpZEluaXQgPSB0cnVlOwotICAgIH0KKyAgICBpbml0aWFsaXplWE1MUGFy
c2VyKCk7CiAKICAgICAvLyBhcHBlbmRGcmFnbWVudFNvdXJjZSgpIGNoZWNrcyB0aGF0IHRoZSBs
ZW5ndGggZG9lc24ndCBvdmVyZmxvdyBhbiBpbnQuCiAgICAgeG1sUGFyc2VyQ3R4dFB0ciBwYXJz
ZXIgPSB4bWxDcmVhdGVNZW1vcnlQYXJzZXJDdHh0KGNodW5rLmRhdGEoKSwgY2h1bmsubGVuZ3Ro
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAKaW5kZXggYzM3NzU4MjU0YjRkNGY4ZjAxY2U5YTM4ZTZmMGRlOGI1MjU4OTk2YS4uMDdl
ZWRjYjYzYzQ4ZWU2YmNiMTY2ZDkyYmI4YTY3ZGExODRiMGEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC00Myw3ICs0Myw3
IEBACiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKSBBU1NFUlQoIW1fc3luY1RocmVh
ZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQoKSkKIAogLy8gRm9yIG1ldGhvZHMgdGhh
dCBhcmUgbWVhbnQgdG8gc3VwcG9ydCB0aGUgc3luYyB0aHJlYWQgT05MWQotI2RlZmluZSBJU19J
Q09OX1NZTkNfVEhSRUFEKCkgKG1fc3luY1RocmVhZC0+aWQoKSA9PSBjdXJyZW50VGhyZWFkKCkp
CisjZGVmaW5lIElTX0lDT05fU1lOQ19USFJFQUQoKSAobV9zeW5jVGhyZWFkID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSkKICNkZWZpbmUgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKSBBU1NFUlQoSVNf
SUNPTl9TWU5DX1RIUkVBRCgpKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKaW5kZXggMmI3YjJmNWM3Y2EwMWM0ZTM1
ZGE0MzRiMzMxNGU2OGY3ZGJhY2ZiNy4uYmFjNmRjYTRkYzAxODVjNmQ3NjJmZGNmMDhmYTFkNjMx
MWIxMDRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxi
YWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKQEAg
LTk0LDEzICs5NCwxMyBAQCBjbGFzcyBHZW5lcmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tC
YXNlIHsKIAogICAgIHZpcnR1YWwgfkdlbmVyaWNDYWxsYmFjaygpCiAgICAgewotICAgICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBBU1NF
UlQobV9vcmlnaW5UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2NhbGxiYWNrKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShULi4uIHJldHVyblZhbHVlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICAgICAgQVNTRVJUKG1fb3Jp
Z2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAgICAgaWYgKCFt
X2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE3LDcgKzExNyw3IEBAIGNsYXNz
IEdlbmVyaWNDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0Jhc2UgewogCiAgICAgdm9pZCBpbnZh
bGlkYXRlKEVycm9yIGVycm9yID0gRXJyb3I6OlVua25vd24pIGZpbmFsCiAgICAgewotICAgICAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgICAgICBB
U1NFUlQobV9vcmlnaW5UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAg
ICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDQsNyArMTQ0
LDcgQEAgY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVibGljIENhbGxiYWNrQmFzZSB7CiAgICAg
c3RkOjpvcHRpb25hbDxDYWxsYmFja0Z1bmN0aW9uPiBtX2NhbGxiYWNrOwogCiAjaWZuZGVmIE5E
RUJVRwotICAgIFRocmVhZElkZW50aWZpZXIgbV9vcmlnaW5UaHJlYWRJRCB7IGN1cnJlbnRUaHJl
YWQoKSB9OworICAgIFJlZjxUaHJlYWQ+IG1fb3JpZ2luVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50
KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGVmNjhhOTUwMTU3N2ZkZWYxN2MzNjRjOGY5NjE0MjU4ZjIyZjcwMjAu
LjUwYTEzMDhiNjhiNDUyZjE5NDZhZTIyYWIzYTIxOWUwZmI1NzlhNzUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAx
Ny0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcFJlbmRlclRyZWUpOgorICAg
ICAgICAocnVuVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKHJ1blB0aHJlYWQpOiBEZWxldGVk
LgorICAgICAgICAodGVzdFRocmVhZElkZW50aWZpZXJNYXApOiBEZWxldGVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVGhyZWFkaW5nLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAxNy0xMi0wMyAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgd2Via2l0cHkgRVdTIGtlZXBzIHJldHJ5aW5nIGEgZmFpbGluZyBwYXRj
aApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDMyN2Yy
MGIxZGYwNGNlYmI4OGYxNDJmNWM5YTlhNjY2MjVlZGJmMGQuLjU0NTJkMmRkNDk4MTVmZTE0M2Fl
NDczYjY4ZGQzNGE4OTNkY2Q3NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KQEAgLTEwNjUsMzYgKzEwNjUsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0
c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOnByb2Nlc3NJbnN0YW5jZURlZmF1
bHRzIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiB9CiAKLXN0YXRpYyB2b2lkIHJ1blRocmVh
ZCgpCi17Ci0gICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgcHJldmlvdXNJZCA9IDA7Ci0gICAg
VGhyZWFkSWRlbnRpZmllciBjdXJyZW50SWQgPSBjdXJyZW50VGhyZWFkKCk7Ci0gICAgLy8gVmVy
aWZ5IDIgc3VjY2Vzc2l2ZSB0aHJlYWRzIGRvIG5vdCBnZXQgdGhlIHNhbWUgSWQuCi0gICAgQVNT
RVJUKHByZXZpb3VzSWQgIT0gY3VycmVudElkKTsKLSAgICBwcmV2aW91c0lkID0gY3VycmVudElk
OwotfQotCi1zdGF0aWMgdm9pZCogcnVuUHRocmVhZCh2b2lkKikKLXsKLSAgICBydW5UaHJlYWQo
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RhdGljIHZvaWQgdGVzdFRocmVhZElkZW50
aWZpZXJNYXAoKQotewotICAgIC8vIEltaXRhdGUgJ2ZvcmVpZ24nIHRocmVhZHMgdGhhdCBhcmUg
bm90IGNyZWF0ZWQgYnkgV1RGLgotICAgIHB0aHJlYWRfdCBwdGhyZWFkOwotICAgIHB0aHJlYWRf
Y3JlYXRlKCZwdGhyZWFkLCAwLCAmcnVuUHRocmVhZCwgMCk7Ci0gICAgcHRocmVhZF9qb2luKHB0
aHJlYWQsIDApOwotCi0gICAgcHRocmVhZF9jcmVhdGUoJnB0aHJlYWQsIDAsICZydW5QdGhyZWFk
LCAwKTsKLSAgICBwdGhyZWFkX2pvaW4ocHRocmVhZCwgMCk7Ci0KLSAgICAvLyBOb3cgY3JlYXRl
IGFub3RoZXIgdGhyZWFkIHVzaW5nIFdURi4gT24gT1NYLCBpdCB3aWxsIGhhdmUgdGhlIHNhbWUg
cHRocmVhZCBoYW5kbGUKLSAgICAvLyBidXQgc2hvdWxkIGdldCBhIGRpZmZlcmVudCBSZWZQdHI8
VGhyZWFkPi4KLSAgICBUaHJlYWQ6OmNyZWF0ZSgiRHVtcFJlbmRlclRyZWU6IHRlc3QiLCBydW5U
aHJlYWQpOwotfQotCiBzdGF0aWMgdm9pZCBhbGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSB0aGVzZSBhbmQgbW92ZSB0byB0aGUgT2Jq
QyBzdGFuZGFyZCBbRm9vIHNoYXJlZEluc3RhbmNlXSBtb2RlbApAQCAtMTI4Myw5ICsxMjUzLDYg
QEAgdm9pZCBkdW1wUmVuZGVyVHJlZShpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogICAg
IFtOU1VSTFJlcXVlc3Qgc2V0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZTpZRVMgZm9ySG9zdDpA
ImxvY2FsaG9zdCJdOwogICAgIFtOU1VSTFJlcXVlc3Qgc2V0QWxsb3dzQW55SFRUUFNDZXJ0aWZp
Y2F0ZTpZRVMgZm9ySG9zdDpAIjEyNy4wLjAuMSJdOwogCi0gICAgLy8gaHR0cDovL3dlYmtpdC5v
cmcvYi8zMjY4OQotICAgIHRlc3RUaHJlYWRJZGVudGlmaWVyTWFwKCk7Ci0KICAgICBpZiAodGhy
ZWFkZWQpCiAgICAgICAgIHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMoKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQKaW5kZXggN2UzMWYzMDk3OGFlNDI3YjEwYTkxZmIxNGVmYjlmZTEzNDQz
MDFhMS4uNWFjNWU2MTVkMzJmN2M1NTI1NzY2ZjkzMWMzMGY0OTY3MWYxMjQwYyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC0xNDEsNiArMTQxLDcgQEAgc2V0KFRlc3RXVEZfU09V
UkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9UZXh0QnJlYWtJdGVyYXRv
ci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcAor
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9UaHJlYWRpbmcuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RpbWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvVmFyaWFudC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODMyOGNlYWE4
NzQzNjI3M2Q0NjExMTQ0NTQ0YzlkMWNkYmIyMjBjYi4uYzUyZDdlOTI1Nzg1MjM3YTE4ODA4Y2Zl
ZWIxYzc3MmUyYzY3Y2NiYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY5Myw2ICs2OTMs
NyBAQAogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJ
RTE5NEUxQkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNw
b25zZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNl
aXZlUmVzcG9uc2UuaHRtbCAqLzsgfTsKIAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNp
Z25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovOyB9OworCQlFMzhBMEQz
NTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJl
YWRpbmcuY3BwICovOyB9OwogCQlFM0RFQTgxMTFGMEE1ODkwMDBDQkMyRTggLyogVGhyZWFkR3Jv
dXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
RUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAqLzsgfTsKIAkJRUNBNjgw
Q0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAv
KiBTdHJpbmdVdGlsaXRpZXMubW0gKi87IH07CiAJCUY0MDdGRTM5MUYxRDBERkMwMDE3Q0YyNSAv
KiBlbm9ybW91cy5zdmcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQwN0ZFMzgxRjFEMERFNjAwMTdDRjI1IC8qIGVub3Jtb3VzLnN2ZyAqLzsg
fTsKQEAgLTE3NzIsNiArMTc3Myw3IEBACiAJCUUxOTRFMUJBMTc3RTUxNDUwMDlDNEQ0RSAvKiBT
dG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAv
KiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFN0b3BM
b2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXZpZ2F0b3JMYW5ndWFn
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4QTBEMzQxRkQ1MENCQzAwRTk4
QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk1M0Y5NTFG
MkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaWduYWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNE
RUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTQwMDE5MzAxQUNFOUI1QzAwMUIwQTJBIC8qIEJsb29tRmlsdGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJsb29tRmlsdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NTEsNiArMjY1Myw3IEBACiAJCQkJNTU5N0Y4
MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3BwICovLAogCQkJ
CTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8sCiAJ
CQkJRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAqLywKKwkJCQlF
MzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLywKIAkJCQk1MzExQkQ1
RDFFQTk0OTBEMDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZXMuY3BwICovLAogCQkJCTBGMkMyMEI3
MURDRDU0NDgwMDU0MkQ5RSAvKiBUaW1lLmNwcCAqLywKIAkJCQk1QzVFNjMzRDFEMEI2Nzk0MDA4
NUEwMjUgLyogVW5pcXVlUmVmLmNwcCAqLywKQEAgLTMyMTEsNiArMzIxNCw3IEBACiAJCQkJN0M4
M0RGNDAxRDBBNTkwQzAwRkVCQ0YzIC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5MzI5QUEyOTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTNERUE4MTExRjBBNTg5MDAwQ0JDMkU4IC8qIFRocmVhZEdy
b3VwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOEEwRDM1MUZENTBDQzMwMEU5OEM4QiAvKiBU
aHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENUUxRUE5NDkwRTAwNTI1Mjgx
IC8qIFRocmVhZE1lc3NhZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkMyMEI4MURDRDU0
NTAwMDU0MkQ5RSAvKiBUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDNCMUQwQTYw
MjcwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAppbmRleCBiYThkZDU2YTViMzBh
MjRlZjVmZGNlM2JkMzAxZDA2ZjU0YWQ0ZTg4Li5mOTQ0MGQwOWZlMWUxMmE4MDY1NDBiNDJlMjEw
OWM5MWE0Yzc3YjZmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
YXJraW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5n
TG90LmNwcApAQCAtNTEsNyArNTEsNiBAQCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0IHsKICAgICAg
ICAgICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgIlBhcmtpbmcg
VGVzdCBUaHJlYWQiLAogICAgICAgICAgICAgICAgICAgICBbJl0gKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgRVhQRUNUX05FKDB1LCBjdXJyZW50VGhyZWFkKCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgZG93bigpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKGxvY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1RocmVhZGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ2OGQxNTA5NmM1MjhiMjhmOTQ3ZTcz
ZjgwOTEzZjAwYWRhZGIyZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1RocmVhZGluZy5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKKyNp
ZiBVU0UoUFRIUkVBRFMpCitURVNUKFdURiwgVGhyZWFkaW5nVGhyZWFkSWRlbnRpdHkpCit7Cisg
ICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi8zMjY4OQorICAgIHN0YXRpYyBUaHJlYWQqIHRocmVh
ZDE7CisgICAgc3RhdGljIFRocmVhZCogdGhyZWFkMjsKKworICAgIC8vIEltaXRhdGUgJ2ZvcmVp
Z24nIHRocmVhZHMgdGhhdCBhcmUgbm90IGNyZWF0ZWQgYnkgV1RGLgorICAgIHB0aHJlYWRfdCBw
dGhyZWFkOworICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCBudWxscHRyLCBbXSAodm9pZCop
IC0+IHZvaWQqIHsKKyAgICAgICAgdGhyZWFkMSA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAg
ICAgdGhyZWFkMS0+cmVmKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0sIG51bGxw
dHIpOworICAgIHB0aHJlYWRfam9pbihwdGhyZWFkLCBudWxscHRyKTsKKworICAgIHB0aHJlYWRf
Y3JlYXRlKCZwdGhyZWFkLCBudWxscHRyLCBbXSAodm9pZCopIC0+IHZvaWQqIHsKKyAgICAgICAg
dGhyZWFkMiA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkMi0+cmVmKCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0sIG51bGxwdHIpOworICAgIHB0aHJlYWRfam9p
bihwdGhyZWFkLCBudWxscHRyKTsKKworICAgIC8vIE5vdyBjcmVhdGUgYW5vdGhlciB0aHJlYWQg
dXNpbmcgV1RGLiBPbiBPU1gsIGl0IG1heSBoYXZlIHRoZSBzYW1lIHB0aHJlYWQgaGFuZGxlCisg
ICAgLy8gYnV0IHNob3VsZCBnZXQgYSBkaWZmZXJlbnQgUmVmUHRyPFRocmVhZD4gaWYgdGhlIHBy
ZXZpb3VzIFJlZlB0cjxUaHJlYWQ+IGlzIGhlbGQuCisgICAgVGhyZWFkOjpjcmVhdGUoIkR1bXBS
ZW5kZXJUcmVlOiB0ZXN0IiwgW10geworICAgICAgICBFWFBFQ1RfVFJVRSh0aHJlYWQxICE9ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHRocmVhZDIgIT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUodGhyZWFkMSAhPSB0aHJlYWQyKTsK
KyAgICAgICAgdGhyZWFkMS0+ZGVyZWYoKTsKKyAgICAgICAgdGhyZWFkMi0+ZGVyZWYoKTsKKyAg
ICB9KS0+d2FpdEZvckNvbXBsZXRpb24oKTsKK30KKyNlbmRpZiAvLyBVU0UoUFRIUkVBRFMpCisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328329</attachid>
            <date>2017-12-03 21:28:59 -0800</date>
            <delta_ts>2017-12-03 21:28:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-180308-20171204142857.patch</filename>
            <type>text/plain</type>
            <size>216426</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MWE2OTllNzQ0ZWQ2NzNjMDRhOWE5ZDJjZTcyNzMxNzUwMGFlMzQwLi40NTY0OTQ2Mzc3ZmE2ZmZl
Yjg5ODQwNDcwZDMxOWI3NTkwMzUxZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVh
ZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
ICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhy
ZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNl
RnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25TY29wZS5jcHA6
CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjp1bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2Fn
ZSk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suaDoKKyAgICAgICAgKEpTQzo6SlNMb2NrOjpj
dXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dpbmdUaHJlYWQgY29uc3QpOgorICAgICAgICAoSlND
OjpWTTo6Y2xlYXJFeGNlcHRpb24pOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJpZmllci5jcHA6
CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6cHJpbnRWZXJpZmljYXRpb25IZWFkZXIpOgor
CiAyMDE3LTEyLTAzICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAg
ICBSZW5hbWUgRGVzdHJveUZ1bmMgdG8gYXZvaWQgcmVkZWZpbml0aW9uIG9uIHVuaWZpZWQgYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggY2Y2YzRkYzI1OGFhYmQ5MWQ5ZDc4MGYyYmRhYjk1MmI1NTljYWJlZi4uZDI4ZDc5
YjE2MmQzNTJmMDEzNmFmM2I3Y2Y3YjE0M2FiMDAyYWFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAor
MjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdlIHNob3VsZCB1
c2UgYSBwb2ludGVyIG9mIFdURjo6VGhyZWFkIGluc3RlYWQgb2YgVGhyZWFkSWRlbnRpZmllci4K
KworICAgICAgICBPbmUgcHJvYmxlbSBpcyB0aGF0IFdpbmRvd3Mgc3VwcG9ydCBsaWJyYXJ5IHVz
ZXMgV1RGOjpjcmVhdGVUaHJlYWQsCisgICAgICAgIHdoaWNoIHJldHVybnMgVGhyZWFkSWRlbnRp
Zmllci4gU28gd2UgY2Fubm90IGRyb3AgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBpbiBXaW5k
b3dzIGVudmlyb25tZW50LiBUaGlzIHBhdGNoIGtlZXBzIFRocmVhZElkZW50aWZpZXIgaW4gV2lu
ZG93cy4KKworICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAgICAgICAgKFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQpOgorICAgICAgICAoV1RGOjppc01haW5UaHJlYWQpOgorICAgICAg
ICAoV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQpOgorICAgICAgICAqIHd0
Zi9NYWluVGhyZWFkLmg6CisgICAgICAgICogd3RmL1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAo
V1RGOjpQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9uYWxseUltcGwpOgorICAgICAgICAoV1RGOjpQ
YXJraW5nTG90Ojp1bnBhcmtPbmUpOgorICAgICAgICAoV1RGOjpQYXJraW5nTG90Ojp1bnBhcmtP
bmVJbXBsKToKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6dW5wYXJrQ291bnQpOgorICAgICAg
ICAqIHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oOgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVM
b2NrQWRhcHRlcjo6bG9jayk6CisgICAgICAgIChXVEY6OlJlY3Vyc2l2ZUxvY2tBZGFwdGVyOjp1
bmxvY2spOgorICAgICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6dHJ5TG9jayk6Cisg
ICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6ZHVtcCBj
b25zdCk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6
OmlkIGNvbnN0KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpvcGVyYXRvcj09KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6VGhyZWFkOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6Y3VycmVudFRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAo
V1RGOjpUaHJlYWQ6OndhaXRGb3JDb21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpk
ZXRhY2gpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRpYWxpemVDdXJyZW50VExTKToKKyAg
ICAgICAgKFdURjo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplc3Rh
Ymxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJy
ZW50SUQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OndhaXRGb3JDb21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFk
OjpzdXNwZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50RHlpbmcpOgorICAgICAg
ICAqIHd0Zi9tYWMvTWFpblRocmVhZE1hYy5tbToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUFw
cGxpY2F0aW9uVUlUaHJlYWQpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkUGxh
dGZvcm0pOgorICAgICAgICAoV1RGOjpjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQp
OgorICAgICAgICAoV1RGOjppbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjppbml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcik6
IERlbGV0ZWQuCisKIDIwMTctMTItMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBXVEY6Okhhc2hlciwgYW4gZWFzaWVyIHRvIHVzZSByZXBsYWNlbWVudCBm
b3IgV1RGOjpJbnRlZ2VySGFzaGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA5YWE1MzhjNjA4MjAyODYwMmQw
Mzg3MzEwOWRmZjI3YjZhMGRjYi4uOTk4ZmZmNjY0OTBhNTc2ZGVjYzBlOTNiZjU5ZTBmNmY1ZTQ5
MWY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1NSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhh
dmUgYm90aCBUaHJlYWQgYW5kIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpvcmlnaW5UaHJlYWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpwZXJmb3JtQ2FsbGJhY2tPbk9yaWdpblRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6OmNhbGxGdW5jdGlvbk9uT3Jp
Z2luVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2ZURPTU9iamVjdDo6b3JpZ2lu
VGhyZWFkSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OklEQkN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6On5JREJDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yOjpzb3VyY2VzRGVsZXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3I6OnRyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNv
cjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6YWR2YW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpzZXRHZXRSZXN1bHQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmFtZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVyc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZTo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6ZGlkQ3JlYXRlSW5kZXhJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpk
aWREZWxldGVJbmRleEluZm8pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpJREJJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6fklEQkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4
OjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpzZXROYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6a2V5UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6
dW5pcXVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0aUVudHJ5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9u
Q2hhbmdlQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OmRvQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmRv
R2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpkb0dldEtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpn
ZXRBbGxLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptYXJrQXNEZWxldGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6On5JREJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6c2V0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6a2V5
UGF0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1l
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6Z2V0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXRPckFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZG9EZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkb0NvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpnZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6Om1hcmtBc0RlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJl
cXVlc3Q6On5JREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJl
cXVlc3Q6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6dmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uRGlkRmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdlQ29tbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVFcnJvckFmdGVyVmVyc2lvbkNoYW5n
ZUNvbXBsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6ZGlzcGF0
Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uRGVsZXRlRGF0YWJhc2VTdWNj
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdEJsb2NrZWQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6fklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6dHJhbnNhY3Rpb24gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6c291cmNlT2JqZWN0U3RvcmVJZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNvdXJjZUluZGV4SWRlbnRpZmllciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZXF1ZXN0ZWRPYmplY3RTdG9yZVJl
Y29yZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVxdWVzdGVk
SW5kZXhSZWNvcmRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVxdWVzdDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpl
bnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNldFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVmaW5lZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZXN1bHRDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXF1ZXN0Ojpjb21wbGV0ZVJlcXVlc3RBbmREaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3Q6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246On5JREJUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVOYW1lcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmVycm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnRyYW5zaXRpb25lZFRvRmluaXNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aW50
ZXJuYWxBYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNl
cnZlckFuZENhbmNlbFJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjppc0ZpbmlzaGVkT3JGaW5pc2hpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmFkZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OnJlbW92ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpzY2hlZHVsZVBlbmRpbmdPcGVyYXRpb25UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRpbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25U
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjb21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNvbW1pdE9uU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaW5pc2hBYm9ydE9yQ29tbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OmRpZEFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkaWRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmZpcmVPbkNv
bXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpmaXJlT25BYm9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlT25TZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZFJlbmFtZU9iamVjdFN0
b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRDcmVhdGVJbmRleE9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXhPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3JPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVj
dFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldEFsbEluZGV4UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
Z2V0QWxsUmVjb3Jkc09uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RHZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdEdldEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpnZXRSZWNv
cmRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVj
b3JkT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERlbGV0ZVJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZVJlY29yZE9u
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmpl
Y3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaWRD
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlcXVlc3RQdXRPckFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
cHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlk
UHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGVs
ZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0
ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
OmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkZWxldGVJbmRleE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpkaWREZWxldGVJbmRleE9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6ZXN0YWJsaXNoT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmFjdGl2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpk
ZWFjdGl2YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6cmVtb3ZlSXRlbXNN
YXRjaGluZ0N1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbjo6flRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRv
Q29tcGxldGVPblRoaXNUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbjo6dHJhbnNpdGlvblRvQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6ZG9Db21wbGV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpvcmlnaW5UaHJlYWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bjo6b3JpZ2luVGhyZWFkSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnRyeUxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
aXNHcmFwaE93bmVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzZXRBdWRpb1RocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmF1ZGlvVGhyZWFkIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OnBlcmZvcm1DbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6OkRhdGFiYXNlRGV0YWlscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6OnRocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZURldGFpbHM6OnRocmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJl
YWQ6OmdldFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6Z2V0VGhy
ZWFkSUQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmNoZWNrQW5kSGFu
ZGxlQ2xvc2VkRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFj
a2VuZDo6ZG9DbGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2Vu
ZDo6bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRh
OjpKU0NhbGxiYWNrRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpT
Q2FsbGJhY2tEYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQpOgorICAgICAg
ICAqIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFk
Ojppc0N1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6cHJvdmlkZVN1cHBsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnJlbW92ZVN1cHBsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VwcGxlbWVudGFibGU6OnJlcXVpcmVTdXBwbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpTdXBwbGVtZW50YWJsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNl
OjpUaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNlOjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJC
YXNlOjpzZXROZXh0RmlyZVRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRl
T25Db21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmdldEF2YWlsYWJsZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphcHBlbmRUb1VudXNlZEJ1
ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6c3dhcEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoUnVuV2Vi
VGhyZWFkKToKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6
Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsb3NlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlOjpzcWxpdGUzSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
Ojp+V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2Nv
cGU6OmlzQ29udGV4dFRocmVhZCBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6
V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5n
UHJveHk6On5Xb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWQ6OnRocmVhZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnRo
cmVhZElEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZv
dW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9i
UmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JK
b2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNo
ZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNo
YW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNv
bnRleHRJZGVudGlmaWVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6On5TZXJ2aWNlV29ya2Vy
Sm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmZhaWxlZFdpdGhFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRo
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29s
dmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hGdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZW5GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVYTUxQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MUGFyc2VyQ29udGV4dDo6Y3JlYXRlU3RyaW5nUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZU1lbW9yeVBh
cnNlcik6CisKIDIwMTctMTItMDMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyIGxlYWtzIHdo
ZW4gcGFzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYWE1ODI1NTAzNTMyMTZkMGYxNjUxZTNkZjgxZjE1YzQ0
YzQ2NzkwLi5lNWM1MTAxYWZmZGMwYjk2ZWJlYjg0NWMyYzlhM2JjYWJlOTJlZDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEyLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdURiBzaG91bGRuJ3QgaGF2ZSBib3RoIFRocmVhZCBh
bmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWND
YWxsYmFjazo6fkdlbmVyaWNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkdlbmVyaWNDYWxs
YmFjazo6cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKToKKwogMjAxNy0xMi0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgc2VydmljZVdv
cmtlci5wb3N0TWVzc2FnZSgpIGluc2lkZSBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCmluZGV4IDFkZThjYWE4
OWQ0MTgwNjgxYjcyNzY4YzcyZWYzOTVhNTUyMWIzMTYuLmU2YWY1M2I2MTlmZDYwNzdiNzVlNDE3
NWJlMzc1ZjQ4ZTg2MGNiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIGJvb2wgTWFjaGluZVRo
cmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYgbG9j
a2VyLCB2b2lkCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgIGZv
ciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykgewotICAgICAgICAgICAgaWYgKHRocmVhZC5nZXQo
KSAhPSBjdXJyZW50VGhyZWFkKSB7CisgICAgICAgICAgICBpZiAodGhyZWFkLnB0cigpICE9ICZj
dXJyZW50VGhyZWFkKSB7CiAgICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSB0aHJlYWQtPnN1
c3BlbmQoKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgICAg
ICBpc1N1c3BlbmRlZC5zZXQoaW5kZXgpOwpAQCAtMTYwLDggKzE2MCw4IEBAIGJvb2wgTWFjaGlu
ZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYg
bG9ja2VyLCB2b2lkCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIHRocmVhZHMgd2lsbCBi
ZSByZW1vdmVkIGZyb20gdGhlIFRocmVhZEdyb3VwLiBUaHVzLCB3ZSBkbyBub3QgZG8gYW55dGhp
bmcgaGVyZSBleGNlcHQgZm9yIHJlcG9ydGluZy4KICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdC5lcnJvcigpICE9IEtFUk5fU1VDQ0VTUyk7CiAgICAgICAgICAgICAgICAgICAgIFdU
RlJlcG9ydEVycm9yKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBlbmNv
dW50ZXJlZCBhbiBpbnZhbGlkIHRocmVhZCAoZXJyIDB4JXgpOiBUaHJlYWQgWyVkLyVkOiAlcF0g
aWQgJXUuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcigpLCBpbmRleCwg
dGhyZWFkcy5zaXplKCksIHRocmVhZC5wdHIoKSwgdGhyZWFkLT5pZCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBlbmNvdW50ZXJlZCBh
biBpbnZhbGlkIHRocmVhZCAoZXJyIDB4JXgpOiBUaHJlYWQgWyVkLyVkOiAlcF0uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcigpLCBpbmRleCwgdGhyZWFkcy5zaXplKCks
IHRocmVhZC5wdHIoKSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCAyMWU5MDJkNDk1NWY4YmNiZjcyODBmNGYxYjlkYTM5Nzc3MTNiNTNiLi43YTE1ZTIyOWVlMGEy
YzgxOTY0Mzc4OGU4YjE2Y2EzMzA5OGI0YmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE5MSw4ICsxOTEsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxs
aW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBm
cm9tV2hlcmUsIGludCBvcGVyYW5kKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgZGF0YUxv
Z0YoIjwlZD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6
ICVkXG4iLAotICAgICAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAgIGRhdGFMb2dGKCI8JXA+
ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZFxuIiwK
KyAgICAgICAgICAgICZUaHJlYWQ6OmN1cnJlbnQoKSwKICAgICAgICAgICAgIGV4ZWMtPmNvZGVC
bG9jaygpLAogICAgICAgICAgICAgZXhlYywKICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0
cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKQEAg
LTIxNSw4ICsyMTUsOCBAQCBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFj
ZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYwogICAgIH0gdTsKICAgICB1
LmFzVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwogICAgIGRhdGFMb2dGKAotICAgICAg
ICAiPCVkPiAlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWQ6ICUwOHg6JTA4eDogJXNcbiIsCi0gICAgICAgIGN1cnJlbnRUaHJlYWQoKSwKKyAgICAgICAg
IjwlcD4gJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
OiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICAmVGhyZWFkOjpjdXJyZW50KCksCiAgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLAogICAgICAgICBleGVjLAogICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSks
CkBAIC0yMzIsNyArMjMyLDcgQEAgZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMKIAogTExJTlRfU0xP
V19QQVRIX0RFQ0wodHJhY2VfcHJvbG9ndWUpCiB7Ci0gICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAl
cDogaW4gcHJvbG9ndWUgb2YgIiwgY3VycmVudFRocmVhZCgpLCBleGVjLT5jb2RlQmxvY2soKSwg
ZXhlYyk7CisgICAgZGF0YUxvZ0YoIjwlcD4gJXAgLyAlcDogaW4gcHJvbG9ndWUgb2YgIiwgJlRo
cmVhZDo6Y3VycmVudCgpLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CiAgICAgZGF0YUxvZygq
ZXhlYy0+Y29kZUJsb2NrKCksICJcbiIpOwogICAgIExMSU5UX0VORF9JTVBMKCk7CiB9CkBAIC0y
NDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWMKICAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpOwogICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2tGb3Ioa2luZCk7Ci0g
ICAgZGF0YUxvZ0YoIjwlZD4gJXAgLyAlcDogaW4gJXMgb2YgIiwgY3VycmVudFRocmVhZCgpLCBj
b2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQpOworICAgIGRhdGFMb2dGKCI8JXA+ICVwIC8gJXA6IGlu
ICVzIG9mICIsICZUaHJlYWQ6OmN1cnJlbnQoKSwgY29kZUJsb2NrLCBleGVjLCBjb21tZW50KTsK
ICAgICBkYXRhTG9nKCpjb2RlQmxvY2spOwogICAgIGRhdGFMb2dGKCIgZnVuY3Rpb24gJXAsIGV4
ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVM
b2NhbHMgPSAldSwgY2FsbGVyID0gJXAuXG4iLAogICAgICAgICBjYWxsZWUsIGV4ZWN1dGFibGUs
IGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FscywgZXhlYy0+Y2FsbGVyRnJhbWUoKSk7CkBAIC0yNzUsOCAr
Mjc1LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KQogTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpOwotICAgIGRhdGFM
b2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAotICAg
ICAgICAgICAgY3VycmVudFRocmVhZCgpLAorICAgIGRhdGFMb2dGKCI8JXA+ICVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMlenUsICVzLCBwYyA9ICVwXG4iLAorICAgICAgICAgICAgJlRocmVhZDo6Y3Vy
cmVudCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAgICBleGVj
LAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApAQCAtMjk0LDggKzI5NCw4IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHRyYWNlKQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzcGVjaWFsX3RyYWNl
KQogewotICAgIGRhdGFMb2dGKCI8JWQ+ICVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2Ug
YmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAotICAgICAgICAgICAgY3VycmVudFRo
cmVhZCgpLAorICAgIGRhdGFMb2dGKCI8JXA+ICVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNh
c2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICAgJlRocmVh
ZDo6Y3VycmVudCgpLAogICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCiAgICAgICAgICAg
ICBleGVjLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuY3BwCmluZGV4IDY5MGJjMTIyOWYyMTQwYTA4
ZGJhNzdiN2U1NWJhMmMyMWY4YzI3YmYuLjdkMWMwNmE5NTQxYjE1MDEzMDI0NjhhY2JiMDFmODY3
NDQ4OWFmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25TY29wZS5jcHAKQEAgLTU1LDE0ICs1NSwxNCBAQCBDU3RyaW5nIEV4Y2VwdGlvblNjb3BlOjp1
bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpCiB7CiAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0
OwogCi0gICAgb3V0LnByaW50bG4oIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIG9ic2VydmVkIG9uIHRo
cmVhZCAiLCBjdXJyZW50VGhyZWFkKCksICIgYXQ6Iik7CisgICAgb3V0LnByaW50bG4oIlVuZXhw
ZWN0ZWQgZXhjZXB0aW9uIG9ic2VydmVkIG9uIHRocmVhZCAiLCBUaHJlYWQ6OmN1cnJlbnQoKSwg
IiBhdDoiKTsKICAgICBhdXRvIGN1cnJlbnRTdGFjayA9IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFj
a1RyYWNlKE9wdGlvbnM6OnVuZXhwZWN0ZWRFeGNlcHRpb25TdGFja1RyYWNlTGltaXQoKSwgMSk7
CiAgICAgY3VycmVudFN0YWNrLT5kdW1wKG91dCwgIiAgICAiKTsKIAogICAgIGlmICghbV92bS5u
YXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKSkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsK
ICAgICAKLSAgICBvdXQucHJpbnRsbigiVGhlIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGZyb20gdGhy
ZWFkICIsIG1fdm0udGhyb3dpbmdUaHJlYWQoKSwgIiBhdDoiKTsKKyAgICBvdXQucHJpbnRsbigi
VGhlIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGZyb20gdGhyZWFkICIsICptX3ZtLnRocm93aW5nVGhy
ZWFkKCksICIgYXQ6Iik7CiAgICAgbV92bS5uYXRpdmVTdGFja1RyYWNlT2ZMYXN0VGhyb3coKS0+
ZHVtcChvdXQsICIgICAgIik7CiAKICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCBkZWEwNTAyOGNkNzM1ZWI2MzkxNzQ3
MGMxNTIyYjE4MjQ1ZGU1NzU1Li5iZWRmMmI1NzI4MDY3NzQ2NDdkZTIxYjdjMzE4ZmZhMzhlZTM3
NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApAQCAtOTgsNyArOTgs
NyBAQCBjbGFzcyBKU0xvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SlNMb2NrPiB7
CiAgICAgICAgICAgICByZXR1cm4gbV9vd25lclRocmVhZDsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9Ci0gICAgYm9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpIHsg
cmV0dXJuIG1faGFzT3duZXJUaHJlYWQgJiYgbV9vd25lclRocmVhZC0+aWQoKSA9PSBjdXJyZW50
VGhyZWFkKCk7IH0KKyAgICBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkgeyByZXR1
cm4gbV9oYXNPd25lclRocmVhZCAmJiBtX293bmVyVGhyZWFkLmdldCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKTsgfQogCiAgICAgdm9pZCB3aWxsRGVzdHJveVZNKFZNKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1YWJkZmJiZDg4YmEyODVmMWEzNThkODcxM2I2NWEy
MmU2NTQ5MWUwLi42OGZiY2U3YmVmYTNiYjI4YjgyNWYyM2NiNTczYWNjNWE1YTg2Yjg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBW
TTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikK
IAogI2lmIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgIG1fbmF0aXZl
U3RhY2tUcmFjZU9mTGFzdFRocm93ID0gU3RhY2tUcmFjZTo6Y2FwdHVyZVN0YWNrVHJhY2UoT3B0
aW9uczo6dW5leHBlY3RlZEV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdCgpKTsKLSAgICBtX3Rocm93
aW5nVGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgIG1fdGhyb3dpbmdUaHJlYWQgPSAmVGhy
ZWFkOjpjdXJyZW50KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
aW5kZXggMzY2ODczYjJiNzlkOWQ1M2ZjZjliYWYzNmY2YzVlMjU5ZDNmOWIwMC4uYTZjMmQ1M2Zj
ODAxZDFjZGFkZGZmMWExZmFjYzU0NTQ5Y2FiYWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCkBAIC03MTEsNyArNzExLDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKIAogI2lmIEVO
QUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQogICAgIFN0YWNrVHJhY2UqIG5hdGl2
ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlU3RhY2tUcmFj
ZU9mTGFzdFRocm93LmdldCgpOyB9Ci0gICAgVGhyZWFkSWRlbnRpZmllciB0aHJvd2luZ1RocmVh
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3dpbmdUaHJlYWQ7IH0KKyAgICBUaHJlYWQqIHRocm93
aW5nVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJvd2luZ1RocmVhZC5nZXQoKTsgfQogI2Vu
ZGlmCiAKICNpZiBVU0UoQ0YpCkBAIC03NTQsNyArNzU0LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+
IHsKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKICAgICAgICAgbV9u
ZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKICAgICAgICAgbV9uYXRpdmVTdGFja1RyYWNlT2ZM
YXN0VGhyb3cgPSBudWxscHRyOwotICAgICAgICBtX3Rocm93aW5nVGhyZWFkID0gMDsKKyAgICAg
ICAgbV90aHJvd2luZ1RocmVhZCA9IG51bGxwdHI7CiAjZW5kaWYKICAgICAgICAgbV9leGNlcHRp
b24gPSBudWxscHRyOwogICAgIH0KQEAgLTgwNiw3ICs4MDYsNyBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogICAgIG11dGFibGUgYm9vbCBtX25lZWRFeGNlcHRpb25DaGVjayB7IGZhbHNlIH07CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrVHJhY2U+IG1fbmF0aXZlU3RhY2tUcmFjZU9mTGFzdFRo
cm93OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFja1RyYWNlPiBtX25hdGl2ZVN0YWNrVHJhY2VP
Zkxhc3RTaW11bGF0ZWRUaHJvdzsKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyb3dpbmdUaHJl
YWQ7CisgICAgUmVmUHRyPFRocmVhZD4gbV90aHJvd2luZ1RocmVhZDsKICNlbmRpZgogCiAgICAg
Ym9vbCBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5kZXggOWEyZDJhY2JhM2Y0NzAxMmEwMjEz
YTVkYjA2ZjljNjhiNmQxYTk2MC4uY2Q5MWVlMWE0ZTAzMGU4ZThjYWExNWNhN2Y5ZWFhYWE0MTAy
Y2VjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmll
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAK
QEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEhlYXBWZXJpZmllcjo6cHJpbnRWZXJpZmljYXRpb25I
ZWFkZXIoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkpOwog
ICAgIENvbGxlY3Rpb25TY29wZSBzY29wZSA9IGN1cnJlbnRDeWNsZSgpLnNjb3BlOwogICAgIE1v
bm90b25pY1RpbWUgZ2NDeWNsZVRpbWVzdGFtcCA9IGN1cnJlbnRDeWNsZSgpLnRpbWVzdGFtcDsK
LSAgICBkYXRhTG9nKCJWZXJpZnlpbmcgaGVhcCBpbiBbcCIsIGdldEN1cnJlbnRQcm9jZXNzSUQo
KSwgIiwgdCIsIGN1cnJlbnRUaHJlYWQoKSwgIl0gdm0gIiwKKyAgICBkYXRhTG9nKCJWZXJpZnlp
bmcgaGVhcCBpbiBbcCIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIiwgIiwgVGhyZWFkOjpjdXJy
ZW50KCksICJdIHZtICIsCiAgICAgICAgIFJhd1BvaW50ZXIobV9oZWFwLT52bSgpKSwgIiBvbiAi
LCBzY29wZSwgIiBHQyBAICIsIGdjQ3ljbGVUaW1lc3RhbXAsICJcbiIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01haW5U
aHJlYWQuY3BwCmluZGV4IDJjNDE2MjdkNmU3OTQwZDQ4Yzk1ZGM3M2FjZTNmYmIyNjEzODZiZDMu
LmQ4NTkyYjc1NGI5ZjYwNTAwMjVkYzZkN2U0NWI4OGMwMzU1ZTc1YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiBzdGF0aWMgYm9vbCBj
YWxsYmFja3NQYXVzZWQ7IC8vIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIG9ubHkgYWNjZXNzZWQg
ZnJvbSBtYWluIHRocmVhZC4KICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgVGhyZWFkSWRl
bnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIG1haW5UaHJlYWQg
eyBudWxscHRyIH07CiAjZW5kaWYKIAogc3RhdGljIFN0YXRpY0xvY2sgbWFpblRocmVhZEZ1bmN0
aW9uUXVldWVNdXRleDsKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZCgpCiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUtleSwgW10gewogICAgICAgICBpbml0
aWFsaXplVGhyZWFkaW5nKCk7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQotICAgICAgICBtYWluVGhy
ZWFkSWRlbnRpZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKKyAgICAgICAgbWFpblRocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRpZgogICAgICAgICBpbml0aWFsaXplTWFpblRocmVhZFBs
YXRmb3JtKCk7CiAgICAgICAgIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogYm9v
bCBpc01haW5UaHJlYWQoKQogewotICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gbWFpblRo
cmVhZElkZW50aWZpZXI7CisgICAgcmV0dXJuIG1haW5UaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVu
dCgpOwogfQogI2VuZGlmCiAKQEAgLTk4LDkgKzk4LDkgQEAgdm9pZCBpbml0aWFsaXplV2ViVGhy
ZWFkKCkKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmICFVU0UoV0VCX1RIUkVBRCkK
LWJvb2wgY2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKFRocmVhZElkZW50aWZpZXIg
dGhyZWFkSWQpCitib29sIGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChUaHJlYWQm
IHRocmVhZCkKIHsKLSAgICByZXR1cm4gdGhyZWFkSWQgPT0gY3VycmVudFRocmVhZCgpOworICAg
IHJldHVybiAmdGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWlu
VGhyZWFkLmgKaW5kZXggYzk1ZjkyZmJkZjNhNGJkMzU4NzlkYmRlZWEwZDE1MWE0YzAyOTAyYi4u
ZWQxZDQ5NWZlYmQ3MmY1ZTgwM2FjNWRiNDY0MTFkNzc4ZTI0MmVjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQu
aApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFByaW50U3RyZWFt
OworY2xhc3MgVGhyZWFkOwogCiAvLyBNdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVh
ZC4KIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CkBAIC01
NCwxNCArNTUsMTMgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TWFpblRocmVhZENhbGxi
YWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFp
blRocmVhZCgpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2Nh
bERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkJik7CiAKICNpZiBVU0Uo
V0VCX1RIUkVBRCkKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV2ViVGhyZWFkKCk7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc1VJVGhyZWFkKCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBpbml0aWFsaXplV2ViVGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFs
aXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGluaXRpYWxpemVXZWJUaHJlYWRJZGVudGlmaWVyKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogdm9pZCBpbml0aWFsaXplV2Vi
VGhyZWFkUGxhdGZvcm0oKTsKICNlbHNlCiBpbmxpbmUgYm9vbCBpc1dlYlRocmVhZCgpIHsgcmV0
dXJuIGlzTWFpblRocmVhZCgpOyB9CkBAIC0xMTMsOCArMTEzLDcgQEAgdXNpbmcgV1RGOjpjYWxs
T25XZWJUaHJlYWRPckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQ7CiAjZW5kaWYKICNpZiBVU0Uo
V0VCX1RIUkVBRCkKIHVzaW5nIFdURjo6aW5pdGlhbGl6ZVdlYlRocmVhZDsKLXVzaW5nIFdURjo6
aW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyOwotdXNpbmcgV1RGOjppbml0
aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcjsKK3VzaW5nIFdURjo6aW5pdGlhbGl6ZUFwcGxpY2F0
aW9uVUlUaHJlYWQ7CiAjZW5kaWYKIAogI2VuZGlmIC8vIE1haW5UaHJlYWRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGFya2luZ0xvdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5n
TG90LmNwcAppbmRleCBmOGZlZDg4YjFmN2M5OTIwOTg2YTk0ZTdhYjZjNTU3MWI5MjNjZTFjLi5i
MTRkN2EyY2RlZDhmNWVkM2QzNDAyZjc4ODBkMzcxNjI2ODllOGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90
LmNwcApAQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICB2b2lkIGVucXVldWUo
VGhyZWFkRGF0YSogZGF0YSkKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAg
ICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVucXVldWVpbmcgIiwgUmF3
UG9pbnRlcihkYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2ludGVyKGRhdGEtPmFkZHJl
c3MpLCAiIG9udG8gIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAgICAgICAgICAgZGF0
YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyAiLCBSYXdQb2lu
dGVyKGRhdGEpLCAiIHdpdGggYWRkcmVzcyA9ICIsIFJhd1BvaW50ZXIoZGF0YS0+YWRkcmVzcyks
ICIgb250byAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIEFTU0VSVChkYXRh
LT5hZGRyZXNzKTsKICAgICAgICAgQVNTRVJUKCFkYXRhLT5uZXh0SW5RdWV1ZSk7CiAgICAgICAg
IApAQCAtOTksMTEgKzk5LDExIEBAIHN0cnVjdCBCdWNrZXQgewogICAgIHZvaWQgZ2VuZXJpY0Rl
cXVldWUoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIGlmICh2ZXJib3Nl
KQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRlcXVl
dWVpbmcgZnJvbSBidWNrZXQgYXQgIiwgUmF3UG9pbnRlcih0aGlzKSwgIlxuIikpOworICAgICAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogZGVxdWV1ZWluZyBm
cm9tIGJ1Y2tldCBhdCAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7CiAgICAgICAgIAogICAg
ICAgICBpZiAoIXF1ZXVlSGVhZCkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAg
ICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGVtcHR5LlxuIikp
OworICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6
IGVtcHR5LlxuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0Mywx
NCArMTQzLDE0IEBAIHN0cnVjdCBCdWNrZXQgewogICAgICAgICB3aGlsZSAoc2hvdWxkQ29udGlu
dWUpIHsKICAgICAgICAgICAgIFRocmVhZERhdGEqIGN1cnJlbnQgPSAqY3VycmVudFB0cjsKICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmco
Y3VycmVudFRocmVhZCgpLCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJc
biIpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgp
LCAiOiBnb3QgdGhyZWFkICIsIFJhd1BvaW50ZXIoY3VycmVudCksICJcbiIpKTsKICAgICAgICAg
ICAgIGlmICghY3VycmVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIERl
cXVldWVSZXN1bHQgcmVzdWx0ID0gZnVuY3RvcihjdXJyZW50LCB0aW1lVG9CZUZhaXIpOwogICAg
ICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJlc3Vs
dDo6SWdub3JlOgogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3VycmVudFB0ciA9ICIs
IFJhd1BvaW50ZXIoY3VycmVudFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigq
Y3VycmVudFB0ciksICJcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmlu
ZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3VycmVudFB0ciA9ICIsIFJhd1BvaW50ZXIoY3VycmVu
dFB0ciksICIsICpjdXJyZW50UHRyID0gIiwgUmF3UG9pbnRlcigqY3VycmVudFB0ciksICJcbiIp
KTsKICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICAg
Y3VycmVudFB0ciA9ICYoKmN1cnJlbnRQdHIpLT5uZXh0SW5RdWV1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdHJ1Y3QgQnVja2V0IHsKICAgICAgICAgICAg
ICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgICAgIGNhc2UgRGVxdWV1ZVJlc3VsdDo6UmVtb3Zl
QW5kQ29udGludWU6CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBkZXF1ZXVlaW5nICIs
IFJhd1BvaW50ZXIoY3VycmVudCksICIgZnJvbSAiLCBSYXdQb2ludGVyKHRoaXMpLCAiXG4iKSk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCks
ICI6IGRlcXVldWVpbmcgIiwgUmF3UG9pbnRlcihjdXJyZW50KSwgIiBmcm9tICIsIFJhd1BvaW50
ZXIodGhpcyksICJcbiIpKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBxdWV1ZVRh
aWwpCiAgICAgICAgICAgICAgICAgICAgIHF1ZXVlVGFpbCA9IHByZXZpb3VzOwogICAgICAgICAg
ICAgICAgIGRpZERlcXVldWUgPSB0cnVlOwpAQCAtMjcxLDcgKzI3MSw3IEBAIEhhc2h0YWJsZSog
ZW5zdXJlSGFzaHRhYmxlKCkKICAgICAgICAgICAgIGN1cnJlbnRIYXNodGFibGUgPSBIYXNodGFi
bGU6OmNyZWF0ZShtYXhMb2FkRmFjdG9yKTsKICAgICAgICAgICAgIGlmIChoYXNodGFibGUuY29t
cGFyZUV4Y2hhbmdlV2VhayhudWxscHRyLCBjdXJyZW50SGFzaHRhYmxlKSkgewogICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5n
KGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBpbml0aWFsIGhhc2h0YWJsZSAiLCBSYXdQb2lu
dGVyKGN1cnJlbnRIYXNodGFibGUpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50KCksICI6IGNyZWF0ZWQgaW5pdGlhbCBoYXNodGFi
bGUgIiwgUmF3UG9pbnRlcihjdXJyZW50SGFzaHRhYmxlKSwgIlxuIikpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50SGFzaHRhYmxlOwogICAgICAgICAgICAgfQogCkBAIC0zNDYsNyAr
MzQ2LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51bVRocmVhZHMpCiAg
ICAgSGFzaHRhYmxlKiBvbGRIYXNodGFibGUgPSBoYXNodGFibGUubG9hZCgpOwogICAgIGlmIChv
bGRIYXNodGFibGUgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihvbGRIYXNodGFibGUtPnNpemUpIC8g
c3RhdGljX2Nhc3Q8ZG91YmxlPihudW1UaHJlYWRzKSA+PSBtYXhMb2FkRmFjdG9yKSB7CiAgICAg
ICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhy
ZWFkKCksICI6IG5vIG5lZWQgdG8gcmVoYXNoIGJlY2F1c2UgIiwgb2xkSGFzaHRhYmxlLT5zaXpl
LCAiIC8gIiwgbnVtVGhyZWFkcywgIiA+PSAiLCBtYXhMb2FkRmFjdG9yLCAiXG4iKSk7CisgICAg
ICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBubyBuZWVkIHRv
IHJlaGFzaCBiZWNhdXNlICIsIG9sZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMs
ICIgPj0gIiwgbWF4TG9hZEZhY3RvciwgIlxuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBlbnN1cmVIYXNodGFibGVTaXplKHVuc2lnbmVkIG51
bVRocmVhZHMpCiAgICAgb2xkSGFzaHRhYmxlID0gaGFzaHRhYmxlLmxvYWQoKTsKICAgICBpZiAo
b2xkSGFzaHRhYmxlICYmIHN0YXRpY19jYXN0PGRvdWJsZT4ob2xkSGFzaHRhYmxlLT5zaXplKSAv
IHN0YXRpY19jYXN0PGRvdWJsZT4obnVtVGhyZWFkcykgPj0gbWF4TG9hZEZhY3RvcikgewogICAg
ICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRo
cmVhZCgpLCAiOiBhZnRlciBsb2NraW5nLCBubyBuZWVkIHRvIHJlaGFzaCBiZWNhdXNlICIsIG9s
ZEhhc2h0YWJsZS0+c2l6ZSwgIiAvICIsIG51bVRocmVhZHMsICIgPj0gIiwgbWF4TG9hZEZhY3Rv
ciwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQo
KSwgIjogYWZ0ZXIgbG9ja2luZywgbm8gbmVlZCB0byByZWhhc2ggYmVjYXVzZSAiLCBvbGRIYXNo
dGFibGUtPnNpemUsICIgLyAiLCBudW1UaHJlYWRzLCAiID49ICIsIG1heExvYWRGYWN0b3IsICJc
biIpKTsKICAgICAgICAgdW5sb2NrSGFzaHRhYmxlKGJ1Y2tldHNUb1VubG9jayk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIGVuc3VyZUhhc2h0YWJs
ZVNpemUodW5zaWduZWQgbnVtVGhyZWFkcykKICAgICAKICAgICBIYXNodGFibGUqIG5ld0hhc2h0
YWJsZSA9IEhhc2h0YWJsZTo6Y3JlYXRlKG5ld1NpemUpOwogICAgIGlmICh2ZXJib3NlKQotICAg
ICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogY3JlYXRlZCBuZXcgaGFz
aHRhYmxlOiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKKyAgICAgICAgZGF0
YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogY3JlYXRlZCBuZXcgaGFzaHRhYmxl
OiAiLCBSYXdQb2ludGVyKG5ld0hhc2h0YWJsZSksICJcbiIpKTsKICAgICBmb3IgKFRocmVhZERh
dGEqIHRocmVhZERhdGEgOiB0aHJlYWREYXRhcykgewogICAgICAgICBpZiAodmVyYm9zZSkKLSAg
ICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiByZWhhc2hpbmcg
dGhyZWFkIGRhdGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAi
LCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICBk
YXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiByZWhhc2hpbmcgdGhyZWFkIGRh
dGEgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhKSwgIiB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQb2lu
dGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAiXG4iKSk7CiAgICAgICAgIHVuc2lnbmVkIGhhc2gg
PSBoYXNoQWRkcmVzcyh0aHJlYWREYXRhLT5hZGRyZXNzKTsKICAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSBoYXNoICUgbmV3SGFzaHRhYmxlLT5zaXplOwogICAgICAgICBpZiAodmVyYm9zZSkKLSAg
ICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBpbmRleCA9ICIs
IGluZGV4LCAiXG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3Vy
cmVudCgpLCAiOiBpbmRleCA9ICIsIGluZGV4LCAiXG4iKSk7CiAgICAgICAgIEJ1Y2tldCogYnVj
a2V0ID0gbmV3SGFzaHRhYmxlLT5kYXRhW2luZGV4XS5sb2FkKCk7CiAgICAgICAgIGlmICghYnVj
a2V0KSB7CiAgICAgICAgICAgICBpZiAocmV1c2FibGVCdWNrZXRzLmlzRW1wdHkoKSkKQEAgLTQ4
NSw3ICs0ODUsNyBAQCBib29sIGVucXVldWUoY29uc3Qgdm9pZCogYWRkcmVzcywgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCks
ICI6IGVucXVldWVpbmcgb250byBidWNrZXQgIiwgUmF3UG9pbnRlcihidWNrZXQpLCAiIHdpdGgg
aW5kZXggIiwgaW5kZXgsICIgZm9yIGFkZHJlc3MgIiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIiB3
aXRoIGhhc2ggIiwgaGFzaCwgIlxuIikpOworICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhU
aHJlYWQ6OmN1cnJlbnQoKSwgIjogZW5xdWV1ZWluZyBvbnRvIGJ1Y2tldCAiLCBSYXdQb2ludGVy
KGJ1Y2tldCksICIgd2l0aCBpbmRleCAiLCBpbmRleCwgIiBmb3IgYWRkcmVzcyAiLCBSYXdQb2lu
dGVyKGFkZHJlc3MpLCAiIHdpdGggaGFzaCAiLCBoYXNoLCAiXG4iKSk7CiAgICAgICAgIGJ1Y2tl
dC0+bG9jay5sb2NrKCk7CiAKICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaGFzaHRhYmxl
IGNvdWxkIGhhdmUgcmVoYXNoZWQgdW5kZXIgdXMuCkBAIC00OTgsNyArNDk4LDcgQEAgYm9vbCBl
bnF1ZXVlKGNvbnN0IHZvaWQqIGFkZHJlc3MsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAg
ICAgIGJvb2wgcmVzdWx0OwogICAgICAgICBpZiAodGhyZWFkRGF0YSkgewogICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhy
ZWFkKCksICI6IHByb2NlZWRpbmcgdG8gZW5xdWV1ZSAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEp
LCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJl
bnQoKSwgIjogcHJvY2VlZGluZyB0byBlbnF1ZXVlICIsIFJhd1BvaW50ZXIodGhyZWFkRGF0YSks
ICJcbiIpKTsKICAgICAgICAgICAgIGJ1Y2tldC0+ZW5xdWV1ZSh0aHJlYWREYXRhKTsKICAgICAg
ICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpAQCAtNTY3LDcgKzU2Nyw3IEBA
IE5FVkVSX0lOTElORSBQYXJraW5nTG90OjpQYXJrUmVzdWx0IFBhcmtpbmdMb3Q6OnBhcmtDb25k
aXRpb25hbGx5SW1wbCgKICAgICBjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIHRpbWVv
dXQpCiB7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVu
dFRocmVhZCgpLCAiOiBwYXJraW5nLlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRo
cmVhZDo6Y3VycmVudCgpLCAiOiBwYXJraW5nLlxuIikpOwogICAgIAogICAgIFRocmVhZERhdGEq
IG1lID0gbXlUaHJlYWREYXRhKCk7CiAgICAgbWUtPnRva2VuID0gMDsKQEAgLTY2MSw3ICs2NjEs
NyBAQCBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6UGFya1Jlc3VsdCBQYXJraW5nTG90OjpwYXJr
Q29uZGl0aW9uYWxseUltcGwoCiBORVZFUl9JTkxJTkUgUGFya2luZ0xvdDo6VW5wYXJrUmVzdWx0
IFBhcmtpbmdMb3Q6OnVucGFya09uZShjb25zdCB2b2lkKiBhZGRyZXNzKQogewogICAgIGlmICh2
ZXJib3NlKQotICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5w
YXJraW5nIG9uZS5cbiIpKTsKKyAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJl
bnQoKSwgIjogdW5wYXJraW5nIG9uZS5cbiIpKTsKICAgICAKICAgICBVbnBhcmtSZXN1bHQgcmVz
dWx0OwogCkBAIC03MDYsNyArNzA2LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgUGFya2luZ0xvdDo6
dW5wYXJrT25lSW1wbCgKICAgICBjb25zdCBTY29wZWRMYW1iZGE8aW50cHRyX3QoUGFya2luZ0xv
dDo6VW5wYXJrUmVzdWx0KT4mIGNhbGxiYWNrKQogewogICAgIGlmICh2ZXJib3NlKQotICAgICAg
ICBkYXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogdW5wYXJraW5nIG9uZSB0aGUg
aGFyZCB3YXkuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmcoVGhyZWFkOjpjdXJyZW50
KCksICI6IHVucGFya2luZyBvbmUgdGhlIGhhcmQgd2F5LlxuIikpOwogICAgIAogICAgIFJlZlB0
cjxUaHJlYWREYXRhPiB0aHJlYWREYXRhOwogICAgIGJvb2wgdGltZVRvQmVGYWlyID0gZmFsc2U7
CkBAIC03NTEsNyArNzUxLDcgQEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVu
cGFya0NvdW50KGNvbnN0IHZvaWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICAgICAgcmV0
dXJuIDA7CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmco
Y3VycmVudFRocmVhZCgpLCAiOiB1bnBhcmtpbmcgY291bnQgPSAiLCBjb3VudCwgIiBmcm9tICIs
IFJhd1BvaW50ZXIoYWRkcmVzcyksICIuXG4iKSk7CisgICAgICAgIGRhdGFMb2codG9TdHJpbmco
VGhyZWFkOjpjdXJyZW50KCksICI6IHVucGFya2luZyBjb3VudCA9ICIsIGNvdW50LCAiIGZyb20g
IiwgUmF3UG9pbnRlcihhZGRyZXNzKSwgIi5cbiIpKTsKICAgICAKICAgICBWZWN0b3I8UmVmUHRy
PFRocmVhZERhdGE+LCA4PiB0aHJlYWREYXRhczsKICAgICBkZXF1ZXVlKApAQCAtNzYxLDcgKzc2
MSw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQYXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25z
dCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3VuCiAgICAgICAgIEJ1Y2tldE1vZGU6Oklnbm9y
ZUVtcHR5LAogICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQsIGJvb2wpIHsKICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3Vy
cmVudFRocmVhZCgpLCAiOiBPYnNlcnZpbmcgZWxlbWVudCB3aXRoIGFkZHJlc3MgPSAiLCBSYXdQ
b2ludGVyKGVsZW1lbnQtPmFkZHJlc3MpLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgZGF0YUxv
Zyh0b1N0cmluZyhUaHJlYWQ6OmN1cnJlbnQoKSwgIjogT2JzZXJ2aW5nIGVsZW1lbnQgd2l0aCBh
ZGRyZXNzID0gIiwgUmF3UG9pbnRlcihlbGVtZW50LT5hZGRyZXNzKSwgIlxuIikpOwogICAgICAg
ICAgICAgaWYgKGVsZW1lbnQtPmFkZHJlc3MgIT0gYWRkcmVzcykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOwogICAgICAgICAgICAgdGhyZWFkRGF0YXMuYXBw
ZW5kKGVsZW1lbnQpOwpAQCAtNzczLDcgKzc3Myw3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBQ
YXJraW5nTG90Ojp1bnBhcmtDb3VudChjb25zdCB2b2lkKiBhZGRyZXNzLCB1bnNpZ25lZCBjb3Vu
CiAKICAgICBmb3IgKFJlZlB0cjxUaHJlYWREYXRhPiYgdGhyZWFkRGF0YSA6IHRocmVhZERhdGFz
KSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhj
dXJyZW50VGhyZWFkKCksICI6IHVucGFya2luZyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEuZ2V0
KCkpLCAiIHdpdGggYWRkcmVzcyAiLCBSYXdQb2ludGVyKHRocmVhZERhdGEtPmFkZHJlc3MpLCAi
XG4iKSk7CisgICAgICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAi
OiB1bnBhcmtpbmcgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLmdldCgpKSwgIiB3aXRoIGFkZHJl
c3MgIiwgUmF3UG9pbnRlcih0aHJlYWREYXRhLT5hZGRyZXNzKSwgIlxuIikpOwogICAgICAgICBB
U1NFUlQodGhyZWFkRGF0YS0+YWRkcmVzcyk7CiAgICAgICAgIHsKICAgICAgICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcih0aHJlYWREYXRhLT5wYXJraW5nTG9jayk7CkBAIC03ODMsNyArNzgzLDcg
QEAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIFBhcmtpbmdMb3Q6OnVucGFya0NvdW50KGNvbnN0IHZv
aWQqIGFkZHJlc3MsIHVuc2lnbmVkIGNvdW4KICAgICB9CiAKICAgICBpZiAodmVyYm9zZSkKLSAg
ICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IGRvbmUgdW5wYXJraW5n
LlxuIikpOworICAgICAgICBkYXRhTG9nKHRvU3RyaW5nKFRocmVhZDo6Y3VycmVudCgpLCAiOiBk
b25lIHVucGFya2luZy5cbiIpKTsKICAgICAKICAgICByZXR1cm4gdGhyZWFkRGF0YXMuc2l6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmgKaW5kZXggOTdhMjQzYjkwYmNh
YzAwYjJkN2VlY2RmMjdlMDQyNWZjNTJkNjdhNy4uZDRmZWIzNzEwYTg0NjdlMzdmNTA0ODY1OTlj
ZmVjZDIwZjE0YzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVjdXJzaXZlTG9ja0Fk
YXB0ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oCkBAIC0z
OCw4ICszOCw4IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAKICAgICB2b2lk
IGxvY2soKQogICAgIHsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJl
YWQoKTsKLSAgICAgICAgaWYgKG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9
IFRocmVhZDo6Y3VycmVudCgpOworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAg
ICAgICAgIG1fcmVjdXJzaW9uQ291bnQrKzsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZWN1cnNpdmVMb2NrQWRhcHRlciB7CiAgICAgICAg
IG1fbG9jay5sb2NrKCk7CiAgICAgICAgIEFTU0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VS
VCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAgICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9v
d25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1cnNpb25Db3VudCA9IDE7CiAgICAgfQogICAgIApA
QCAtNTUsMTQgKzU1LDE0IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICB7CiAg
ICAgICAgIGlmICgtLW1fcmVjdXJzaW9uQ291bnQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1fb3duZXIgPSAwOworICAgICAgICBtX293bmVyID0gbnVsbHB0cjsKICAgICAgICAgbV9s
b2NrLnVubG9jaygpOwogICAgIH0KICAgICAKICAgICBib29sIHRyeUxvY2soKQogICAgIHsKLSAg
ICAgICAgVGhyZWFkSWRlbnRpZmllciBtZSA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAgaWYg
KG1lID09IG1fb3duZXIpIHsKKyAgICAgICAgVGhyZWFkJiBtZSA9IFRocmVhZDo6Y3VycmVudCgp
OworICAgICAgICBpZiAoJm1lID09IG1fb3duZXIpIHsKICAgICAgICAgICAgIG1fcmVjdXJzaW9u
Q291bnQrKzsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC03Miw3ICs3
Miw3IEBAIGNsYXNzIFJlY3Vyc2l2ZUxvY2tBZGFwdGVyIHsKICAgICAgICAgCiAgICAgICAgIEFT
U0VSVCghbV9vd25lcik7CiAgICAgICAgIEFTU0VSVCghbV9yZWN1cnNpb25Db3VudCk7Ci0gICAg
ICAgIG1fb3duZXIgPSBtZTsKKyAgICAgICAgbV9vd25lciA9ICZtZTsKICAgICAgICAgbV9yZWN1
cnNpb25Db3VudCA9IDE7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTgzLDcgKzgz
LDcgQEAgY2xhc3MgUmVjdXJzaXZlTG9ja0FkYXB0ZXIgewogICAgIH0KICAgICAKIHByaXZhdGU6
Ci0gICAgVGhyZWFkSWRlbnRpZmllciBtX293bmVyIHsgMCB9OworICAgIFRocmVhZCogbV9vd25l
ciB7IG51bGxwdHIgfTsgLy8gVXNlIFRocmVhZCogaW5zdGVhZCBvZiBSZWZQdHI8VGhyZWFkPiBz
aW5jZSBtX293bmVyIHRocmVhZCBpcyBhbHdheXMgYWxpdmUgd2hpbGUgbV9vbndlciBpcyBzZXQu
CiAgICAgdW5zaWduZWQgbV9yZWN1cnNpb25Db3VudCB7IDAgfTsKICAgICBMb2NrVHlwZSBtX2xv
Y2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMGJlNWExMGVkMGY3MjVmOGQzZTE3ZTFjZjE5
YWIyMDlhOTAwYTgyOS4uYzU2ZjE1NmRkOWNiZWM0OTk5Njk3YzZkNTQ5ZTg3NTZmNzNiMjlmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgcW9zX2NsYXNzX3QgVGhyZWFk
OjphZGp1c3RlZFFPU0NsYXNzKHFvc19jbGFzc190IG9yaWdpbmFsQ2xhc3MpCiAKIHZvaWQgVGhy
ZWFkOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1faWQp
OworICAgIG91dC5wcmludCgiVGhyZWFkOiIsIFJhd1BvaW50ZXIodGhpcykpOwogfQogCiAjaWYg
IUhBVkUoRkFTVF9UTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IGVlMTMwM2ExOTFiMDlkNGVjOWRkYzg3
Y2NjODgxNTQyOTdmYTIzMDYuLmM3NDM5NGI1MjAyMGE3ZjA1ZjZkNzE2MTA4MThjMjBhMTllMmZl
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCkBAIC04MCw3ICs4MCw5IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFk
R3JvdXA7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ1RhYmxlOwogICAgIGZyaWVuZCBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisjaWYgT1MoV0lO
RE9XUykKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbihUaHJlYWRJZGVudGlmaWVyKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5UaHJlYWQoKTsKIApAQCAtOTEsMTIgKzkzLDE2IEBAIGNsYXNzIFRocmVhZCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICAvLyBSZXR1cm5zIFRocmVhZCBv
YmplY3QuCiAgICAgc3RhdGljIFRocmVhZCYgY3VycmVudCgpOwogCisjaWYgT1MoV0lORE9XUykK
ICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBp
ZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4g
QXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJ
ZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQogICAgIC8vIHRoYXQgdGhlIHRocmVhZCBpbmZvcm1h
dGlvbiBpcyBhbGl2ZS4gV2hpbGUgVGhyZWFkOjpjdXJyZW50KCkgaXMgbm90IHNhZmUgaWYgaXQg
aXMgY2FsbGVkCiAgICAgLy8gZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3RoZXIgVExTIGRh
dGEsIGN1cnJlbnRJRCgpIGFsd2F5cyByZXR1cm5zIG1lYW5pbmdmdWwgdGhyZWFkIElELgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsK
IAorICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisjZW5k
aWYKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNoYW5nZVByaW9yaXR5KGludCk7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0Rm9yQ29tcGxldGlvbigpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaCgpOwpAQCAtMTM3LDE4ICsxNDMsNiBAQCBjbGFzcyBU
aHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogCi0gICAg
VGhyZWFkSWRlbnRpZmllciBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLQotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUaHJlYWQmIHRocmVhZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBp
ZCgpID09IHRocmVhZC5pZCgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBU
aHJlYWQmIHRocmVhZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpZCgpICE9IHRocmVhZC5pZCgp
OwotICAgIH0KLQogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybVRocmVhZGluZygp
OwogCiAgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrKCkgY29uc3QKQEAgLTI4MCw3ICsyNzQs
NiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7
CiAKICAgICAvLyBXb3JkTG9jayAmIExvY2sgcmVseSBvbiBUaHJlYWRTcGVjaWZpYy4gQnV0IFRo
cmVhZCBvYmplY3QgY2FuIGJlIGRlc3Ryb3llZCBldmVuIGFmdGVyIFRocmVhZFNwZWNpZmljIHRo
aW5ncyBhcmUgZGVzdHJveWVkLgogICAgIHN0ZDo6bXV0ZXggbV9tdXRleDsKLSAgICBUaHJlYWRJ
ZGVudGlmaWVyIG1faWQgeyAwIH07CiAgICAgSm9pbmFibGVTdGF0ZSBtX2pvaW5hYmxlU3RhdGUg
eyBKb2luYWJsZSB9OwogICAgIGJvb2wgbV9pc1NodXR0aW5nRG93biB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2RpZEV4aXQgeyBmYWxzZSB9OwpAQCAtMjg4LDcgKzI4MSw5IEBAIGNsYXNzIFRocmVh
ZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWQ+IHsKICAgICBTdGFja0JvdW5k
cyBtX3N0YWNrIHsgU3RhY2tCb3VuZHM6OmVtcHR5Qm91bmRzKCkgfTsKICAgICBWZWN0b3I8c3Rk
Ojp3ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhyZWFkR3JvdXBzOwogICAgIFBsYXRmb3JtVGhy
ZWFkSGFuZGxlIG1faGFuZGxlOwotI2lmIE9TKERBUldJTikKKyNpZiBPUyhXSU5ET1dTKQorICAg
IFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsKKyNlbGlmIE9TKERBUldJTikKICAgICBtYWNo
X3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkOwogI2VsaWYgVVNFKFBUSFJFQURTKQogICAgIFBsYXRm
b3JtUmVnaXN0ZXJzKiBtX3BsYXRmb3JtUmVnaXN0ZXJzIHsgbnVsbHB0ciB9OwpAQCAtMzA3LDEx
ICszMDIsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhy
ZWFkPiB7CiAgICAgdm9pZCogbV9zYXZlZExhc3RTdGFja1RvcDsKIH07CiAKLWlubGluZSBUaHJl
YWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQotewotICAgIHJldHVybiBUaHJlYWQ6OmN1cnJl
bnRJRCgpOwotfQotCiBpbmxpbmUgVGhyZWFkKiBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKQog
ewogI2lmICFIQVZFKEZBU1RfVExTKQpAQCAtMzQ1LDExICszMzUsMTAgQEAgaW5saW5lIFRocmVh
ZCYgVGhyZWFkOjpjdXJyZW50KCkKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6
VGhyZWFkSWRlbnRpZmllcjsKIHVzaW5nIFdURjo6VGhyZWFkOwotdXNpbmcgV1RGOjpjdXJyZW50
VGhyZWFkOwogCiAjaWYgT1MoV0lORE9XUykKK3VzaW5nIFdURjo6VGhyZWFkSWRlbnRpZmllcjsK
IHVzaW5nIFdURjo6Y3JlYXRlVGhyZWFkOwogdXNpbmcgV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IDZlODhh
YTZhOGEwOTBkOTdlNzc3YzMxYTNiZDJhNjZhZGMzMGM2ZDIuLjRhY2UyOGYxZjU5Zjg4Njk3MDkx
MDA4YTBhMGIxMjAxMGM5NzYyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgK
QEAgLTQ1LDcgKzQ1LDYgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIFRocmVhZElkZW50
aWZpZXIgPSB1aW50MzJfdDsKIHVzaW5nIFRocmVhZEZ1bmN0aW9uID0gdm9pZCAoKikodm9pZCog
YXJndW1lbnQpOwogCiAjaWYgVVNFKFBUSFJFQURTKQpAQCAtNTMsNiArNTIsNyBAQCB1c2luZyBQ
bGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRfdDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBw
dGhyZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0Zm9ybUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90
OwogI2VsaWYgT1MoV0lORE9XUykKK3VzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50MzJfdDsK
IHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0gSEFORExFOwogc3RydWN0IFBsYXRmb3JtTXV0
ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04gbV9pbnRlcm5hbE11dGV4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDgzYjlkNTA5OTUyNWIwNmI2MGU5MTEwM2RkZjUyNjQ5
YmE5MDgwM2MuLmNmYzYyYWEwMDE3YjAxZjhmZTcwM2E4YTNjN2E2NjJhOGQ1ZTUwNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTI4MCw5ICsyODAsOSBAQCBpbnQgVGhy
ZWFkOjp3YWl0Rm9yQ29tcGxldGlvbigpCiAgICAgaW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pv
aW4oaGFuZGxlLCAwKTsKIAogICAgIGlmIChqb2luUmVzdWx0ID09IEVERUFETEspCi0gICAgICAg
IExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tl
ZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0dfRVJST1IoIlRocmVhZCAlcCB3
YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIHRoaXMpOwogICAgIGVs
c2UgaWYgKGpvaW5SZXN1bHQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAl
dSB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIsIG1faWQpOworICAgICAgICBMT0dfRVJST1Io
IlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGpvaW5lZC5cbiIsIHRoaXMpOwogCiAgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBBU1NFUlQoam9p
bmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFRocmVh
ZDo6ZGV0YWNoKCkKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0
ZXgpOwogICAgIGludCBkZXRhY2hSZXN1bHQgPSBwdGhyZWFkX2RldGFjaChtX2hhbmRsZSk7CiAg
ICAgaWYgKGRldGFjaFJlc3VsdCkKLSAgICAgICAgTE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVy
ICV1IHdhcyB1bmFibGUgdG8gYmUgZGV0YWNoZWRcbiIsIG1faWQpOworICAgICAgICBMT0dfRVJS
T1IoIlRocmVhZCAlcCB3YXMgdW5hYmxlIHRvIGJlIGRldGFjaGVkXG4iLCB0aGlzKTsKIAogICAg
IGlmICghaGFzRXhpdGVkKCkpCiAgICAgICAgIGRpZEJlY29tZURldGFjaGVkKCk7CkBAIC0zMDgs
NyArMzA4LDcgQEAgdm9pZCBUaHJlYWQ6OmRldGFjaCgpCiAKIFRocmVhZCYgVGhyZWFkOjppbml0
aWFsaXplQ3VycmVudFRMUygpCiB7Ci0gICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQgdGhyZWFkLCBU
aHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCisgICAgLy8gTm90IGEgV1RG
LWNyZWF0ZWQgdGhyZWFkLCBUaHJlYWQgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KICAgICBSZWY8
VGhyZWFkPiB0aHJlYWQgPSBhZG9wdFJlZigqbmV3IFRocmVhZCgpKTsKICAgICB0aHJlYWQtPmVz
dGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUocHRocmVhZF9zZWxmKCkpOwogICAgIHRocmVh
ZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CkBAIC0zMTcsMTEgKzMxNyw2IEBAIFRocmVhZCYgVGhy
ZWFkOjppbml0aWFsaXplQ3VycmVudFRMUygpCiAgICAgcmV0dXJuIGluaXRpYWxpemVUTFMoV1RG
TW92ZSh0aHJlYWQpKTsKIH0KIAotVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgp
Ci17Ci0gICAgcmV0dXJuIGN1cnJlbnQoKS5pZCgpOwotfQotCiBib29sIFRocmVhZDo6c2lnbmFs
KGludCBzaWduYWxOdW1iZXIpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2tlcihtX211dGV4KTsKQEAgLTMzMyw3ICszMjgsNyBAQCBib29sIFRocmVhZDo6c2lnbmFsKGlu
dCBzaWduYWxOdW1iZXIpCiAKIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8dm9p
ZCwgUGxhdGZvcm1TdXNwZW5kRXJyb3I+CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNT
QUdFKGlkKCkgIT0gY3VycmVudFRocmVhZCgpLCAiV2UgZG8gbm90IHN1cHBvcnQgc3VzcGVuZGlu
ZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
TUVTU0FHRSh0aGlzICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSwgIldlIGRvIG5vdCBzdXBwb3J0IHN1
c3BlbmRpbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGl0c2VsZi4iKTsKICAgICAvLyBEdXJpbmcgc3Vz
cGVuZCwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9tIHRoZSBv
dGhlciB0aHJlYWRzLgogICAgIC8vIFdlIHVzZSBnbG9iYWwgbG9jayBpbnN0ZWFkIG9mIHBlciB0
aHJlYWQgbG9jay4KICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNhc2UsIHRoZXJlIGFy
ZSB0aHJlYWRzIEEgYW5kIEIuCkBAIC00NTEsMTMgKzQ0Niw5IEBAIHZvaWQgVGhyZWFkOjplc3Rh
Ymxpc2hQbGF0Zm9ybVNwZWNpZmljSGFuZGxlKHB0aHJlYWRfdCBoYW5kbGUpCiB7CiAgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICAgICBtX2hhbmRsZSA9
IGhhbmRsZTsKLSAgICBpZiAoIW1faWQpIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6YXRvbWljPFRo
cmVhZElkZW50aWZpZXI+IHByb3ZpZGVyIHsgMCB9OwotICAgICAgICBtX2lkID0gKytwcm92aWRl
cjsKICNpZiBPUyhEQVJXSU4pCi0gICAgICAgIG1fcGxhdGZvcm1UaHJlYWQgPSBwdGhyZWFkX21h
Y2hfdGhyZWFkX25wKGhhbmRsZSk7CisgICAgbV9wbGF0Zm9ybVRocmVhZCA9IHB0aHJlYWRfbWFj
aF90aHJlYWRfbnAoaGFuZGxlKTsKICNlbmRpZgotICAgIH0KIH0KIAogI2lmICFIQVZFKEZBU1Rf
VExTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggYmVjMGQzNDNkYWU1ZWVkNDFmOTUxYjNl
OTZiZGZmZjA1NjU3ZDgxNy4uYTgxNTkwNDA2OTY3ZDZlODU2NjkxNTM3ZTIwY2M1ZTgxZTFiOWMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgaW50IFRocmVh
ZDo6d2FpdEZvckNvbXBsZXRpb24oKQogCiAgICAgRFdPUkQgam9pblJlc3VsdCA9IFdhaXRGb3JT
aW5nbGVPYmplY3QoaGFuZGxlLCBJTkZJTklURSk7CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gV0FJ
VF9GQUlMRUQpCi0gICAgICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91
bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVpdCIsIG1faWQpOworICAgICAgICBMT0df
RVJST1IoIlRocmVhZCAlcCB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0cnlpbmcgdG8gcXVp
dCIsIHRoaXMpOwogCiAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211
dGV4KTsKICAgICBBU1NFUlQoam9pbmFibGVTdGF0ZSgpID09IEpvaW5hYmxlKTsKQEAgLTIxNiw3
ICsyMTYsNyBAQCB2b2lkIFRocmVhZDo6ZGV0YWNoKCkKIAogYXV0byBUaHJlYWQ6OnN1c3BlbmQo
KSAtPiBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4KIHsKLSAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoaWQoKSAhPSBjdXJyZW50VGhyZWFkKCksICJXZSBkbyBub3Qg
c3VwcG9ydCBzdXNwZW5kaW5nIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYuIik7CisgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMgIT0gJlRocmVhZDo6Y3VycmVudCgpLCAiV2Ug
ZG8gbm90IHN1cHBvcnQgc3VzcGVuZGluZyB0aGUgY3VycmVudCB0aHJlYWQgaXRzZWxmLiIpOwog
ICAgIExvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbFN1c3BlbmRMb2NrKTsKICAgICBEV09SRCByZXN1
bHQgPSBTdXNwZW5kVGhyZWFkKG1faGFuZGxlKTsKICAgICBpZiAocmVzdWx0ICE9IChEV09SRCkt
MSkKQEAgLTI5Myw3ICsyOTMsNyBAQCBUaHJlYWQqIFRocmVhZDo6Y3VycmVudER5aW5nKCkKICAg
ICBBU1NFUlQoc19rZXkgIT0gSW52YWxpZFRocmVhZFNwZWNpZmljS2V5KTsKICAgICAvLyBBZnRl
ciBGTFMgaXMgZGVzdHJveWVkLCB0aGlzIG1hcCBvZmZlcnMgdGhlIHZhbHVlIHVudGlsIHRoZSBz
ZWNvbmQgdGhyZWFkIGV4aXQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHN0ZDo6bG9ja19ndWFy
ZDxzdGQ6Om11dGV4PiBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0gICAgcmV0dXJuIHRocmVh
ZE1hcCgpLmdldChjdXJyZW50VGhyZWFkKCkpOworICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQo
Y3VycmVudElEKCkpOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2Rl
IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxNzkzMjEzPiBpcyBmaXhlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL01h
aW5UaHJlYWRNYWMubW0KaW5kZXggMzFkODE0YmY3YTdiOTY1Nzk1MmU4NWY4ZGZkNjQ2MDg4ZTNl
ZDcyNS4uMjk5Yjk5OTZiNzNkODYwMTgwYTk2M2VjYTMwNzc4NzY1MmRlNzE2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMubW0KKysrIGIvU291cmNlL1dURi93
dGYvbWFjL01haW5UaHJlYWRNYWMubW0KQEAgLTY2LDggKzY2LDggQEAgc3RhdGljIHB0aHJlYWRf
dCBtYWluVGhyZWFkUHRocmVhZDsKIHN0YXRpYyBOU1RocmVhZCogbWFpblRocmVhZE5TVGhyZWFk
OwogCiAjaWYgVVNFKFdFQl9USFJFQUQpCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzQXBwbGlj
YXRpb25VSVRocmVhZElkZW50aWZpZXI7Ci1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzV2ViVGhy
ZWFkSWRlbnRpZmllcjsKK3N0YXRpYyBUaHJlYWQqIHNBcHBsaWNhdGlvblVJVGhyZWFkOworc3Rh
dGljIFRocmVhZCogc1dlYlRocmVhZDsKICNlbmRpZgogCiB2b2lkIGluaXRpYWxpemVNYWluVGhy
ZWFkUGxhdGZvcm0oKQpAQCAtMTczLDE2ICsxNzMsMTAgQEAgYm9vbCBpc1dlYlRocmVhZCgpCiAg
ICAgcmV0dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5UaHJlYWRQdGhyZWFk
KTsKIH0KIAotdm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIoKQor
dm9pZCBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpCiB7CiAgICAgQVNTRVJUKHB0aHJl
YWRfbWFpbl9ucCgpKTsKLSAgICBzQXBwbGljYXRpb25VSVRocmVhZElkZW50aWZpZXIgPSBjdXJy
ZW50VGhyZWFkKCk7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZVdlYlRocmVhZElkZW50aWZpZXIoKQot
ewotICAgIEFTU0VSVCghcHRocmVhZF9tYWluX25wKCkpOwotICAgIHNXZWJUaHJlYWRJZGVudGlm
aWVyID0gY3VycmVudFRocmVhZCgpOworICAgIHNBcHBsaWNhdGlvblVJVGhyZWFkID0gJlRocmVh
ZDo6Y3VycmVudCgpOwogfQogCiB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCkBA
IC0xOTIsMTYgKzE4NiwxOCBAQCB2b2lkIGluaXRpYWxpemVXZWJUaHJlYWRQbGF0Zm9ybSgpCiAg
ICAgbWFpblRocmVhZEVzdGFibGlzaGVkQXNQdGhyZWFkTWFpbiA9IGZhbHNlOwogICAgIG1haW5U
aHJlYWRQdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CiAgICAgbWFpblRocmVhZE5TVGhyZWFkID0g
W1tOU1RocmVhZCBjdXJyZW50VGhyZWFkXSByZXRhaW5dOworCisgICAgc1dlYlRocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKIH0KIAotYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JU
aHJlYWQoVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKK2Jvb2wgY2FuQWNjZXNzVGhyZWFkTG9j
YWxEYXRhRm9yVGhyZWFkKFRocmVhZCYgdGhyZWFkKQogewotICAgIFRocmVhZElkZW50aWZpZXIg
Y3VycmVudFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIGlmICh0aHJlYWRJZCA9PSBj
dXJyZW50VGhyZWFkSWQpCisgICAgVGhyZWFkJiBjdXJyZW50VGhyZWFkID0gVGhyZWFkOjpjdXJy
ZW50KCk7CisgICAgaWYgKCZ0aHJlYWQgPT0gJmN1cnJlbnRUaHJlYWQpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKHRocmVhZElkID09IHNXZWJUaHJlYWRJZGVudGlmaWVyIHx8IHRo
cmVhZElkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IChjdXJyZW50VGhyZWFkSWQgPT0gc1dlYlRocmVhZElkZW50aWZpZXIgfHwgY3VycmVudFRocmVh
ZElkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkSWRlbnRpZmllcikgJiYgd2ViVGhyZWFkSXNVbmlu
aXRpYWxpemVkT3JMb2NrZWRPckRpc2FibGVkKCk7CisgICAgaWYgKCZ0aHJlYWQgPT0gc1dlYlRo
cmVhZCB8fCAmdGhyZWFkID09IHNBcHBsaWNhdGlvblVJVGhyZWFkKQorICAgICAgICByZXR1cm4g
KCZjdXJyZW50VGhyZWFkID09IHNXZWJUaHJlYWQgfHwgJmN1cnJlbnRUaHJlYWQgPT0gc0FwcGxp
Y2F0aW9uVUlUaHJlYWQpICYmIHdlYlRocmVhZElzVW5pbml0aWFsaXplZE9yTG9ja2VkT3JEaXNh
YmxlZCgpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaAppbmRleCAxM2YzMTIxNTZj
NjQ4ZmYyNTJhODZjYjRlZGVkYTY0YzgxZTk3ZjAyLi4yYjQyYzA2ZjM5ODM4ZDA5OGM1MzdmYzEz
M2JjOGFkOWU0ZDhjNmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJBY3RpdmVET01PYmplY3QuaApAQCAtMzUsMTAgKzM1LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgVGhyZWFkSWRlbnRpZmllciBvcmlnaW5UaHJlYWRJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkSUQ7IH0KKyAgICBUaHJlYWQmIG9yaWdpblRo
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkLmdldCgpOyB9CiAKICAgICB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbCB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgICAgIEFTU0VSVChtX29yaWdpblRocmVhZC5w
dHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2Nr
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dExvY2spOwogICAgICAgICBBY3RpdmVET01PYmplY3Q6
OmNvbnRleHREZXN0cm95ZWQoKTsKQEAgLTQ3LDkgKzQ3LDkgQEAgY2xhc3MgSURCQWN0aXZlRE9N
T2JqZWN0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gUGFyYW1ldGVycywgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZv
aWQgcGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoVCYgb2JqZWN0LCB2b2lkIChUOjoqbWV0
aG9kKShQYXJhbWV0ZXJzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKG9yaWdpblRocmVhZElEKCkgPT0gb2JqZWN0Lm9yaWdpblRocmVhZElEKCkp
OworICAgICAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZvYmplY3Qub3JpZ2luVGhyZWFk
KCkpOwogCi0gICAgICAgIGlmIChvYmplY3Qub3JpZ2luVGhyZWFkSUQoKSA9PSBjdXJyZW50VGhy
ZWFkKCkpIHsKKyAgICAgICAgaWYgKCZvYmplY3Qub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKSB7CiAgICAgICAgICAgICAob2JqZWN0LiptZXRob2QpKGFyZ3VtZW50cy4uLik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3Mg
SURCQWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAKICAgICB2b2lk
IGNhbGxGdW5jdGlvbk9uT3JpZ2luVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5j
dGlvbikKICAgICB7Ci0gICAgICAgIGlmIChvcmlnaW5UaHJlYWRJRCgpID09IGN1cnJlbnRUaHJl
YWQoKSkgeworICAgICAgICBpZiAoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSkgewogICAgICAgICAgICAgZnVuY3Rpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtODcsNyArODcsNyBAQCBjbGFzcyBJREJBY3RpdmVET01PYmplY3QgOiBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVGhyZWFkSWRlbnRpZmll
ciBtX29yaWdpblRocmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4g
bV9vcmlnaW5UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogICAgIExvY2sgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0TG9jazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDYyZmExNTFjYWIwOTdiZjQ5ZGUzMTExYzczOTBj
NGExZTdlMDRjZWYuLjQxMTJlYWQ0MjU4ZDc1YjU4NTdkZjdiOTkxNmM1ODFiYTc4ODM4Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBJREJDdXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgYwogICAgICwgbV9pbmZvKGluZm8p
CiAgICAgLCBtX3NvdXJjZSgmb2JqZWN0U3RvcmUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJmVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KQEAgLTcxLDE5ICs3MSwxOSBAQCBJREJD
dXJzb3I6OklEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQkluZGV4JiBp
bmRleCwgY29uc3QgSURCQ3VycwogICAgICwgbV9pbmZvKGluZm8pCiAgICAgLCBtX3NvdXJjZSgm
aW5kZXgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBlZmZlY3RpdmVPYmplY3RT
dG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJmVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBzdXNwZW5kSWZOZWVk
ZWQoKTsKIH0KIAogSURCQ3Vyc29yOjp+SURCQ3Vyc29yKCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUo
KS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKIH0KIAogYm9vbCBJREJDdXJzb3I6OnNvdXJjZXNEZWxldGVkKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
c291cmNlLAogICAgICAgICBbXSAoY29uc3QgUmVmUHRyPElEQk9iamVjdFN0b3JlPiYgb2JqZWN0
U3RvcmUpIHsgcmV0dXJuIG9iamVjdFN0b3JlLT5pc0RlbGV0ZWQoKTsgfSwKQEAgLTEwMSwxNCAr
MTAxLDE0IEBAIElEQk9iamVjdFN0b3JlJiBJREJDdXJzb3I6OmVmZmVjdGl2ZU9iamVjdFN0b3Jl
KCkgY29uc3QKIAogSURCVHJhbnNhY3Rpb24mIElEQkN1cnNvcjo6dHJhbnNhY3Rpb24oKSBjb25z
dAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUo
KS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBlZmZlY3RpdmVPYmpl
Y3RTdG9yZSgpLnRyYW5zYWN0aW9uKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCQ3Vyc29yOjp1cGRhdGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjp1cGRhdGUiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRh
YmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3Rv
cmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAogICAgIGlmIChzb3VyY2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4
ZWN1dGUgJ3VwZGF0ZScgb24gJ0lEQkN1cnNvcic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZm
ZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0xNDksNyArMTQ5
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OnVwZGF0ZShFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogRXhjZXB0aW9uT3I8dm9pZD4gSURCQ3Vyc29y
OjphZHZhbmNlKHVuc2lnbmVkIGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDdXJz
b3I6OmFkdmFuY2UiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9i
amVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNl
KCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9y
ZXF1ZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
QEAgLTIzNCw3ICsyMzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJDdXJzb3I6OmNvbnRpbnVl
RnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5VgogRXhjZXB0aW9uT3I8
dm9pZD4gSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleURhdGEmIGtleSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uICh0byBr
ZXkgJXMpIiwga2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0
U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9yZXF1ZXN0KQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5RGF0YSYg
a2V5KQogCiB2b2lkIElEQkN1cnNvcjo6dW5jaGVja2VkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJL
ZXlEYXRhJiBrZXksIHVuc2lnbmVkIGNvdW50KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgKyttX291dHN0YW5kaW5nUmVxdWVzdENvdW50OwogCkBAIC0yNzgsNyArMjc4LDcg
QEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0
YSYga2V5LCB1bnNpZ25lZCBjb3VudCkKIAogdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJh
dGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5
S2V5KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZWZmZWN0aXZlT2JqZWN0U3Rv
cmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgKyttX291dHN0YW5kaW5n
UmVxdWVzdENvdW50OwogCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hl
Y2tlZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRh
JgogRXhjZXB0aW9uT3I8UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OmRlbGV0
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1
cnNvcjo6ZGVsZXRlRnVuY3Rpb24iKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVm
ZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigp
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAg
IGlmIChzb3VyY2VzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2RlbGV0ZScgb24g
J0lEQkN1cnNvcic6IFRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9y
ZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0zMjAsNyArMzIwLDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUKIHZvaWQgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkN1cnNvcjo6c2V0R2V0UmVzdWx0IC0gY3VycmVudCBrZXkgJXMiLCBnZXRSZXN1bHQu
a2V5RGF0YSgpLmxvZ2dpbmdTdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTAwKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCku
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSByZXF1
ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggOGY2
ZTc3NWRhMmRjNzJmMTYwNTg0YTViYzgyZGFlNjdlNjE5MjQ0My4uMTA5MzIxOTM4NWE2OWI5M2Y5
OWMyOTMzMDNiNTQyOTdjZTRkZWFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBJREJEYXRhYmFzZTo6
SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9jbG9zZWRJblNl
cnZlcikKICAgICAgICAgbV9jb25uZWN0aW9uUHJveHktPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3Nl
ZCgqdGhpcyk7CkBAIC03NCw3ICs3NCw3IEBAIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQog
CiBib29sIElEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSB8fCBtYXlCZUdDVGhyZWFk
KCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8
IG1heUJlR0NUaHJlYWQoKSk7CiAKICAgICBpZiAobV9jbG9zZWRJblNlcnZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtODcsMTkgKzg3LDE5IEBAIGJvb2wgSURCRGF0YWJhc2U6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAKIGNvbnN0IFN0cmluZyBJREJEYXRhYmFzZTo6bmFtZSgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAg
ICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9CiAKIHVpbnQ2NF90IElEQkRhdGFiYXNlOjp2ZXJz
aW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKICAgICByZXR1cm4gbV9pbmZvLnZlcnNpb24oKTsKIH0KIAogUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9y
IChhdXRvJiBuYW1lIDogbV9pbmZvLm9iamVjdFN0b3JlTmFtZXMoKSkKQEAgLTExMCw3ICsxMTAs
NyBAQCBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMo
KSBjb25zdAogCiB2b2lkIElEQkRhdGFiYXNlOjpyZW5hbWVPYmplY3RTdG9yZShJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24pOwogICAgIEFTU0VSVChtX2luZm8uaGFzT2JqZWN0U3RvcmUob2JqZWN0
U3RvcmUuaW5mbygpLm5hbWUoKSkpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJREJEYXRh
YmFzZTo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25z
dCBTdHJpbmcmIG4KIAogdm9pZCBJREJEYXRhYmFzZTo6cmVuYW1lSW5kZXgoSURCSW5kZXgmIGlu
ZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KTsKICAgICBBU1NFUlQobV9pbmZvLmhhc09iamVjdFN0b3JlKGluZGV4Lm9iamVjdFN0b3JlKCku
aW5mbygpLm5hbWUoKSkpOwogICAgIEFTU0VSVChtX2luZm8uaW5mb0ZvckV4aXN0aW5nT2JqZWN0
U3RvcmUoaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkubmFtZSgpKS0+aGFzSW5kZXgoaW5kZXgu
aW5mbygpLm5hbWUoKSkpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJP
YmplY3RTdG9yZT4+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZSAtICglcyAlcykiLCBtX2luZm8ubmFtZSgpLnV0ZjgoKS5kYXRhKCksIG5hbWUudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAg
ICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CiAKICAgICBpZiAoIW1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKQpAQCAtMTY1LDcgKzE2NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJUcmFu
c2FjdGlvbj4+IElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbihTdHJpbmdPclZlY3Rvck9mU3RyaW5n
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbiIpOwogCi0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9j
bG9zZVBlbmRpbmcpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAndHJhbnNhY3Rpb24nIG9uICdJREJE
YXRhYmFzZSc6IFRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3NpbmcuIikgfTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2RlbGV0ZU9iamVjdFN0b3JlJyBvbiAn
SURCRGF0YWJhc2UnOiBUaGUgZGF0YWJhc2UgaXMgbm90IHJ1bm5pbmcgYSB2ZXJzaW9uIGNoYW5n
ZSB0cmFuc2FjdGlvbi4iKSB9OwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSURCRGF0YWJhc2U6
OmNsb3NlKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmNsb3NlIC0gJSIg
UFJJdTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fY2xvc2VQZW5kaW5n
KSB7CiAgICAgICAgIG1fY2xvc2VQZW5kaW5nID0gdHJ1ZTsKQEAgLTI1OSw3ICsyNTksNyBAQCB2
b2lkIElEQkRhdGFiYXNlOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KGNvbnN0IElEQkVycm9yJiBl
cnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmNvbm5lY3Rpb25Ub1Nl
cnZlckxvc3QgLSAlIiBQUkl1NjQsIG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFT
U0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fY2xv
c2VQZW5kaW5nID0gdHJ1ZTsKICAgICBtX2Nsb3NlZEluU2VydmVyID0gdHJ1ZTsKQEAgLTI4NCw3
ICsyODQsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIoKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVyIC0gJSIgUFJJ
dTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9jbG9zZWRJblNlcnZlcikK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzAxLDEzICszMDEsMTMgQEAgdm9pZCBJREJEYXRhYmFzZTo6
bWF5YmVDbG9zZUluU2VydmVyKCkKIAogY29uc3QgY2hhciogSURCRGF0YWJhc2U6OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogICAgIHJldHVybiAiSURCRGF0YWJhc2UiOwogfQogCiBib29sIElEQkRhdGFi
YXNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IHZhbHVlIHdpbGwgc29tZXRpbWVzIGJlIGZhbHNlIHdoZW4gZGF0YWJhc2Ugb3BlcmF0aW9ucyBh
cmUgYWN0dWFsbHkgaW4gcHJvZ3Jlc3MuCiAgICAgLy8gU3VjaCBkYXRhYmFzZSBvcGVyYXRpb25z
IGRvIG5vdCB5ZXQgZXhpc3QuCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6
c3RvcCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpzdG9wIC0gJSIgUFJJ
dTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVy
cygpOwogCkBAIC0zNDEsNyArMzQxLDcgQEAgUmVmPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFz
ZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3QKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uICVzIiwgaW5mby5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNT
RVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7CiAgICAgQVNTRVJUKGluZm8ubW9kZSgp
ID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSk7CiAgICAgQVNTRVJUKCFtX2Ns
b3NlUGVuZGluZyk7CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkU3Rh
cnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3Ig
dGhlIGNsaWVudCB0byBoYXZlIGFib3J0ZWQgYSB0cmFuc2FjdGlvbiBiZWZvcmUgdGhlIHNlcnZl
ciByZXBsaWVzIGJhY2sgdGhhdCBpdCBoYXMgc3RhcnRlZC4KICAgICBpZiAobV9hYm9ydGluZ1Ry
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSkKQEAg
LTM3Miw3ICszNzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJE
YXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlk
ZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8gcmVmVHJhbnNhY3Rp
b24gPSBtX2FjdGl2ZVRyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCkpOwogICAgIEFTU0VSVChyZWZUcmFuc2FjdGlvbik7CkBAIC0zODMsNyArMzgzLDcgQEAg
dm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ29tbWl0
VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID09ICZ0
cmFuc2FjdGlvbikKICAgICAgICAgbV9pbmZvLnNldFZlcnNpb24odHJhbnNhY3Rpb24uaW5mbygp
Lm5ld1ZlcnNpb24oKSk7CkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6d2ls
bEFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24gJXMiLCB0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAg
YXV0byByZWZUcmFuc2FjdGlvbiA9IG1fYWN0aXZlVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFyZWZUcmFuc2FjdGlvbikKQEAgLTQx
NSw3ICs0MTUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uKElEQlRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJh
c2U6OmRpZEFib3J0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKHRyYW5zYWN0aW9uLmlzVmVyc2lv
bkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5vcmlnaW5hbERhdGFiYXNl
SW5mbygpKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRDb21taXRP
ckFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uICVz
IiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
IAogICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9PSAmdHJhbnNhY3Rpb24pCiAg
ICAgICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gbnVsbHB0cjsKQEAgLTQ2MSw3ICs0
NjEsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZQogICAgIHVpbnQ2NF90IGN1cnJlbnRWZXJz
aW9uID0gbV9pbmZvLnZlcnNpb24oKTsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6
OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQgLSBjdXJyZW50IHZlcnNpb24gJSIgUFJJdTY0ICIsIHJl
cXVlc3RlZCB2ZXJzaW9uICUiIFBSSXU2NCAiLCBjb25uZWN0aW9uICUiIFBSSXU2NCAiICglcCki
LCBjdXJyZW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbiwgbV9kYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgfHwgbV9jbG9zZVBl
bmRpbmcpIHsKICAgICAgICAgY29ubmVjdGlvblByb3h5KCkuZGlkRmlyZVZlcnNpb25DaGFuZ2VF
dmVudChtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyKTsK
QEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZQogdm9pZCBJREJEYXRh
YmFzZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50ICglIiBQUkl1NjQgIikgKCVwKSIsIG1fZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKTsKIApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpc3BhdGNoRXZl
bnQoRXZlbnQmIGV2ZW50KQogCiB2b2lkIElEQkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleEluZm8o
Y29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0Zv
ckV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAg
QVNTRVJUKG9iamVjdFN0b3JlKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIElEQkRhdGFiYXNl
OjpkaWRDcmVhdGVJbmRleEluZm8oY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogCiB2b2lkIElE
QkRhdGFiYXNlOjpkaWREZWxldGVJbmRleEluZm8oY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0
byogb2JqZWN0U3RvcmUgPSBtX2luZm8uaW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUoaW5mby5v
YmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCA0OTdkZWMx
YTQwZmQwZDdjNmY1MTEyOWI1MTgxZGYyZjFlODczM2MwLi4xZTBhYjk5M2ZjOGMxMzc2YzJiNmI4
MmQ3NGRkNDMzMDhmMDBhNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguY3BwCkBAIC00OCwxNCArNDgsMTQgQEAgSURCSW5kZXg6OklEQkluZGV4KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbywg
SUQKICAgICAsIG1fb3JpZ2luYWxJbmZvKGluZm8pCiAgICAgLCBtX29iamVjdFN0b3JlKG9iamVj
dFN0b3JlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKIElEQklu
ZGV4Ojp+SURCSW5kZXgoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogfQogCiBjb25zdCBjaGFyKiBJREJJbmRleDo6
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC03NSwxMyArNzUsMTMgQEAgYm9vbCBJREJJ
bmRleDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogY29uc3QgU3RyaW5nJiBJREJJbmRl
eDo6bmFtZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQkluZGV4OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNh
Y3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgc2V0IHByb3Bl
cnR5ICduYW1lJyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggaGFzIGJlZW4gZGVsZXRlZC4iKSB9
OwpAQCAtMTA5LDMxICsxMDksMzEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSURCSW5kZXg6OnNldE5h
bWUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiBJREJPYmplY3RTdG9yZSYgSURCSW5kZXg6Om9iamVj
dFN0b3JlKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUu
dHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gbV9vYmplY3RTdG9yZTsKIH0KIAogY29u
c3QgSURCS2V5UGF0aCYgSURCSW5kZXg6OmtleVBhdGgoKSBjb25zdAogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9u
KCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IHJldHVybiBtX2luZm8ua2V5UGF0aCgpOwogfQogCiBib29sIElEQkluZGV4Ojp1bmlxdWUoKSBj
b25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFu
c2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29i
amVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBtX2luZm8udW5pcXVlKCk7CiB9CiAKIGJvb2wg
SURCSW5kZXg6Om11bHRpRW50cnkoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBtX2lu
Zm8ubXVsdGlFbnRyeSgpOwogfQogCiB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJz
aW9uQ2hhbmdlQWJvcnQoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgLy8gT25seSByb2xsYmFjayB0byB0
aGUgb3JpZ2luYWwgaW5mbyBpZiB0aGlzIGluZGV4IHN0aWxsIGV4aXN0cyBpbiB0aGUgcm9sbGVk
LWJhY2sgZGF0YWJhc2UgaW5mby4KICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5pbmZvKCkuaW5mb0ZvckV4aXN0aW5nT2Jq
ZWN0U3RvcmUobV9vYmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKTsKQEAgLTE1Miw3ICsx
NTIsNyBAQCB2b2lkIElEQkluZGV4Ojpyb2xsYmFja0luZm9Gb3JWZXJzaW9uQ2hhbmdlQWJvcnQo
KQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBJREJDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlv
bigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0
b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRl
ZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5DdXJzb3InIG9uICdJREJJbmRleCc6IFRo
ZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTE3
Myw3ICsxNzMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVu
Q3Vyc29yKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYQogRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXksIElEQkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQkluZGV4OjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIGtleVJh
bmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmIChrZXlSYW5n
ZS5oYXNFeGNlcHRpb24oKSkKQEAgLTE4NSw3ICsxODUsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4OjpvcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1Zh
bHVlCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29y
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSogcmFuZ2UsIElEQkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuS2V5
Q3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRy
YW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUu
aXNEZWxldGVkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1cnNvcicgb24gJ0lE
QkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4i
KSB9OwpAQCAtMjI3LDcgKzIyNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmNvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSkKIAogRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlm
IChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS5pc0RlbGV0ZWQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBl
eGVjdXRlICdjb3VudCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3Rv
cmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjYyLDcgKzI2Miw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXkpCiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigp
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9y
IGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjk3LDcgKzI5Nyw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEtleShFeGVjU3Rh
dGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gSURCSW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmpl
Y3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29i
amVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24g
J0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRl
ZC4iKSB9OwpAQCAtMzE1LDcgKzMxNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLCiBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVj
U3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fb2JqZWN0U3RvcmUudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAKICAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsJyBvbiAnSURCSW5kZXgnOiBUaGUgaW5kZXggb3Ig
aXRzIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0zMzgsNyArMzM4LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlS
YW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsS2V5cyIpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1f
ZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLmlzRGVsZXRlZCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1
dGUgJ2dldEFsbEtleXMnIG9uICdJREJJbmRleCc6IFRoZSBpbmRleCBvciBpdHMgb2JqZWN0IHN0
b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTM2MCw3ICszNjAsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0
YXRlLCBKU1ZhbHVlCiAKIHZvaWQgSURCSW5kZXg6Om1hcmtBc0RlbGV0ZWQoKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFi
YXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX29iamVjdFN0b3JlLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgQVNTRVJUKCFtX2RlbGV0ZWQpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAK
aW5kZXggMDhhNzg0YmEyNDIyMzBlNjM1MzcyNTYwMDEzMWJlNjFiMzJiYmQwZC4uMjg1ODk1NzZj
NjMyYmE0ZGU1N2U1NmMwNjFhMzJjZmY3OWZmNzkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNjEsMTQgKzYxLDE0
IEBAIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBJREJPYmplY3RTCiAgICAgLCBtX29yaWdpbmFsSW5mbyhpbmZvKQog
ICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKIElEQk9iamVj
dFN0b3JlOjp+SURCT2JqZWN0U3RvcmUoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VS
VCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiB9CiAKIGNvbnN0IGNoYXIqIElEQk9iamVjdFN0b3JlOjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKQEAgLTg4LDEzICs4OCwxMyBAQCBib29sIElEQk9iamVjdFN0b3JlOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBjb25zdCBTdHJpbmcmIElEQk9iamVjdFN0b3Jl
OjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNh
Y3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
ICAgIHJldHVybiBtX2luZm8ubmFtZSgpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmpl
Y3RTdG9yZTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgc2V0
IHByb3BlcnR5ICduYW1lJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0IHN0b3JlIGhh
cyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTExOSwxMyArMTE5LDEzIEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IElEQk9iamVjdFN0b3JlOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogY29uc3Qg
c3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25z
dAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFz
ZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1f
aW5mby5rZXlQYXRoKCk7CiB9CiAKIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9y
ZTo6aW5kZXhOYW1lcygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5n
TGlzdDo6Y3JlYXRlKCk7CiAKQEAgLTE0MCwyMCArMTQwLDIwIEBAIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CiAKIElEQlRyYW5zYWN0aW9u
JiBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24oKQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb247CiB9CiAKIGJvb2wgSURC
T2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5hdXRvSW5jcmVtZW50KCk7CiB9
CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJz
b3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIElEQkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVj
dFN0b3JlOjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3Ry
YW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbkN1cnNv
cicgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVk
LiIpIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlMKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Om9wZW5LZXlDdXJzb3IoRXhl
Y1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIElEQkN1cnNvckRp
cmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpvcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0
aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0
aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAog
ICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbktleUN1cnNvcicg
b24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIp
IH07CkBAIC0yMDEsNyArMjAxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJP
YmplY3RTdG9yZTo6b3BlbktleUN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwKIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSlNWYWx1ZSBrZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3Jl
OjpnZXQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYg
KG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdnZXQnIG9uICdJREJPYmplY3RTdG9y
ZSc6IFRoZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjE5LDcgKzIx
OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldChF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrCiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQk9iamVjdFN0b3JlOjpnZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdl
KiBrZXlSYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmdldCIp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgp
Lm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9kZWxl
dGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhl
IG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yMzcsNyArMjM3LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0KEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW4KIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
T2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXkpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRLZXkiKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZh
aWxlZCB0byBleGVjdXRlICdnZXRLZXknIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OwpAQCAtMjU1LDcgKzI1NSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEtleShFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSlNWYWx1CiBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0
b3JlOjpnZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdlKiBrZXlSYW5nZSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmdldEtleSIpOwotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAobV9kZWxldGVkKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVj
dCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC0yOTcsNyArMjk3LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKIAogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6cHV0T3JBZGQiKTsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgYXV0byBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKTsKICAgICBpZiAoIWNv
bnRleHQpCkBAIC0zNjksNyArMzY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjU3RhdGUKIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbiIpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAvLyBUaGUgSURCIHNwZWMgZm9yIHNldmVyYWwgSURC
T2JqZWN0U3RvcmUgbWV0aG9kcyBzdGF0ZXMgdGhhdCB0cmFuc2FjdGlvbiByZWxhdGVkIGV4Y2Vw
dGlvbnMgc2hvdWxkIGZpcmUgYmVmb3JlCiAgICAgLy8gdGhlIGV4Y2VwdGlvbiBmb3IgYW4gb2Jq
ZWN0IHN0b3JlIGJlaW5nIGRlbGV0ZWQuCkBAIC00MDMsNyArNDAzLDcgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0YXRl
JiBleGVjU3RhdGUKIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6
OmNsZWFyKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJP
YmplY3RTdG9yZTo6Y2xlYXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJh
bnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgLy8gVGhlIElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhv
ZHMgc3RhdGVzIHRoYXQgdHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJl
IGJlZm9yZQogICAgIC8vIHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBk
ZWxldGVkLgpAQCAtNDI1LDcgKzQyNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCT2JqZWN0U3RvcmU6OmNsZWFyKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlKQogRXhjZXB0aW9uT3I8
UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSYsIGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCS2V5UGF0aCYmIGtleVBhdGgsIGNvbnN0IEluZGV4UGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6
OmNyZWF0ZUluZGV4ICVzIChrZXlQYXRoOiAlcywgdW5pcXVlOiAlaSwgbXVsdGlFbnRyeTogJWkp
IiwgbmFtZS51dGY4KCkuZGF0YSgpLCBsb2dnaW5nU3RyaW5nKGtleVBhdGgpLnV0ZjgoKS5kYXRh
KCksIHBhcmFtZXRlcnMudW5pcXVlLCBwYXJhbWV0ZXJzLm11bHRpRW50cnkpOwotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rpb24uaXNW
ZXJzaW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY3JlYXRlSW5kZXgnIG9uICdJ
REJPYmplY3RTdG9yZSc6IFRoZSBkYXRhYmFzZSBpcyBub3QgcnVubmluZyBhIHZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uLiIpIH07CkBAIC00NjYsNyArNDY2LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KEV4ZWNTdGF0ZSYsIGNvbnN0
IFN0cmluZyYKIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3JlOjppbmRl
eChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2Jq
ZWN0U3RvcmU6OmluZGV4Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5z
YWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
IAogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsgLy8gRklYTUU6IElzIHRoaXMgY29kZSB0ZXN0
ZWQ/IElzIGl0ZXZlbiByZWFjaGFibGU/CkBAIC00OTgsNyArNDk4LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lKQogRXhjZXB0aW9uT3I8dm9pZD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmRl
bGV0ZUluZGV4ICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fZGVsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVj
dXRlICdkZWxldGVJbmRleCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBo
YXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC01NTEsNyArNTUxLDcgQEAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Y291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUs
IElEQktleVIKIAogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5n
ZSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgLy8gVGhl
IElEQiBzcGVjIGZvciBzZXZlcmFsIElEQk9iamVjdFN0b3JlIG1ldGhvZHMgc3RhdGVzIHRoYXQg
dHJhbnNhY3Rpb24gcmVsYXRlZCBleGNlcHRpb25zIHNob3VsZCBmaXJlIGJlZm9yZQogICAgIC8v
IHRoZSBleGNlcHRpb24gZm9yIGFuIG9iamVjdCBzdG9yZSBiZWluZyBkZWxldGVkLgpAQCAtNTcz
LDcgKzU3Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6
OmRvQ291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0CiBFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgb2JqZWN0
IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQuIikgfTsKQEAgLTU5Niw3ICs1OTYsNyBAQCBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBl
eGVjU3RhdGUsIEpTVmFsdQogRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RT
dG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdl
PiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKCZtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChtX2RlbGV0ZWQpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhl
Y3V0ZSAnZ2V0QWxsS2V5cycgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIG9iamVjdCBzdG9yZSBo
YXMgYmVlbiBkZWxldGVkLiIpIH07CkBAIC02MTgsMTMgKzYxOCwxMyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBKUwogCiB2b2lkIElEQk9iamVjdFN0b3JlOjptYXJrQXNEZWxldGVkKCkKIHsKLSAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIG1fZGVsZXRlZCA9IHRydWU7
CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6OnJvbGxiYWNrRm9yVmVyc2lvbkNoYW5nZUFib3J0
KCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fdHJhbnNhY3Rpb24uZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgU3RyaW5n
IGN1cnJlbnROYW1lID0gbV9pbmZvLm5hbWUoKTsKICAgICBtX2luZm8gPSBtX29yaWdpbmFsSW5m
bzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5E
QlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5jcHAKaW5kZXggNzhkYTk3MDIyYTdjZTQ5YjUxMDNmNDhkYmVkYzY0MTE4ZDM2MDk2
Mi4uNTdkYjBhMDcwMzE2NjE3ZWNkZTY3YWYyYjI5NWQ2NDBkM2IzOTE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAK
QEAgLTYzLDEyICs2MywxMiBAQCBJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkNsaWVudDo6SQogCiBJREJPcGVuREJS
ZXF1ZXN0Ojp+SURCT3BlbkRCUmVxdWVzdCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiB9CiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihj
b25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kb21FcnJvciA9IGRhdGEuZXJyb3IoKS50b0RPTUV4
Y2VwdGlvbigpOwogICAgIGVucXVldWVFdmVudChJREJSZXF1ZXN0Q29tcGxldGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIHRydWUsIHRydWUsICp0aGlzKSk7CkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25FcnJvcihjb25zdCBJREJSZXN1
bHREYXRhJiBkYXRhKQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6OnZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbkRpZEZpbmlzaCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmln
aW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAKICAgICAvLyAzLjMuNyAidmVyc2lvbmNoYW5nZSIgdHJhbnNhY3Rpb24gc3Rl
cHMKICAgICAvLyBXaGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCwgYWZ0ZXIgZmlyaW5n
IGNvbXBsZXRlL2Fib3J0IG9uIHRoZSB0cmFuc2FjdGlvbiwgaW1tZWRpYXRlbHkgc2V0IHJlcXVl
c3QncyB0cmFuc2FjdGlvbiBwcm9wZXJ0eSB0byBudWxsLgpAQCAtODcsNyArODcsNyBAQCB2b2lk
IElEQk9wZW5EQlJlcXVlc3Q6OmZpcmVTdWNjZXNzQWZ0ZXJWZXJzaW9uQ2hhbmdlQ29tbWl0KCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6ZmlyZVN1Y2Nlc3NBZnRl
clZlcnNpb25DaGFuZ2VDb21taXQoKSAtICVzIiwgcmVzb3VyY2VJZGVudGlmaWVyKCkubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICBt
X3RyYW5zYWN0aW9uLT5hZGRSZXF1ZXN0KCp0aGlzKTsKIApAQCAtMTAxLDcgKzEwMSw3IEBAIHZv
aWQgSURCT3BlbkRCUmVxdWVzdDo6ZmlyZUVycm9yQWZ0ZXJWZXJzaW9uQ2hhbmdlQ29tcGxldGlv
bigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6OmZpcmVFcnJvckFm
dGVyVmVyc2lvbkNoYW5nZUNvbXBsZXRpb24oKSAtICVzIiwgcmVzb3VyY2VJZGVudGlmaWVyKCku
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGhhc1BlbmRpbmdBY3Rpdml0eSgpKTsK
IAogICAgIElEQkVycm9yIGlkYkVycm9yKEFib3J0RXJyb3IpOwpAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURCT3BlbkRC
UmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVz
dDo6b25TdWNjZXNzKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2VzcygpIik7CiAKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHNldFJlc3VsdChJREJE
YXRhYmFzZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNvbm5lY3Rpb25Qcm94
eSgpLCByZXN1bHREYXRhKSk7CiAgICAgbV9yZWFkeVN0YXRlID0gUmVhZHlTdGF0ZTo6RG9uZTsK
QEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyhjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9u
VXBncmFkZU5lZWRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZv
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgUmVmPElEQkRhdGFi
YXNlPiBkYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgY29ubmVjdGlvblByb3h5KCksIHJlc3VsdERhdGEpOwogICAgIFJlZjxJREJUcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS0+c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24ocmVzdWx0RGF0YS50cmFuc2FjdGlvbkluZm8oKSwgKnRoaXMpOwpAQCAtMTY2LDcgKzE2Niw3
IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25EZWxldGVEYXRh
YmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHVpbnQ2NF90IG9sZFZl
cnNpb24gPSByZXN1bHREYXRhLmRhdGFiYXNlSW5mbygpLnZlcnNpb24oKTsKIApAQCAtMTgyLDcg
KzE4Miw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZChjb25zdCBJ
REJSZXN1bHREYXRhJiBkYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1
ZXN0OjpyZXF1ZXN0Q29tcGxldGVkIik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKIAogICAgIC8vIElmIGFuIE9wZW4gcmVxdWVzdCB3YXMgY29tcGxldGVk
IGFmdGVyIHRoZSBwYWdlIGhhcyBuYXZpZ2F0ZWQsIGxlYXZpbmcgdGhpcyByZXF1ZXN0CiAgICAg
Ly8gd2l0aCBhIHN0b3BwZWQgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LCB3ZSBuZWVkIHRvIG1l
c3NhZ2UgYmFjayB0byB0aGUgc2VydmVyIHNvIGl0CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBJ
REJPcGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRh
dGEpCiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdEJsb2NrZWQodWludDY0X3Qgb2xk
VmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIExPRyhJbmRleGVkREIsICJJREJPcGVuREJSZXF1
ZXN0OjpyZXF1ZXN0QmxvY2tlZCIpOwogICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdl
RXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBldmVudE5hbWVzKCkuYmxvY2tl
ZEV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwCmluZGV4IGNkYzliYWY1MzllZGZmMjE0MTVmOTQ0ZDgxODc4NWRjMjRhNjgyNTcuLmM5
Y2FkZWNmNDgzMDliNmYxOWFlNjdkYjFhMWU2MDJhZDZmNDE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0xNDMsNyArMTQzLDcg
QEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWQKIAogSURCUmVxdWVzdDo6fklEQlJlcXVlc3QoKQog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYg
KG1fcmVzdWx0KSB7CiAgICAgICAgIFdURjo6c3dpdGNoT24obV9yZXN1bHQudmFsdWUoKSwKQEAg
LTE2Myw3ICsxNjMsNyBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPElEQlJlcXVlc3Q6OlJl
c3VsdD4+IElEQlJlcXVlc3Q6OnJlc3VsdCgpIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPERPTUV4Y2Vw
dGlvbio+IElEQlJlcXVlc3Q6OmVycm9yKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghaXNEb25lKCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQg
dG8gcmVhZCB0aGUgJ2Vycm9yJyBwcm9wZXJ0eSBmcm9tICdJREJSZXF1ZXN0JzogVGhlIHJlcXVl
c3QgaGFzIG5vdCBmaW5pc2hlZC4iKSB9OwpAQCAtMTczLDcgKzE3Myw3IEBAIEV4Y2VwdGlvbk9y
PERPTUV4Y2VwdGlvbio+IElEQlJlcXVlc3Q6OmVycm9yKCkgY29uc3QKIAogdm9pZCBJREJSZXF1
ZXN0OjpzZXRTb3VyY2UoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2N1cnNvclJlcXVlc3ROb3Rp
Zmllcik7CiAKICAgICBtX3NvdXJjZSA9IFNvdXJjZSB7ICZjdXJzb3IgfTsKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFNvdXJjZShJREJDdXJzb3ImIGN1cnNvcikKIAog
dm9pZCBJREJSZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbik7CiAgICAgQVNTRVJUKHRyYW5zYWN0
aW9uLmlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoIXRyYW5zYWN0aW9uLmlzRmluaXNo
ZWRPckZpbmlzaGluZygpKTsKQEAgLTE5NSwxMyArMTk1LDEzIEBAIHZvaWQgSURCUmVxdWVzdDo6
c2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
IAogUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiBJREJSZXF1ZXN0Ojp0cmFuc2FjdGlv
bigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAgICAgcmV0dXJuIG1fc2hvdWxkRXhwb3NlVHJhbnNhY3Rpb25Ub0RPTSA/IG1fdHJhbnNhY3Rp
b24gOiBudWxscHRyOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0Ojpzb3VyY2VPYmplY3RTdG9y
ZUlkZW50aWZpZXIoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0y
MTUsNyArMjE1LDcgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNlT2JqZWN0U3RvcmVJZGVu
dGlmaWVyKCkgY29uc3QKIAogdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNlSW5kZXhJZGVudGlm
aWVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKIAogICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjI5LDE0ICsy
MjksMTQgQEAgdWludDY0X3QgSURCUmVxdWVzdDo6c291cmNlSW5kZXhJZGVudGlmaWVyKCkgY29u
c3QKIAogSW5kZXhlZERCOjpPYmplY3RTdG9yZVJlY29yZFR5cGUgSURCUmVxdWVzdDo6cmVxdWVz
dGVkT2JqZWN0U3RvcmVSZWNvcmRUeXBlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHJldHVybiBtX3JlcXVlc3RlZE9iamVjdFN0
b3JlUmVjb3JkVHlwZTsKIH0KIAogSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgSURCUmVxdWVz
dDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIEFT
U0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxJREJJbmRleD4+KG1fc291cmNlLnZh
bHVlKCkpKTsKIApAQCAtMjQ1LDMzICsyNDUsMzMgQEAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5
cGUgSURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCkgY29uc3QKIAogRXZlbnRU
YXJnZXRJbnRlcmZhY2UgSURCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgcmV0
dXJuIElEQlJlcXVlc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKIGNvbnN0IGNoYXIq
IElEQlJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgcmV0dXJuICJJREJSZXF1ZXN0
IjsKIH0KIAogYm9vbCBJREJSZXF1ZXN0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElE
KCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSB8fCBtYXlCZUdDVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2hh
c1BlbmRpbmdBY3Rpdml0eTsKIH0KIAogdm9pZCBJREJSZXF1ZXN0OjpzdG9wKCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIW1fY29u
dGV4dFN0b3BwZWQpOwogCiAgICAgY2FuY2VsRm9yU3RvcCgpOwpAQCAtMjg4LDcgKzI4OCw3IEBA
IHZvaWQgSURCUmVxdWVzdDo6Y2FuY2VsRm9yU3RvcCgpCiAKIHZvaWQgSURCUmVxdWVzdDo6ZW5x
dWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8
fCBtX2NvbnRleHRTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICszMDAsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50IC0gJXMgKCVwKSIsIGV2ZW50
LnR5cGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChtX2hhc1BlbmRpbmdBY3Rp
dml0eSk7CiAgICAgQVNTRVJUKCFtX2NvbnRleHRTdG9wcGVkKTsKIApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHZvaWQgSURCUmVxdWVzdDo6dW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlJlcXVlc3Q6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVu
dEhhbmRsZXIiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24gJiYgbV9pZGJFcnJvci5jb2RlKCkgIT0gQWJvcnRF
cnJvcikKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9N
RXhjZXB0aW9uOjpjcmVhdGUoQWJvcnRFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJUcmFuc2FjdGlv
biB3aWxsIGFib3J0IGR1ZSB0byB1bmNhdWdodCBleGNlcHRpb24gaW4gYW4gZXZlbnQgaGFuZGxl
ciIpKSk7CkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2Vw
dGlvbkluRXZlbnRIYW5kbGVyKCkKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3Qg
SURCS2V5RGF0YSYga2V5RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6c2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAKIHZvaWQgSURCUmVxdWVz
dDo6c2V0UmVzdWx0KGNvbnN0IFZlY3RvcjxJREJLZXlEYXRhPiYga2V5RGF0YXMpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvKiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTM5
Myw3ICszOTMsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBWZWN0b3I8SURC
S2V5RGF0YT4mIGtleURhdGFzKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBW
ZWN0b3I8SURCVmFsdWU+JiB2YWx1ZXMpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIElEQlJl
cXVlc3Q6OnNldFJlc3VsdChjb25zdCBWZWN0b3I8SURCVmFsdWU+JiB2YWx1ZXMpCiAKIHZvaWQg
SURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDIzLDcgKzQyMyw3
IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKIAogdm9pZCBJ
REJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBJREJWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
KyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUi
KTsKIApAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1
Y3R1cmVkQ2xvbmUoY29uc3QgSURCVmFsdWUmIHZhbHVlKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNl
dFJlc3VsdFRvVW5kZWZpbmVkKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6c2V0UmVzdWx0VG9VbmRlZmluZWQoKQogCiBJREJDdXJzb3IqIElEQlJlcXVlc3Q6OnJlc3Vs
dEN1cnNvcigpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBpZiAoIW1fcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2OCw3
ICs0NjgsNyBAQCBJREJDdXJzb3IqIElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcigpCiAKIHZvaWQg
SURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGlzRG9u
ZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQo
bV90cmFuc2FjdGlvbik7CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBJREJSZXF1ZXN0Ojp3aWxs
SXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImIGN1cnNvcikKIAogdm9pZCBJREJSZXF1ZXN0OjpkaWRP
cGVuT3JJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1f
cGVuZGluZ0N1cnNvcik7CiAKICAgICBtX3Jlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKQEAgLTUwOSw3
ICs1MDksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IoY29uc3Qg
SURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIAogdm9pZCBJREJSZXF1ZXN0Ojpjb21wbGV0ZVJl
cXVlc3RBbmREaXNwYXRjaEV2ZW50KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3Jl
YWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpEb25lOwogCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBJ
REJSZXF1ZXN0OjpvbkVycm9yKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6
b25FcnJvciIpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAgICAgQVNTRVJUKCFtX2lkYkVycm9yLmlzTnVsbCgpKTsKIAogICAgIG1fZG9tRXJyb3IgPSBt
X2lkYkVycm9yLnRvRE9NRXhjZXB0aW9uKCk7CkBAIC01MzQsMTQgKzUzNCwxNCBAQCB2b2lkIElE
QlJlcXVlc3Q6Om9uRXJyb3IoKQogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MiKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmb3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCiB2
b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChSZWY8SURCRGF0YWJhc2U+JiYgZGF0YWJhc2UpCiB7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3Jl
c3VsdCA9IFJlc3VsdCB7IFJlZlB0cjxJREJEYXRhYmFzZT4geyBXVEZNb3ZlKGRhdGFiYXNlKSB9
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKaW5kZXggYzFlMWRlZjU1ZWI2MWMyODZjYTNmYWVhMWQ5ODQwNTc4Y2RiMTM2
Ni4uYTlkNjQwZTUwYTA3OThjZmViMjE0OGExYmExNzBhODQ4YTVjYTA5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAt
ODAsNyArODAsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2Um
IGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mCiAKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uIC0gJXMiLCBtX2luZm8ubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1faW5mby5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAgIEFT
U0VSVChtX29wZW5EQlJlcXVlc3QpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIElEQlRyYW5zYWN0aW9u
OjpJREJUcmFuc2FjdGlvbihJREJEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IElEQlRyYW5zYWN0
aW9uSW5mbyYKIAogSURCVHJhbnNhY3Rpb246On5JREJUcmFuc2FjdGlvbigpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiB9CiAKIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBJREJUcmFuc2FjdGlvbjo6
Y29ubmVjdGlvblByb3h5KCkKQEAgLTExNiw3ICsxMTYsNyBAQCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSYgSURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25Qcm94eSgpCiAKIFJlZjxET01T
dHJpbmdMaXN0PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgp
KTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBuYW1lcyA9IGlzVmVyc2lvbkNo
YW5nZSgpID8gbV9kYXRhYmFzZS0+aW5mbygpLm9iamVjdFN0b3JlTmFtZXMoKSA6IG1faW5mby5v
YmplY3RTdG9yZXMoKTsKIApAQCAtMTMwLDIwICsxMzAsMjAgQEAgUmVmPERPTVN0cmluZ0xpc3Q+
IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIAogSURCRGF0YWJhc2Uq
IElEQlRyYW5zYWN0aW9uOjpkYigpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG1fZGF0YWJh
c2UucHRyKCk7CiB9CiAKIERPTUV4Y2VwdGlvbiogSURCVHJhbnNhY3Rpb246OmVycm9yKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKICAgICByZXR1cm4gbV9kb21FcnJvci5nZXQoKTsKIH0KIAogRXhj
ZXB0aW9uT3I8UmVmPElEQk9iamVjdFN0b3JlPj4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT2Jq
ZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmpl
Ywogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9NRXhjZXB0
aW9uJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmFib3J0
RHVlVG9GYWlsZWRSZXF1ZXN0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hlZE9y
RmluaXNoaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjphYm9ydER1ZVRvRmFpbGVkUmVxdWVzdChET01FeGNlcHRpb24mIGVycm9y
KQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjp0cmFuc2l0aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVk
REI6OlRyYW5zYWN0aW9uU3RhdGUgc3RhdGUpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJh
c2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlQo
IWlzRmluaXNoZWRPckZpbmlzaGluZygpKTsKICAgICBtX3N0YXRlID0gc3RhdGU7CkBAIC0yMDQs
NyArMjA0LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6dHJhbnNpdGlvbmVkVG9GaW5pc2hpbmco
SW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlIHN0YXRlKQogRXhjZXB0aW9uT3I8dm9pZD4gSURC
VHJhbnNhY3Rpb246OmFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OmFib3J0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoaXNGaW5pc2hlZE9yRmluaXNoaW5n
KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlM
aXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnYWJvcnQnIG9uICdJREJUcmFuc2FjdGlvbic6IFRo
ZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKSB9OwpAQCAtMjE3LDcgKzIx
Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQlRyYW5zYWN0aW9uOjphYm9ydCgpCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjppbnRlcm5hbEFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIWlz
RmluaXNoZWRPckZpbmlzaGluZygpKTsKIAogICAgIG1fZGF0YWJhc2UtPndpbGxBYm9ydFRyYW5z
YWN0aW9uKCp0aGlzKTsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjph
Ym9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHZvaWQgSURC
VHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMiKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKICAgICBBU1NFUlQobV9wZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5pc0VtcHR5
KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuYWJvcnRUcmFuc2FjdGlv
bigqdGhpcyk7CkBAIC0zMDksMjYgKzMwOSwyNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9y
dE9uU2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdAog
CiBjb25zdCBjaGFyKiBJREJUcmFuc2FjdGlvbjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAgICAgcmV0dXJuICJJREJUcmFuc2FjdGlvbiI7CiB9CiAKIGJvb2wg
SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAog
ewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBJREJUcmFuc2FjdGlv
bjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkgfHwgbWF5QmVHQ1RocmVhZCgpKTsK
KyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSB8fCBtYXlCZUdDVGhyZWFkKCkpOwogICAgIHJldHVybiAhbV9jb250ZXh0U3RvcHBlZCAm
JiBtX3N0YXRlICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6RmluaXNoZWQ7CiB9CiAK
IHZvaWQgSURCVHJhbnNhY3Rpb246OnN0b3AoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJU
cmFuc2FjdGlvbjo6c3RvcCAtICVzIiwgbV9pbmZvLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKIAogICAgIC8vIElEQkRhdGFiYXNlOjpzdG9wKCkgY2FsbHMgSURC
VHJhbnNhY3Rpb246OnN0b3AoKSBmb3IgZWFjaCBvZiBpdHMgYWN0aXZlIHRyYW5zYWN0aW9ucy4K
ICAgICAvLyBTaW5jZSB0aGUgb3JkZXIgb2YgY2FsbGluZyBBY3RpdmVET01PYmplY3Q6OnN0b3Ao
KSBpcyByYW5kb20sIHdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBiZWVuIHN0b3BwZWQuCkBAIC0zNDcs
MTMgKzM0NywxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkKIAogYm9vbCBJREJUcmFu
c2FjdGlvbjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHJldHVybiBtX3N0
YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6QWN0aXZlOwogfQogCiBib29sIElE
QlRyYW5zYWN0aW9uOjppc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSBjb25zdAogewotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogCiAgICAgcmV0dXJuIG1fc3RhdGUgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpD
b21taXR0aW5nCiAgICAgICAgIHx8IG1fc3RhdGUgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0
YXRlOjpBYm9ydGluZwpAQCAtMzYyLDEzICszNjIsMTMgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6
aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkgY29uc3QKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWRk
UmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIG1fb3BlblJl
cXVlc3RzLmFkZCgmcmVxdWVzdCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJl
cXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9v
cGVuUmVxdWVzdHMuY29udGFpbnMoJnJlcXVlc3QpKTsKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1v
dmUoJnJlcXVlc3QpOwogfQpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OnJlbW92ZVJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHZvaWQgSURCVHJhbnNhY3Rpb246
OnNjaGVkdWxlT3BlcmF0aW9uKFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
PiYmIG9wZXJhdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAu
Y29udGFpbnMob3BlcmF0aW9uLT5pZGVudGlmaWVyKCkpKTsKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9k
YXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1f
cGVuZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbik7CiAgICAg
bV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIFdU
Rk1vdmUob3BlcmF0aW9uKSk7CkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24+JiYKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVQZW5kaW5nT3BlcmF0aW9uVGlt
ZXIoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKCFtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICBtX3BlbmRpbmdPcGVyYXRpb25UaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZVBl
bmRpbmdPcGVyYXRpb25UaW1lcigpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpwZW5kaW5nT3BlcmF0
aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpw
ZW5kaW5nT3BlcmF0aW9uVGltZXJGaXJlZCAoJXApIiwgdGhpcyk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQo
Jm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAg
ICBpZiAoIW1fc3RhcnRlZE9uU2VydmVyKQogICAgICAgICByZXR1cm47CkBAIC00MjksOCArNDI5
LDggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cGVuZGluZ09wZXJhdGlvblRpbWVyRmlyZWQoKQog
CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJ
REJSZXN1bHREYXRhJiBkYXRhLCBJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVy
YXRpb24pCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWRJRCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9wZXJhdGlvbi5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKCZvcGVyYXRpb24ub3JpZ2luVGhy
ZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fY29tcGxldGVkT25TZXJ2ZXJR
dWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9uLCBkYXRhIH0pOwogICAgIHNjaGVkdWxlQ29tcGxldGVk
T3BlcmF0aW9uVGltZXIoKTsKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJ
REJDbAogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZUNvbXBsZXRlZE9wZXJhdGlvblRp
bWVyKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghbV9jb21wbGV0ZWRPcGVyYXRpb25UaW1l
ci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2NvbXBsZXRlZE9wZXJhdGlvblRpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVk
dWxlQ29tcGxldGVkT3BlcmF0aW9uVGltZXIoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29tcGxl
dGVkT3BlcmF0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkICglcCkiLCB0aGlzKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIGlmIChtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuaXNFbXB0eSgpIHx8IG1f
Y3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5MSw3ICs0
OTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpmaW5pc2hlZERpc3BhdGNoRXZlbnRGb3JSZXF1
ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXQoKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tbWl0Iik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAgICAgQVNTRVJUKCFpc0ZpbmlzaGVkT3JGaW5pc2hpbmcoKSk7CiAKICAgICB0cmFuc2l0
aW9uZWRUb0ZpbmlzaGluZyhJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkNvbW1pdHRpbmcp
OwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB2b2lk
IElEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
Ojpjb21taXRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVj
dGlvblByb3h5KCkuY29tbWl0VHJhbnNhY3Rpb24oKnRoaXMpOwogCkBAIC01MTksNyArNTE5LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29tbWl0T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZmluaXNoQWJv
cnRPckNvbW1pdCgpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgIT0gSW5kZXhlZERCOjpUcmFuc2Fj
dGlvblN0YXRlOjpGaW5pc2hlZCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX3N0YXRlID0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblN0YXRlOjpGaW5pc2hlZDsKIH0KQEAgLTUyNyw3ICs1MjcsNyBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjpmaW5pc2hBYm9ydE9yQ29tbWl0KCkKIHZvaWQgSURCVHJhbnNh
Y3Rpb246OmRpZFN0YXJ0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2Rh
dGFiYXNlLT5kaWRTdGFydFRyYW5zYWN0aW9uKCp0aGlzKTsKIApAQCAtNTQ1LDcgKzU0NSw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6bm90aWZ5RGlkQWJvcnQoY29uc3QgSURCRXJyb3ImIGVycm9y
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+ZGlkQWJvcnRUcmFuc2FjdGlvbigq
dGhpcyk7CiAgICAgbV9pZGJFcnJvciA9IGVycm9yOwpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246Om5vdGlmeURpZEFib3J0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmRpZEFib3J0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZEFib3J0Iik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBpZiAobV9zdGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkZpbmlz
aGVkKQogICAgICAgICByZXR1cm47CkBAIC01NzMsNyArNTczLDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6ZGlkQWJvcnQoY29uc3QgSURCRXJyb3ImIGVycm9yKQogdm9pZCBJREJUcmFuc2FjdGlv
bjo6ZGlkQ29tbWl0KGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OmRpZENvbW1pdCIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCht
X3N0YXRlID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6Q29tbWl0dGluZyk7CiAKICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTU5MCwyMSArNTkwLDIxIEBAIHZvaWQgSURCVHJh
bnNhY3Rpb246OmRpZENvbW1pdChjb25zdCBJREJFcnJvciYgZXJyb3IpCiB2b2lkIElEQlRyYW5z
YWN0aW9uOjpmaXJlT25Db21wbGV0ZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpmaXJlT25Db21wbGV0ZSIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIGVucXVldWVFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb21wbGV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
IH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQoKQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZmlyZU9uQWJvcnQiKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBl
bnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwg
ZmFsc2UpKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KFJlZjxFdmVu
dD4mJiBldmVudCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBJbmRleGVkREI6OlRyYW5zYWN0
aW9uU3RhdGU6OkZpbmlzaGVkKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIHx8IG1fY29udGV4dFN0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTYx
Nyw3ICs2MTcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBl
dmVudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZl
bnQiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CiAgICAgQVNTRVJUKGV2ZW50LnRhcmdl
dCgpID09IHRoaXMpOwpAQCAtNjQ3LDcgKzY0Nyw3IEBAIFJlZjxJREJPYmplY3RTdG9yZT4gSURC
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlIik7
CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9y
ZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKIApAQCAtNjY0LDcgKzY2NCw3IEBAIFJlZjxJREJP
YmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlT25T
ZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNT
RVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94
eSgpLmNyZWF0ZU9iamVjdFN0b3JlKG9wZXJhdGlvbiwgaW5mbyk7CkBAIC02NzMsNyArNjczLDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRl
T2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVP
blNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVz
dWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6Q3JlYXRlT2JqZWN0U3RvcmVTdWNjZXNz
IHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApAQCAt
Njg1LDcgKzY4NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlKElE
Qk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nCiAKICAgICBBU1NFUlQoaXNW
ZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5jb250YWlu
cyhvYmplY3RTdG9yZS5pbmZvKCkubmFtZSgpKSk7CiAgICAgQVNTRVJUKCFtX3JlZmVyZW5jZWRP
YmplY3RTdG9yZXMuY29udGFpbnMobmV3TmFtZSkpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlKElEQk9iamVjdFN0b3JlJiBvYmplY3RT
dG9yZSwgY29uc3QgU3RyaW5nCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9y
ZU9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29u
c3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3Rv
cmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7
CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5yZW5hbWVPYmplY3RTdG9yZShv
cGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03MTEsNyArNzEx
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVu
YW1lT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lT2JqZWN0U3Rv
cmVPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwg
cmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6UmVuYW1lT2JqZWN0U3RvcmVTdWNj
ZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApA
QCAtNzE5LDcgKzcxOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4gSURCVHJhbnNhY3Rp
b246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCIpOwogICAgIEFTU0VSVChpc1Zl
cnNpb25DaGFuZ2UoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03MzMsNyArNzMzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3IKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25T
ZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJ
REJJbmRleEluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpjcmVhdGVJbmRleE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9y
aWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lv
bkNoYW5nZSgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLmNyZWF0ZUlu
ZGV4KG9wZXJhdGlvbiwgaW5mbyk7CkBAIC03NDIsNyArNzQyLDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXQKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIoY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAg
IGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpDcmVhdGVJbmRleFN1Y2Nl
c3MpCiAgICAgICAgIHJldHVybjsKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpyZW5hbWVJbmRleChJREJJbmRleCYgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkK
IAogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlQobV9yZWZlcmVuY2VkT2Jq
ZWN0U3RvcmVzLmNvbnRhaW5zKGluZGV4Lm9iamVjdFN0b3JlKCkuaW5mbygpLm5hbWUoKSkpOwog
ICAgIEFTU0VSVChtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuZ2V0KGluZGV4Lm9iamVjdFN0b3Jl
KCkuaW5mbygpLm5hbWUoKSkgPT0gJmluZGV4Lm9iamVjdFN0b3JlKCkpOwpAQCAtNzgxLDcgKzc4
MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElEQkluZGV4JiBpbmRleCwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXhP
blNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0
IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IHVpbnQ2NF90JiBpbmRleElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBB
U1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblBy
b3h5KCkucmVuYW1lSW5kZXgob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
SWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC03OTAsMTQgKzc5MCwxNCBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24mIG9wZXJhdAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlcihj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lSW5kZXhPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJU
KCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0
VHlwZTo6UmVuYW1lSW5kZXhTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3Vs
dFR5cGU6OkVycm9yKTsKIH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3Rv
cmUsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2Rh
dGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYg
KGluZm8uY3Vyc29yVHlwZSgpID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5T25seSkKICAg
ICAgICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3Ioc3RhdGUsIElEQkN1cnNvcjo6Y3JlYXRl
KCp0aGlzLCBvYmplY3RTdG9yZSwgaW5mbykpOwpAQCAtODA4LDcgKzgwOCw3IEBAIFJlZjxJREJS
ZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRlJiBzdGF0
ZSwgSURCT2JqZWN0U3RvCiBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RP
cGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3Vy
c29ySW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJl
cXVlc3RPcGVuQ3Vyc29yIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBpZiAoaW5mby5jdXJzb3JUeXBl
KCkgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQogICAgICAgICByZXR1cm4gZG9S
ZXF1ZXN0T3BlbkN1cnNvcihzdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIGluZGV4LCBp
bmZvKSk7CkBAIC04MTksNyArODE5LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW4KIFJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6ZG9SZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUm
IHN0YXRlLCBSZWY8SURCQ3Vyc29yPiYmIGN1cnNvcikKIHsKICAgICBBU1NFUlQoaXNBY3RpdmUo
KSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KSk7CiAKQEAgLTgzNSw3ICs4MzUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246
OmRvUmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPElEQkN1cgogdm9pZCBJ
REJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZlciIpOwotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkub3BlbkN1cnNvcihv
cGVyYXRpb24sIGluZm8pOwogfQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246Om9wZW5DdXJzb3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBv
cGVyYXRpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIoSURCUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlciIpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgY29tcGxldGVDdXJzb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdERh
dGEpOwogfQpAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVD
dXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhCiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yIik7CiAgICAgQVNT
RVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVChjdXJzb3IucmVxdWVzdCgpKTsKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAg
IEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKIAogICAgIGFkZFJlcXVlc3QoKmN1cnNvci5yZXF1ZXN0KCkpOwogCkBAIC04NjUsNyArODY1
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImIGN1cnNv
ciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEKIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJh
dGVDdXJzb3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRp
b24sIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyIik7Ci0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBB
U1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5pdGVyYXRlQ3Vyc29yKG9wZXJh
dGlvbiwgZGF0YSk7CiB9CkBAIC04NzMsNyArODczLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
aXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXIKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3JPblNlcnZlcihJREJSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyIik7
Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJ
RCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKICAgICBjb21wbGV0ZUN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0
RGF0YSk7CiB9CkBAIC04ODIsNyArODgyLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJgogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0
b3JlUmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAg
IEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtOTAxLDcgKzkwMSw3
IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVj
b3JkcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzIik7CiAgICAgQVNTRVJUKGlzQWN0
aXZlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZz
dGF0ZSkpOwogCkBAIC05MTksNyArOTE5LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmdldEFsbFJlY29yZHNPblNlcnZlcihJREJDbGllbnQ6OlRyYW5z
YWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBn
ZXRBbGxSZWNvcmRzRGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246
OmdldEFsbFJlY29yZHNPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRhYmFzZS0+
Y29ubmVjdGlvblByb3h5KCkuZ2V0QWxsUmVjb3JkcyhvcGVyYXRpb24sIGdldEFsbFJlY29yZHNE
YXRhKTsKIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRBbGxS
ZWNvcmRzT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Blcgogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyKElEQlJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIiKTsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwor
ICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKIAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJv
cikgewogICAgICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVxdWVzdCwgcmVzdWx0RGF0
YSk7CkBAIC05NTQsNyArOTU0LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3IKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQiKTsKICAgICBBU1NF
UlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFnZXRSZWNvcmREYXRhLmtleVJhbmdlRGF0YS5p
c051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZz
dGF0ZSkpOwogCkBAIC05NzIsNyArOTcyLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3IKIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlKEV4ZWNTdGF0ZSYg
c3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZSIpOwot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQo
KSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogCiAgICAgcmV0dXJuIHJlcXVlc3RJbmRleFJlY29yZChzdGF0ZSwgaW5kZXgs
IEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpWYWx1ZSwgcmFuZ2UpOwogfQpAQCAtOTgwLDcg
Kzk4MCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVl
KEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRlCiBSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICByZXR1
cm4gcmVxdWVzdEluZGV4UmVjb3JkKHN0YXRlLCBpbmRleCwgSW5kZXhlZERCOjpJbmRleFJlY29y
ZFR5cGU6OktleSwgcmFuZ2UpOwogfQpAQCAtOTkwLDcgKzk5MCw3IEBAIFJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElE
QkluZGV4JiBpCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
VmFsdWUiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051
bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0
ZSkpOwogCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RJbmRleFJlY29yZChFeGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaQogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmRE
YXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25T
ZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgp
LmdldFJlY29yZChvcGVyYXRpb24sIGdldFJlY29yZERhdGEpOwogfQpAQCAtMTAxNiw3ICsxMDE2
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW8KIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdl
dFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRSZWNvcmRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKHJlc3VsdERhdGEudHlw
ZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKSB7CiAgICAgICAgIGNvbXBsZXRlTm9uY3Vyc29y
UmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKQEAgLTEwNTEsNyArMTA1MSw3IEBAIFJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEV4ZWNTdGF0ZSYgc3RhdGUs
IElEQk9iamVjdFN0b3JlJiBvCiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0Q291bnQgKElEQk9iamVjdFN0b3JlKSIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsK
ICAgICBBU1NFUlQoIXJhbmdlLmlzTnVsbCk7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBBU1NFUlRfVU5V
U0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTEwNjksNyArMTA2OSw3IEBAIFJlZjxJ
REJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KEV4ZWNTdGF0ZSYgc3RhdGUs
IElEQkluZGV4JiBpbmRleCwKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJl
cXVlc3RDb3VudCAoSURCSW5kZXgpIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFT
U0VSVCghcmFuZ2UuaXNOdWxsKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5k
ZXgmIGluZGV4LAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlcihJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpnZXRD
b3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9u
UHJveHkoKS5nZXRDb3VudChvcGVyYXRpb24sIGtleVJhbmdlKTsKIH0KQEAgLTEwOTMsNyArMTA5
Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRDb3VudE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRDb3VudE9uU2VydmVyIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICByZXF1ZXN0LnNldFJlc3VsdChy
ZXN1bHREYXRhLnJlc3VsdEludGVnZXIoKSk7CiAgICAgY29tcGxldGVOb25jdXJzb3JSZXF1ZXN0
KHJlcXVlc3QsIHJlc3VsdERhdGEpOwpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgUmVmPElEQlJlcXVl
c3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUs
IElEQk9iamVjdFMKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RE
ZWxldGVSZWNvcmQiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5n
ZS5pc051bGwpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRl
KCZzdGF0ZSkpOwogCkBAIC0xMTE5LDcgKzExMTksNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0
Uwogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRlUmVj
b3JkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLmRlbGV0ZVJlY29yZChvcGVyYXRpb24sIGtleVJhbmdlKTsKIH0KQEAgLTExMjcsNyAr
MTEyNyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZVJlY29yZE9uU2VydmVyKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpk
aWREZWxldGVSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6ZGlkRGVsZXRlUmVjb3JkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIHJlcXVlc3Qu
c2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKICAgICBjb21wbGV0ZU5vbmN1cnNvclJlcXVlc3QocmVx
dWVzdCwgcmVzdWx0RGF0YSk7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKEV4ZWNTdGF0ZSYgc3RhdGUs
IElEQk9iagogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENs
ZWFyT2JqZWN0U3RvcmUiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NF
UlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAK
ICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKQEAgLTExNTUsNyAr
MTE1NSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpj
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyKQogewogICAg
IExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVy
Iik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5jbGVh
ck9iamVjdFN0b3JlKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIH0KQEAgLTEx
NjMsNyArMTE2Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmVPblNl
cnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OmRpZENsZWFyT2JqZWN0U3RvcmVPblNlcnZlciIpOwotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNT
RVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
CiAgICAgcmVxdWVzdC5zZXRSZXN1bHRUb1VuZGVmaW5lZCgpOwogICAgIGNvbXBsZXRlTm9uY3Vy
c29yUmVxdWVzdChyZXF1ZXN0LCByZXN1bHREYXRhKTsKQEAgLTExNzUsNyArMTE3NSw3IEBAIFJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKEV4ZWNTdGF0ZSYg
c3RhdGUsIElEQk9iamVjdFN0b3JlCiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VS
VCghaXNSZWFkT25seSgpKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUuaW5mbygpLmF1dG9JbmNy
ZW1lbnQoKSB8fCBrZXkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKCZzdGF0ZSkpOwogCkBAIC0xMTkxLDcgKzExOTEsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZChFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmpl
Y3RTdG9yZQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIFJlZlB0cjxJREJLZXk+IGtleSwgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0
U3RvcmVPdmVyd3JpdGVNb2RlJiBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlciIpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZvcmlnaW5UaHJlYWQo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghaXNSZWFkT25seSgpKTsKICAg
ICBBU1NFUlQodmFsdWUpOwogCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXJhdGlvbgogICAgIG9wZXJhdGlvbi5zZXROZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIoZmFsc2Up
OwogCiAgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJvdGVjdGVkT3BlcmF0aW9uID0gUmVmPElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+KG9wZXJhdGlvbiksIGtleURhdGEgPSBJREJLZXlE
YXRhKGtleS5nZXQoKSkuaXNvbGF0ZWRDb3B5KCksIG92ZXJ3cml0ZU1vZGVdKGNvbnN0IElEQlZh
bHVlJiBpZGJWYWx1ZSkgbXV0YWJsZSB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gb3JpZ2luVGhyZWFkSUQoKSk7CisgICAgICAgIEFTU0VSVCgmb3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgaWYgKGlkYlZhbHVlLmRhdGEoKS5kYXRhKCkpIHsKICAgICAgICAgICAgIG1fZGF0YWJh
c2UtPmNvbm5lY3Rpb25Qcm94eSgpLnB1dE9yQWRkKHByb3RlY3RlZE9wZXJhdGlvbi5nZXQoKSwg
V1RGTW92ZShrZXlEYXRhKSwgaWRiVmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwpAQCAtMTI0Myw3ICsx
MjQzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KIHZvaWQgSURCVHJhbnNhY3Rpb246OmRp
ZFB1dE9yQWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
ZFB1dE9yQWRkT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0
YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2lu
VGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIGlmIChhdXRvKiByZXN1bHQg
PSByZXN1bHREYXRhLnJlc3VsdEtleSgpKQogICAgICAgICByZXF1ZXN0LnNldFJlc3VsdCgqcmVz
dWx0KTsKQEAgLTEyNTUsNyArMTI1NSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZFB1dE9y
QWRkT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0CiB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9i
amVjdFN0b3JlIik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5v
cmlnaW5UaHJlYWRJRCgpKTsKKyAgICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsK
IAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsK
QEAgLTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0
b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIiKTsK
ICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgbV9kYXRh
YmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZGVsZXRlT2JqZWN0U3RvcmUob3BlcmF0aW9uLCBvYmpl
Y3RTdG9yZU5hbWUpOwogfQpAQCAtMTI4MiwxNCArMTI4MiwxNCBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb24mCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVy
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKKyAg
ICBBU1NFUlQoJm1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJ
REJSZXN1bHRUeXBlOjpEZWxldGVPYmplY3RTdG9yZVN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBl
KCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpk
ZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
aW5kZXhOYW1lKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGVsZXRl
SW5kZXgiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogCiAg
ICAgTE9HKEluZGV4ZWREQk9wZXJhdGlvbnMsICJJREIgZGVsZXRlIGluZGV4IG9wZXJhdGlvbjog
JXMgKCUiIFBSSXU2NCAiKSIsIGluZGV4TmFtZS51dGY4KCkuZGF0YSgpLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpOwpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVs
ZXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXQK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2
ZXIiKTsKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZt
X2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAg
bV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuZGVsZXRlSW5kZXgob3BlcmF0aW9uLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSk7CiB9CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24mIG9wZXJhdAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlSW5k
ZXhPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlSW5kZXhPblNlcnZlciIpOwotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7
CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVzdWx0RGF0YS50eXBlKCkg
PT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5kZXhTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgp
ID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIApAQCAtMTMxNiw4ICsxMzE2LDggQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29tcGxldGVkT25DbGllbnQoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246Om9wZXJhdGlvbkNvbXBsZXRlZE9uQ2xpZW50Iik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3BlcmF0aW9uLm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgm
bV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICBB
U1NFUlQoJm9wZXJhdGlvbi5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
ICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmdldChvcGVyYXRpb24uaWRlbnRp
ZmllcigpKSA9PSAmb3BlcmF0aW9uKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJhdGlv
bnNJblByb2dyZXNzUXVldWUuZmlyc3QoKSA9PSAmb3BlcmF0aW9uKTsKIApAQCAtMTMzMCwxNCAr
MTMzMCwxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPbkNsaWVu
dChJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJgogdm9pZCBJREJUcmFuc2FjdGlvbjo6
ZXN0YWJsaXNoT25TZXJ2ZXIoKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6ZXN0YWJsaXNoT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
ZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOworICAgIEFTU0VSVCgmbV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIG1fZGF0YWJhc2UtPmNv
bm5lY3Rpb25Qcm94eSgpLmVzdGFibGlzaFRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogdm9pZCBJ
REJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNl
LT5vcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKGlzRmlu
aXNoZWRPckZpbmlzaGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0xMzQ3LDcgKzEzNDcsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjphY3RpdmF0ZSgpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRlYWN0aXZhdGUoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFz
ZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKCZtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblN0YXRlOjpBY3RpdmUpCiAgICAgICAgIG1fc3RhdGUgPSBJbmRleGVk
REI6OlRyYW5zYWN0aW9uU3RhdGU6OkluYWN0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNw
cAppbmRleCA5ZWIzZjI1YThkOTJhMGYzNzc1MTQ2OTk5ZWU4OTcxMjQ1YzExMjM5Li43NDJhNzdh
NGQ5ODVjNTQwZWNkMmIxN2IzMjExNTAyZGFmY2YyZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblBy
b3h5LmNwcApAQCAtNTE5LDEyICs1MTksMTIgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmZv
cmdldEFjdGl2ZU9wZXJhdGlvbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFuc2FjdGlvbk8KIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4KIHZvaWQgcmVtb3Zl
SXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQoSGFzaE1hcDxLZXlUeXBlLCBWYWx1ZVR5cGU+JiBt
YXApCiB7Ci0gICAgYXV0byBjdXJyZW50VGhyZWFkSUQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAg
YXV0byYgY3VycmVudFRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogCiAgICAgVmVjdG9yPEtl
eVR5cGU+IGtleXM7CiAgICAga2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1hcC5zaXplKCkp
OwogICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtYXApIHsKLSAgICAgICAgaWYgKGl0ZXJhdG9y
LnZhbHVlLT5vcmlnaW5UaHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWRJRCkKKyAgICAgICAgaWYg
KCZpdGVyYXRvci52YWx1ZS0+b3JpZ2luVGhyZWFkKCkgPT0gJmN1cnJlbnRUaHJlYWQpCiAgICAg
ICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChpdGVyYXRvci5rZXkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBjNzI0NTMxYjJlMWU1OTYyNDVjNTY5M2I1NjU1
NWE5ZjY4ZGMzNmE1Li5lODU1MTI1MzFiNDY0ZDNkMzYxZTM0YjNiODlhYWMxMzZkMGIxZmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtNTEsMTIgKzUxLDEyIEBAIGNsYXNzIFRy
YW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0
aW9uT3BlcmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25PcGVyYXRp
b24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkSUQgPT0gY3VycmVudFRo
cmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBwZXJmb3JtKCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFT
U0VSVChtX29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAg
ICBBU1NFUlQobV9wZXJmb3JtRnVuY3Rpb24pOwogICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbigp
OwogICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9IHsgfTsKQEAgLTY0LDcgKzY0LDcgQEAgY2xh
c3MgVHJhbnNhY3Rpb25PcGVyYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJh
bnNhY3Rpb25PcGVyYXRpb24+IHsKIAogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tcGxldGVPblRo
aXNUaHJlYWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVCht
X29yaWdpblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAgICBtX3Ry
YW5zYWN0aW9uLT5vcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihkYXRhLCAqdGhpcyk7CiAgICAg
fQogCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiB7CiAgICAgewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIGlmIChtX29yaWdpblRocmVh
ZElEID09IGN1cnJlbnRUaHJlYWQoKSkKKyAgICAgICAgaWYgKG1fb3JpZ2luVGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0NvbXBsZXRl
T25UaGlzVGhyZWFkKGRhdGEpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fdHJhbnNh
Y3Rpb24tPnBlcmZvcm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCp0aGlzLCAmVHJhbnNhY3Rpb25P
cGVyYXRpb246OnRyYW5zaXRpb25Ub0NvbXBsZXRlT25UaGlzVGhyZWFkLCBkYXRhKTsKQEAgLTgz
LDcgKzgzLDcgQEAgY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb24gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHsKIAogICAgIHZvaWQgZG9Db21wbGV0
ZShjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3Jp
Z2luVGhyZWFkSUQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2lu
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICAgICAgLy8gRHVlIHRv
IHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuIHRoZSBzZXJ2ZXIgc2VuZGluZyBhbiAib3BlcmF0aW9u
IGNvbXBsZXRlIiBtZXNzYWdlIGFuZCB0aGUgY2xpZW50CiAgICAgICAgIC8vIGZvcmNlZnVsbHkg
YWJvcnRpbmcgYW4gb3BlcmF0aW9uLCBpdCdzIHVuYXZvaWRhYmxlIHRoYXQgdGhpcyBtZXRob2Qg
bWlnaHQgYmUgY2FsbGVkIHR3aWNlLgpAQCAtMTAyLDcgKzEwMiw3IEBAIGNsYXNzIFRyYW5zYWN0
aW9uT3BlcmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRyYW5zYWN0aW9uT3Bl
cmF0aW9uPiB7CiAKICAgICBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAotICAgIFRocmVhZElkZW50aWZpZXIg
b3JpZ2luVGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZElEOyB9CisgICAg
VGhyZWFkJiBvcmlnaW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZC5nZXQo
KTsgfQogCiAgICAgSURCUmVxdWVzdCogaWRiUmVxdWVzdCgpIHsgcmV0dXJuIG1faWRiUmVxdWVz
dC5nZXQoKTsgfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRp
b24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHsK
ICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKSB7IHJldHVybiBtX3RyYW5zYWN0aW9u
LmdldCgpOyB9CiAgICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgaW5kZXhSZWNvcmRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleFJlY29yZFR5cGU7IH0KIAotICAgIFRocmVhZElkZW50
aWZpZXIgbV9vcmlnaW5UaHJlYWRJRCB7IGN1cnJlbnRUaHJlYWQoKSB9OworICAgIFJlZjxUaHJl
YWQ+IG1fb3JpZ2luVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gbV9pZGJSZXF1ZXN0OwogICAgIGJvb2wgbV9uZXh0UmVxdWVzdENhbkdvVG9TZXJ2
ZXIgeyB0cnVlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCmluZGV4IGQ5NTA0N2M5MDMwNTFjMGJjM2Q1ZTYzOGIyN2I0NTg1NDI0
YjA1MzIuLmExMTAxYWU4ZTg4Y2VjZWUxM2E3ZTc5ZTg2YzVjODgyNDFmMDFjODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEw
MCw5ICsxMDAsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLS8vIEZJWE1FOiBjaGVjayB0aGUgcHJvcGVyIHdheSB0byBy
ZWZlcmVuY2UgYW4gdW5kZWZpbmVkIHRocmVhZCBJRAotY29uc3QgaW50IFVuZGVmaW5lZFRocmVh
ZElkZW50aWZpZXIgPSAweGZmZmZmZmZmOwotCiBjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzYsNyArMTMzLDYg
QEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9ldmVudFF1ZXVlKHN0ZDo6bWFr
ZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKLSAgICAsIG1fZ3JhcGhPd25lclRo
cmVhZChVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyKQogewogICAgIGNvbnN0cnVjdENvbW1vbigp
OwogCkBAIC0xNTIsNyArMTQ4LDYgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1l
bnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICAgICAsIG1f
aXNPZmZsaW5lQ29udGV4dCh0cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3Vu
aXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQotICAgICwgbV9ncmFwaE93bmVyVGhyZWFk
KFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIpCiB7CiAgICAgY29uc3RydWN0Q29tbW9uKCk7CiAK
QEAgLTY5NiwyMyArNjkxLDIzIEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpsb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykKICAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sgaW4gcmVhbC10aW1l
IGF1ZGlvIHRocmVhZC4KICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgVGhyZWFk
SWRlbnRpZmllciB0aGlzVGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgIFRocmVhZCYgdGhp
c1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogCi0gICAgaWYgKHRoaXNUaHJlYWQgPT0gbV9n
cmFwaE93bmVyVGhyZWFkKSB7CisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRo
cmVhZCkgewogICAgICAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGxvY2suCiAgICAgICAgIG11
c3RSZWxlYXNlTG9jayA9IGZhbHNlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEFjcXVpcmUg
dGhlIGxvY2suCiAgICAgICAgIG1fY29udGV4dEdyYXBoTXV0ZXgubG9jaygpOwotICAgICAgICBt
X2dyYXBoT3duZXJUaHJlYWQgPSB0aGlzVGhyZWFkOworICAgICAgICBtX2dyYXBoT3duZXJUaHJl
YWQgPSAmdGhpc1RocmVhZDsKICAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gdHJ1ZTsKICAgICB9
CiB9CiAKIGJvb2wgQXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykK
IHsKLSAgICBUaHJlYWRJZGVudGlmaWVyIHRoaXNUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Ci0g
ICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gdGhpc1RocmVhZCA9PSBhdWRpb1RocmVhZCgpOworICAg
IFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNBdWRp
b1RocmVhZCA9ICZ0aGlzVGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CiAKICAgICAvLyBUcnkgdG8g
Y2F0Y2ggY2FzZXMgb2YgdXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91bGQg
dXNlIHJlZ3VsYXIgbG9jay4KICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlvVGhy
ZWFkRmluaXNoZWQoKSk7CkBAIC03MjUsNyArNzIwLDcgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OnRy
eUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQogICAgIAogICAgIGJvb2wgaGFzTG9jazsKICAg
ICAKLSAgICBpZiAodGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICBpZiAo
JnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CiAgICAgICAgIC8vIFRocmVhZCBh
bHJlYWR5IGhhcyB0aGUgbG9jay4KICAgICAgICAgaGFzTG9jayA9IHRydWU7CiAgICAgICAgIG11
c3RSZWxlYXNlTG9jayA9IGZhbHNlOwpAQCAtNzM0LDcgKzcyOSw3IEBAIGJvb2wgQXVkaW9Db250
ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykKICAgICAgICAgaGFzTG9jayA9IG1f
Y29udGV4dEdyYXBoTXV0ZXgudHJ5TG9jaygpOwogICAgICAgICAKICAgICAgICAgaWYgKGhhc0xv
Y2spCi0gICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSB0aGlzVGhyZWFkOworICAgICAg
ICAgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CiAKICAgICAgICAgbXVzdFJl
bGVhc2VMb2NrID0gaGFzTG9jazsKICAgICB9CkBAIC03NDQsMjAgKzczOSwyMCBAQCBib29sIEF1
ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCiAKIHZvaWQgQXVkaW9D
b250ZXh0Ojp1bmxvY2soKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9ncmFw
aE93bmVyVGhyZWFkKTsKKyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6
OmN1cnJlbnQoKSk7CiAKLSAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBVbmRlZmluZWRUaHJlYWRJ
ZGVudGlmaWVyOworICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IG51bGxwdHI7CiAgICAgbV9jb250
ZXh0R3JhcGhNdXRleC51bmxvY2soKTsKIH0KIAogYm9vbCBBdWRpb0NvbnRleHQ6OmlzQXVkaW9U
aHJlYWQoKSBjb25zdAogewotICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gbV9hdWRpb1Ro
cmVhZDsKKyAgICByZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7CiB9
CiAKIGJvb2wgQXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIoKSBjb25zdAogewotICAgIHJldHVy
biBjdXJyZW50VGhyZWFkKCkgPT0gbV9ncmFwaE93bmVyVGhyZWFkOworICAgIHJldHVybiBtX2dy
YXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOwogfQogCiB2b2lkIEF1ZGlvQ29u
dGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqIG5vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA0NzRlNjg3YWJj
ODAwOThhN2VmYzM5NGQyNTQ4N2M0OGRmZTBlM2U0Li4yOGVkYmNiMjVmMmM0NDcyZjgyYWQ0NmFh
NjNiODVlZWI0ZTM2OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmgKQEAgLTE3OCw4ICsxNzgsOCBAQCBjbGFzcyBBdWRpb0NvbnRleHQgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9D
bwogICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6CiAgICAgLy8KICAgICAK
LSAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZElkZW50aWZpZXIgdGhyZWFkKSB7IG1fYXVk
aW9UaHJlYWQgPSB0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3QgaW5pdGlhbGl6
ZWQgb3IgdGhlIHNhbWUKLSAgICBUaHJlYWRJZGVudGlmaWVyIGF1ZGlvVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFk
JiB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVp
dGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFk
KCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQogICAgIGJvb2wgaXNBdWRpb1RocmVh
ZCgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRo
cmVhZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgpAQCAtMzgxLDggKzM4MSwx
MCBAQCBjbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9DbwogCiAgICAgLy8gR3JhcGggbG9ja2luZy4KICAg
ICBMb2NrIG1fY29udGV4dEdyYXBoTXV0ZXg7Ci0gICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmll
ciBtX2F1ZGlvVGhyZWFkIHsgMCB9OwotICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9n
cmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUg
dGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBVbmRlZmluZWRUaHJlYWRJZGVudGlm
aWVyCisgICAgLy8gRklYTUU6IFVzaW5nIHZvbGF0aWxlIHNlZW1zIGluY29ycmVjdC4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzMyCisgICAgVGhy
ZWFkKiB2b2xhdGlsZSBtX2F1ZGlvVGhyZWFkIHsgbnVsbHB0ciB9OworICAgIFRocmVhZCogdm9s
YXRpbGUgbV9ncmFwaE93bmVyVGhyZWFkIHsgbnVsbHB0ciB9OyAvLyBpZiB0aGUgbG9jayBpcyBo
ZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBu
dWxscHRyLgogCiAgICAgQXN5bmNBdWRpb0RlY29kZXIgbV9hdWRpb0RlY29kZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKaW5kZXggNTExMjgxODUxODRmM2NjYjVhNWQwZjhlOTAwMzc2MWU5YTM1MGM3Yy4u
NjI5NzY2YzNiOGU3NWNhZTAxMTFhMzdhMzNjOGZmYmUyOGYxYjk3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKEF1
ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnUKICAgICAvLyBUaGlz
IHdpbGwgdGFrZSBjYXJlIG9mIGFsbCBBdWRpb05vZGVzIGJlY2F1c2UgdGhleSBhbGwgcHJvY2Vz
cyB3aXRoaW4gdGhpcyBzY29wZS4KICAgICBEZW5vcm1hbERpc2FibGVyIGRlbm9ybWFsRGlzYWJs
ZXI7CiAgICAgCi0gICAgY29udGV4dCgpLnNldEF1ZGlvVGhyZWFkKGN1cnJlbnRUaHJlYWQoKSk7
CisgICAgY29udGV4dCgpLnNldEF1ZGlvVGhyZWFkKFRocmVhZDo6Y3VycmVudCgpKTsKICAgICAK
ICAgICBpZiAoIWNvbnRleHQoKS5pc0luaXRpYWxpemVkKCkpIHsKICAgICAgICAgZGVzdGluYXRp
b25CdXMtPnplcm8oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAKaW5kZXggNzgzZjkyMWYxMjdhNWEzNGVjZWI1OGFjNmQ1YWE4ZGYzMzZiMjFk
YS4uYmRlY2ZhMDE2ZTNlNzBlNzE2NWNmMDgyM2M4NjYxNzkyYzRiYzFkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTI4Nyw3ICsy
ODcsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAKIHZvaWQgRGF0YWJhc2U6OnBlcmZvcm1D
bG9zZSgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBkYXRhYmFzZVRocmVhZCgp
LmdldFRocmVhZElEKCkpOworICAgIEFTU0VSVChkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwpAQCAtNzY4LDcgKzc2OCw3IEBAIFNl
Y3VyaXR5T3JpZ2luRGF0YSBEYXRhYmFzZTo6c2VjdXJpdHlPcmlnaW4oKQogewogICAgIGlmICht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKQogICAgICAgICByZXR1
cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFk
U2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwotICAgIGlmIChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJh
c2VUaHJlYWQoKS5nZXRUaHJlYWRJRCgpKQorICAgIGlmIChkYXRhYmFzZVRocmVhZCgpLmdldFRo
cmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdp
bi5nZXQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oCmlu
ZGV4IGE0ZTk5YWQwYmRmZjkwNmIwNmIzZDdmYjhjNDdkMzFjYzk0YTg0MjUuLjZhOTZlMjNmMDc1
NWYwNWQzMDZhY2RjZjkxZDZiNWI1YTI2ZDU4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaApAQCAtMzUsMTcgKzM1LDM1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0YWJhc2VEZXRhaWxzIHsKIHB1Ymxp
YzoKLSAgICBEYXRhYmFzZURldGFpbHMoKQotICAgICAgICA6IG1fZXhwZWN0ZWRVc2FnZSgwKQot
ICAgICAgICAsIG1fY3VycmVudFVzYWdlKDApCi0gICAgICAgICwgbV9jcmVhdGlvblRpbWUoMCkK
LSAgICAgICAgLCBtX21vZGlmaWNhdGlvblRpbWUoMCkKKyAgICBEYXRhYmFzZURldGFpbHMoKSA9
IGRlZmF1bHQ7CisKKyAgICBEYXRhYmFzZURldGFpbHMoY29uc3QgRGF0YWJhc2VEZXRhaWxzJiBk
ZXRhaWxzKQorICAgICAgICA6IG1fbmFtZShkZXRhaWxzLm1fbmFtZSkKKyAgICAgICAgLCBtX2Rp
c3BsYXlOYW1lKGRldGFpbHMubV9kaXNwbGF5TmFtZSkKKyAgICAgICAgLCBtX2V4cGVjdGVkVXNh
Z2UoZGV0YWlscy5tX2V4cGVjdGVkVXNhZ2UpCisgICAgICAgICwgbV9jdXJyZW50VXNhZ2UoZGV0
YWlscy5tX2N1cnJlbnRVc2FnZSkKKyAgICAgICAgLCBtX2NyZWF0aW9uVGltZShkZXRhaWxzLm1f
Y3JlYXRpb25UaW1lKQorICAgICAgICAsIG1fbW9kaWZpY2F0aW9uVGltZShkZXRhaWxzLm1fbW9k
aWZpY2F0aW9uVGltZSkKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV90aHJlYWRJRChUaHJl
YWQ6OmN1cnJlbnRJRCgpKQorICAgICAgICAsIG1fdGhyZWFkKGRldGFpbHMubV90aHJlYWQuY29w
eVJlZigpKQogI2VuZGlmCiAgICAgewogICAgIH0KIAorICAgIERhdGFiYXNlRGV0YWlscyYgb3Bl
cmF0b3I9KGNvbnN0IERhdGFiYXNlRGV0YWlscyYgZGV0YWlscykKKyAgICB7CisgICAgICAgIG1f
bmFtZSA9IGRldGFpbHMubV9uYW1lOworICAgICAgICBtX2Rpc3BsYXlOYW1lID0gZGV0YWlscy5t
X2Rpc3BsYXlOYW1lOworICAgICAgICBtX2V4cGVjdGVkVXNhZ2UgPSBkZXRhaWxzLm1fZXhwZWN0
ZWRVc2FnZTsKKyAgICAgICAgbV9jdXJyZW50VXNhZ2UgPSBkZXRhaWxzLm1fY3VycmVudFVzYWdl
OworICAgICAgICBtX2NyZWF0aW9uVGltZSA9IGRldGFpbHMubV9jcmVhdGlvblRpbWU7CisgICAg
ICAgIG1fbW9kaWZpY2F0aW9uVGltZSA9IGRldGFpbHMubV9tb2RpZmljYXRpb25UaW1lOworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgbV90aHJlYWQgPSBkZXRhaWxzLm1fdGhyZWFkLmNvcHlSZWYo
KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgRGF0YWJhc2VE
ZXRhaWxzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25n
IGN1cnJlbnRVc2FnZSwgZG91YmxlIGNyZWF0aW9uVGltZSwgZG91YmxlIG1vZGlmaWNhdGlvblRp
bWUpCiAgICAgICAgIDogbV9uYW1lKGRhdGFiYXNlTmFtZSkKICAgICAgICAgLCBtX2Rpc3BsYXlO
YW1lKGRpc3BsYXlOYW1lKQpAQCAtNTMsOSArNzEsNiBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMg
ewogICAgICAgICAsIG1fY3VycmVudFVzYWdlKGN1cnJlbnRVc2FnZSkKICAgICAgICAgLCBtX2Ny
ZWF0aW9uVGltZShjcmVhdGlvblRpbWUpCiAgICAgICAgICwgbV9tb2RpZmljYXRpb25UaW1lKG1v
ZGlmaWNhdGlvblRpbWUpCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICAsIG1fdGhyZWFkSUQoVGhy
ZWFkOjpjdXJyZW50SUQoKSkKLSNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTY2LDE4ICs4MSwx
OCBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAgIGRvdWJsZSBjcmVhdGlvblRpbWUoKSBj
b25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQogICAgIGRvdWJsZSBtb2RpZmljYXRpb25U
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1lOyB9CiAjaWZuZGVmIE5ERUJV
RwotICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVh
ZElEOyB9CisgICAgVGhyZWFkJiB0aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZC5nZXQo
KTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcg
bV9kaXNwbGF5TmFtZTsKLSAgICB1aW50NjRfdCBtX2V4cGVjdGVkVXNhZ2U7Ci0gICAgdWludDY0
X3QgbV9jdXJyZW50VXNhZ2U7Ci0gICAgZG91YmxlIG1fY3JlYXRpb25UaW1lOwotICAgIGRvdWJs
ZSBtX21vZGlmaWNhdGlvblRpbWU7CisgICAgdWludDY0X3QgbV9leHBlY3RlZFVzYWdlIHsgMCB9
OworICAgIHVpbnQ2NF90IG1fY3VycmVudFVzYWdlIHsgMCB9OworICAgIGRvdWJsZSBtX2NyZWF0
aW9uVGltZSB7IDAuMCB9OworICAgIGRvdWJsZSBtX21vZGlmaWNhdGlvblRpbWUgeyAwLjAgfTsK
ICNpZm5kZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFJl
ZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXIuY3BwCmluZGV4IDQ4ZTBjNDc2NzhjOGYyNjU1NDhkOTc1MTFhNTk5MDcxOTZhYTk5Mjcu
LmI0YWRjNjYyODA3YzBkNTJlNDI3YWRmYTUxZmI3MjgxY2JkYTczYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAK
QEAgLTI1Nyw3ICsyNTcsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRh
aWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlYwogICAgICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OwogICAg
ICAgICBmb3IgKGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7
CiAgICAgICAgICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBu
YW1lICYmIHByb3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKSB7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS50aHJlYWRJRCgp
ID09IFRocmVhZDo6Y3VycmVudElEKCkgfHwgaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVCgmcHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLnRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhy
ZWFkLmNwcAppbmRleCAxMTUyNGNkY2QyYWIzNDJmYjA5ZmU2MTlhYjQ2ZjU3OTIzY2U2OWVmLi4w
MDc4MDBjOTVjZGY1ODZhZDU0OGFjYzJkYzMyNzQ2MzQ1YTcxODZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAt
MTA2LDcgKzEwNiw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKICAg
ICAvLyBDbGVhbiB1cCB0aGUgbGlzdCBvZiBhbGwgcGVuZGluZyB0cmFuc2FjdGlvbnMgb24gdGhp
cyBkYXRhYmFzZSB0aHJlYWQKICAgICBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3ItPnNodXRkb3du
KCk7CiAKLSAgICBMT0coU3RvcmFnZUFQSSwgIkFib3V0IHRvIGRldGFjaCB0aHJlYWQgJWkgYW5k
IGNsZWFyIHRoZSByZWYgdG8gRGF0YWJhc2VUaHJlYWQgJXAsIHdoaWNoIGN1cnJlbnRseSBoYXMg
JWkgcmVmKHMpIiwgbV90aHJlYWQtPmlkKCksIHRoaXMsIHJlZkNvdW50KCkpOworICAgIExPRyhT
dG9yYWdlQVBJLCAiQWJvdXQgdG8gZGV0YWNoIHRocmVhZCAlcCBhbmQgY2xlYXIgdGhlIHJlZiB0
byBEYXRhYmFzZVRocmVhZCAlcCwgd2hpY2ggY3VycmVudGx5IGhhcyAlaSByZWYocykiLCBtX3Ro
cmVhZC5nZXQoKSwgdGhpcywgcmVmQ291bnQoKSk7CiAKICAgICAvLyBDbG9zZSB0aGUgZGF0YWJh
c2VzIHRoYXQgd2UgcmFuIHRyYW5zYWN0aW9ucyBvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgYW55
IHRyYW5zYWN0aW9ucyBhcmUgc3RpbGwgb3BlbiwgdGhleSBhcmUgcm9sbGVkIGJhY2sgYW5kIHdl
IGRvbid0IGxlYXZlIHRoZSBkYXRhYmFzZSBpbiBhbgogICAgIC8vIGluY29uc2lzdGVudCBvciBs
b2NrZWQgc3RhdGUuCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVj
b3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2sobV9vcGVuRGF0YWJhc2VTZXRNdXRleCk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fdGhyZWFkLT5pZCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWQgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKICAgICBBU1NFUlQoIW1fb3BlbkRhdGFiYXNlU2V0LmNvbnRhaW5zKCZkYXRhYmFz
ZSkpOwogICAgIG1fb3BlbkRhdGFiYXNlU2V0LmFkZCgmZGF0YWJhc2UpOwogfQpAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFi
YXNlJiBkYXRhYmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9vcGVuRGF0YWJhc2VTZXRN
dXRleCk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkLT5pZCgpKTsK
KyAgICBBU1NFUlQobV90aHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQo
bV9xdWV1ZS5raWxsZWQoKSB8fCBtX29wZW5EYXRhYmFzZVNldC5jb250YWlucygmZGF0YWJhc2Up
KTsKICAgICBtX29wZW5EYXRhYmFzZVNldC5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRl
eCAzNDAwOWQxYjIyYzQ0YzJlMDNlZWNiYjdmNDRlNGM3YzhkN2RhZDU4Li5hOGM1NzBiNmYzYWM0
YjNhN2RkNDFjZjFiMTI3NzJiZWJkOGM0N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCkBAIC01OCw3ICs1OCw3IEBAIGNs
YXNzIERhdGFiYXNlVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNl
VGhyZWFkPiB7CiAKICAgICB2b2lkIHJlY29yZERhdGFiYXNlT3BlbihEYXRhYmFzZSYpOwogICAg
IHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2UmKTsKLSAgICBUaHJlYWRJZGVudGlm
aWVyIGdldFRocmVhZElEKCkgeyByZXR1cm4gbV90aHJlYWQgPyBtX3RocmVhZC0+aWQoKSA6IDA7
IH0KKyAgICBUaHJlYWQqIGdldFRocmVhZCgpIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAK
ICAgICBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkg
eyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggMTcxZTBkYjc4MWFjZTlmYzVlNzU0N2JlMTNiN2ZlNGIzNzY3MGI5Yi4uMTg3N2YzNGE4YzNi
NjFjNjJkOGNjYmU1MjFhNDdmNWIwYzRmNzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTE4NCw3ICsxODQs
NyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNlKCkK
ICAgICBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVyLmNsZWFyKCk7CiAKICAgICAvLyBUaGUgbmV4dCBz
dGVwcyBzaG91bGQgYmUgZXhlY3V0ZWQgb25seSBpZiB3ZSdyZSBvbiB0aGUgREIgdGhyZWFkLgot
ICAgIGlmIChjdXJyZW50VGhyZWFkKCkgIT0gbV9kYXRhYmFzZS0+ZGF0YWJhc2VUaHJlYWQoKS5n
ZXRUaHJlYWRJRCgpKQorICAgIGlmICgmVGhyZWFkOjpjdXJyZW50KCkgIT0gbV9kYXRhYmFzZS0+
ZGF0YWJhc2VUaHJlYWQoKS5nZXRUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
VGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVkLCBhcyB3ZWxs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMmVhOTNkZGYyYjU0NzU4MDY1ZjZkNjExM2Ew
ZWRlYzFjMjNlZTVlYy4uZDAwZWMxZDk0MjQ4YmY5YWQ1MTU0OTE5MGNiZmNkOWM1ZjAwZGUxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtMzUzLDcgKzM1Myw3IEBAIFNRTFRyYW5zYWN0
aW9uQmFja2VuZDo6flNRTFRyYW5zYWN0aW9uQmFja2VuZCgpCiAKIHZvaWQgU1FMVHJhbnNhY3Rp
b25CYWNrZW5kOjpkb0NsZWFudXAoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV9mcm9udGVuZC5kYXRhYmFzZSgpLmRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7Cisg
ICAgQVNTRVJUKG1fZnJvbnRlbmQuZGF0YWJhc2UoKS5kYXRhYmFzZVRocmVhZCgpLmdldFRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBtX2Zyb250ZW5kLnJlbGVhc2VPcmln
aW5Mb2NrSWZOZWVkZWQoKTsKIApAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rp
b25CYWNrZW5kOjpjb21wdXRlTmV4dFN0YXRlQW5kQ2xlYW51cElmTmVlZGVkKCkKIAogdm9pZCBT
UUxUcmFuc2FjdGlvbkJhY2tlbmQ6Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24o
KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9mcm9udGVuZC5kYXRhYmFzZSgp
LmRhdGFiYXNlVGhyZWFkKCkuZ2V0VGhyZWFkSUQoKSk7CisgICAgQVNTRVJUKG1fZnJvbnRlbmQu
ZGF0YWJhc2UoKS5kYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAKICAgICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MsIHdlIHNo
b3VsZCByb2xsIGl0IGJhY2sgaGVyZSwgc2luY2UgdGhpcwogICAgIC8vIGlzIG91ciBsYXN0IG9w
cG9ydHVuaXR5IHRvIGRvIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoaXMgdHJhbnNhY3Rpb24gb24g
dGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCA0
OWUxNTM1MzZhNmEzNTRhNmMzNmI1MTQ5MTA4OTczZGEzOWNiZGRjLi5jNmJkYTU1ZTUwMWFkNzcy
Y2UzOTAxZjgyOThkOWI2YzliYjgxNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2FsbGJhY2tEYXRhLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEg
ewogICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tEYXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogI2lmbmRlZiBO
REVCVUcKLSAgICAgICAgLCBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCisgICAgICAgICwgbV90
aHJlYWQoVGhyZWFkOjpjdXJyZW50KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtNjAsNyAr
NjAsNyBAQCBjbGFzcyBKU0NhbGxiYWNrRGF0YSB7CiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAg
ICB7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgQVNTRVJUKG1fdGhyZWFkID09IGN1cnJl
bnRUaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogI2VuZGlmCiAgICAgfQogICAgIApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBK
U0NhbGxiYWNrRGF0YSB7CiBwcml2YXRlOgogICAgIEpTQzo6V2VhazxKU0RPTUdsb2JhbE9iamVj
dD4gbV9nbG9iYWxPYmplY3Q7CiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElkZW50aWZpZXIg
bV90aHJlYWQ7CisgICAgUmVmPFRocmVhZD4gbV90aHJlYWQ7CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IDBmNzRl
NmMxNDAxZDhiYWRkNGE0NTZiMTFjYzljZjk0YjdhODE0NzcuLjYzNTc3NjlkMzJkMzM3ODhmOWFh
ZDhiYWU1MjNjYzU4NzRkMzk0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0
aW9uOjpleGVjdXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpl
eGVjdXRlKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIHsKICAgICAvLyBJ
biBhIFdvcmtlciwgdGhlIGV4ZWN1dGlvbiBzaG91bGQgYWx3YXlzIGhhcHBlbiBvbiBhIHdvcmtl
ciB0aHJlYWQuCi0gICAgQVNTRVJUKHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnRocmVhZElE
KCkgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQod29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmlu
ZGV4IDIxOTlkNGExZTE2YWEzYmJlNjRlYzZhYzE0OTg5Y2NlZTQzYWI2NDEuLmI2ZTg1ZWE5OWM1
ZGEwYzJkYTdmZjYyNTcxZWY3NTlhNDQ1YzE4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQogdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3Nh
Z2VQb3J0KQogewogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCp0aGlzKSAmJiBpc01haW5UaHJl
YWQoKSkKLSAgICAgICAgfHwgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykgJiYgY3VycmVu
dFRocmVhZCgpID09IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCku
dGhyZWFkSUQoKSkpOworICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAm
JiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLnRocmVhZCgpLnRocmVhZCgpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSkpOwogCiAgICAgbV9tZXNzYWdlUG9ydHMuYWRkKCZtZXNzYWdl
UG9ydCk7CiB9CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVz
c2FnZVBvcnQpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKnRoaXMpICYmIGlzTWFpblRo
cmVhZCgpKQotICAgICAgICB8fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKSAmJiBjdXJy
ZW50VGhyZWFkKCkgPT0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS50aHJlYWQo
KS50aHJlYWRJRCgpKSk7CisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMp
ICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykudGhyZWFkKCkudGhyZWFkKCkg
PT0gJlRocmVhZDo6Y3VycmVudCgpKSk7CiAKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1l
c3NhZ2VQb3J0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VV
c2FnZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXku
aAppbmRleCA2NDZkZmVmY2MwYjZkYTQ1Nzk0N2FhZDJkOGUzNWE4YWYyODcwMTQ1Li4xNmFlYTYw
MWQxNGUyNjI4NzQ1YjYwNDA0YmY3OWZkYmI2ZDM5OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1Jlc291cmNlVXNhZ2VPdmVybGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNvdXJjZVVzYWdlT3ZlcmxheS5oCkBAIC03OCw3ICs3OCw2IEBAIGNsYXNzIFJlc291cmNl
VXNhZ2VPdmVybGF5IGZpbmFsIDogcHVibGljIFBhZ2VPdmVybGF5OjpDbGllbnQgewogICAgIElu
dFBvaW50IG1fZHJhZ1BvaW50OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVGhyZWFkSWRl
bnRpZmllciBtX3RocmVhZElEIHsgMCB9OwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2xheWVy
OwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2NvbnRhaW5lckxheWVyOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRl
eCBkMjA0Yzc2MjEwYjMzNDA0ZGY0NGM0ZGEzZmNhN2FjY2Q3N2I0MmEyLi42MWZhYzNhZThjNTJk
MzkxZDNkOTBiOGUxNzJhMDRmMzkzOGNiM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTQwLDggKzQwLDcgQEAgU2Nyb2xs
aW5nVGhyZWFkOjpTY3JvbGxpbmdUaHJlYWQoKQogCiBib29sIFNjcm9sbGluZ1RocmVhZDo6aXND
dXJyZW50VGhyZWFkKCkKIHsKLSAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBTY3JvbGxpbmdU
aHJlYWQ6OnNpbmdsZXRvbigpLm1fdGhyZWFkOwotICAgIHJldHVybiB0aHJlYWQgJiYgdGhyZWFk
LT5pZCgpID09IGN1cnJlbnRUaHJlYWQoKTsKKyAgICByZXR1cm4gU2Nyb2xsaW5nVGhyZWFkOjpz
aW5nbGV0b24oKS5tX3RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7CiB9CiAKIHZvaWQgU2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgKaW5kZXggMzNmNjlhMmQxZWQ1ZWI4
MDBjYmQ5NTAwNGYxODYyYWU4MThmMTMyNi4uNmMyNjE5YzJjOTk4ZDE5NjI0ZWFlZmEzY2YwN2I4
N2Y1NzAyY2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVu
dGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCkBA
IC05OCwzMyArOTgsMzMgQEAgY2xhc3MgU3VwcGxlbWVudGFibGUgewogcHVibGljOgogICAgIHZv
aWQgcHJvdmlkZVN1cHBsZW1lbnQoY29uc3QgY2hhcioga2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U3Vw
cGxlbWVudDxUPj4gc3VwcGxlbWVudCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5BY2Nlc3NU
aHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWRJZCkpOworICAgICAgICBBU1NFUlQoY2Fu
QWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSk7CiAgICAgICAg
IEFTU0VSVCghbV9zdXBwbGVtZW50cy5nZXQoa2V5KSk7CiAgICAgICAgIG1fc3VwcGxlbWVudHMu
c2V0KGtleSwgV1RGTW92ZShzdXBwbGVtZW50KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVT
dXBwbGVtZW50KGNvbnN0IGNoYXIqIGtleSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjYW5BY2Nl
c3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWRJZCkpOworICAgICAgICBBU1NFUlQo
Y2FuQWNjZXNzVGhyZWFkTG9jYWxEYXRhRm9yVGhyZWFkKG1fdGhyZWFkLmdldCgpKSk7CiAgICAg
ICAgIG1fc3VwcGxlbWVudHMucmVtb3ZlKGtleSk7CiAgICAgfQogCiAgICAgU3VwcGxlbWVudDxU
PiogcmVxdWlyZVN1cHBsZW1lbnQoY29uc3QgY2hhcioga2V5KQogICAgIHsKLSAgICAgICAgQVNT
RVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZElkKSk7CisgICAg
ICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0
KCkpKTsKICAgICAgICAgcmV0dXJuIG1fc3VwcGxlbWVudHMuZ2V0KGtleSk7CiAgICAgfQogCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogcHJvdGVjdGVkOgotICAgIFN1cHBsZW1lbnRhYmxlKCkgOiBt
X3RocmVhZElkKGN1cnJlbnRUaHJlYWQoKSkgeyB9CisgICAgU3VwcGxlbWVudGFibGUoKSA9IGRl
ZmF1bHQ7CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hh
ciosIHN0ZDo6dW5pcXVlX3B0cjxTdXBwbGVtZW50PFQ+PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+
IFN1cHBsZW1lbnRNYXA7CiAgICAgU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1lbnRzOwogI2lmICFB
U1NFUlRfRElTQUJMRUQKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSWQ7CisgICAgUmVm
PFRocmVhZD4gbV90aHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKaW5kZXggOWNjYjQwMjFmNTAzMzc4YTg2MjI0ZTRhNmQ3
NTFkYTQ4YTkzMjY3Ny4uODdkNGU2OTBmNjE2NDBiM2M1ODI4MWFiYzI5YzY0MTllMDFiNzI5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcApAQCAtMTg2LDkgKzE4Niw2IEBAIGlubGluZSBi
b29sIFRpbWVySGVhcExlc3NUaGFuRnVuY3Rpb246Om9wZXJhdG9yKCkoY29uc3QgVGltZXJCYXNl
KiBhLCBjb25zdCBUaW1lCiAvLyAtLS0tLS0tLS0tLS0tLS0tCiAKIFRpbWVyQmFzZTo6VGltZXJC
YXNlKCkKLSNpZm5kZWYgTkRFQlVHCi0gICAgOiBtX3RocmVhZChjdXJyZW50VGhyZWFkKCkpCi0j
ZW5kaWYKIHsKIH0KIApAQCAtMjAzLDcgKzIwMCw3IEBAIFRpbWVyQmFzZTo6flRpbWVyQmFzZSgp
CiAKIHZvaWQgVGltZXJCYXNlOjpzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29u
ZHMgcmVwZWF0SW50ZXJ2YWwpCiB7Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0
YUZvclRocmVhZChtX3RocmVhZCkpOworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERh
dGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSBy
ZXBlYXRJbnRlcnZhbDsKICAgICBzZXROZXh0RmlyZVRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkg
KyBuZXh0RmlyZUludGVydmFsKTsKQEAgLTIxMSw3ICsyMDgsNyBAQCB2b2lkIFRpbWVyQmFzZTo6
c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQog
CiB2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExv
Y2FsRGF0YUZvclRocmVhZChtX3RocmVhZCkpOworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRM
b2NhbERhdGFGb3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKIAogICAgIG1fcmVwZWF0SW50ZXJ2
YWwgPSAwX3M7CiAgICAgc2V0TmV4dEZpcmVUaW1lKE1vbm90b25pY1RpbWUgeyB9KTsKQEAgLTM2
Miw3ICszNTksNyBAQCB2b2lkIFRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90b25p
Y1RpbWUgb2xkVGltZSkKIAogdm9pZCBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZShNb25vdG9u
aWNUaW1lIG5ld1RpbWUpCiB7Ci0gICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZv
clRocmVhZChtX3RocmVhZCkpOworICAgIEFTU0VSVChjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFG
b3JUaHJlYWQobV90aHJlYWQuZ2V0KCkpKTsKICAgICBBU1NFUlQoIW1fd2FzRGVsZXRlZCk7CiAK
ICAgICBpZiAobV91bmFsaWduZWROZXh0RmlyZVRpbWUgIT0gbmV3VGltZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaW1lci5oCmluZGV4IGUzZmQ3Yjk2Y2Q5M2JmOWZhMjcwNmRiYzRiNTgwN2I1NzBlZDU2YzUu
LjUyYzczOTg0NDRjNjVlNWU5MDlhZGMwNTg3NDQyYjM2MjNhZDZlOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGltZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgVmVj
dG9yPFRpbWVyQmFzZSo+KiBtX2NhY2hlZFRocmVhZEdsb2JhbFRpbWVySGVhcCB7IG51bGxwdHIg
fTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkOworICAg
IFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICAgICBib29sIG1f
d2FzRGVsZXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKIApAQCAtMTQwLDkgKzE0MCw5IEBAIGlubGlu
ZSBib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXcml0
ZSB0aGlzIGluIHRlcm1zIG9mIFVTRShXRUJfVEhSRUFEKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKElP
UykuCiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICBBU1NFUlQobV90aHJlYWQgPT0gY3VycmVudFRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV90aHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKICNlbHNlCi0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpIHx8IHB0aHJlYWRfbWFp
bl9ucCgpIHx8IG1fdGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKFdlYlRo
cmVhZElzQ3VycmVudCgpIHx8IHB0aHJlYWRfbWFpbl9ucCgpIHx8IG1fdGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihtX25leHRGaXJlVGltZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKaW5kZXggMWYyYjVmNWQwYmE4NTFiMjEzOTU0Zjg0ODQ3ZDkzYTQyYjBhNTlmMi4uNjEx
ZWRmYjQ3MmM4YjllN2IwNTQyZDY4ZTIwZWY5ZTc1YmIwZDVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcApAQCAtMTIyNCw4ICsxMjI0LDggQEAgc3RhdGljIGJvb2wgc2hvdWxkQXV0b0FjdGl2
YXRlRm9udElmTmVlZGVkKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogI2lmbmRlZiBOREVC
VUcKICAgICAvLyBUaGlzIGNhY2hlIGlzIG5vdCB0aHJlYWQgc2FmZSBzbyB0aGUgZm9sbG93aW5n
IGFzc2VydGlvbiBpcyB0aGVyZSB0bwogICAgIC8vIG1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGlz
IGFsd2F5cyBjYWxsZWQgZnJvbSB0aGUgc2FtZSB0aHJlYWQuCi0gICAgc3RhdGljIFRocmVhZElk
ZW50aWZpZXIgaW5pdFRocmVhZElkID0gY3VycmVudFRocmVhZCgpOwotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gaW5pdFRocmVhZElkKTsKKyAgICBzdGF0aWMgVGhyZWFkKiBpbml0VGhy
ZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOworICAgIEFTU0VSVChpbml0VGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PEF0b21pY1N0cmluZz4+IGtub3duRmFtaWxpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggMWNjYTBjY2RhODIxYWE1MmVkNWUw
NTQ1MWYxZjFkNWYxY2FjODdjYi4uYjIzZGFjMjliNGQ3NDlmY2ZjY2IyMzM3NjA5NWZlZjIwYjVl
ODBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LmNwcApAQCAtNTgsOSArNTgsMTAgQEAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQogdm9pZCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciog
Y29tcG9zaXRvciwgVGV4dHVyZU1hcHBlckxheWVyKiB0YXJnZXRMYXllcikKIHsKICNpZm5kZWYg
TkRFQlVHCi0gICAgbV9jb21wb3NpdG9yVGhyZWFkSUQgPSBtX2NvbXBvc2l0b3JUaHJlYWRJRCA/
IG1fY29tcG9zaXRvclRocmVhZElEIDogV1RGOjpjdXJyZW50VGhyZWFkKCk7CisgICAgaWYgKCFt
X2NvbXBvc2l0b3JUaHJlYWQpCisgICAgICAgIG1fY29tcG9zaXRvclRocmVhZCA9ICZUaHJlYWQ6
OmN1cnJlbnQoKTsKICNlbmRpZgotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBX
VEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVChjb21wb3NpdG9yKTsKICAgICBBU1NFUlQo
dGFyZ2V0TGF5ZXIpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CkBAIC04MCw3ICs4
MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNv
bXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRvclRo
cmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jb21wb3NpdG9y
VGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgRnVuY3Rpb248dm9pZCgpPiB1cGRh
dGVGdW5jdGlvbjsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CkBA
IC0xMjAsNyArMTIxLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpw
dXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHAKIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdMaW50
IGludGVybmFsRm9ybWF0KQogewogICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwotICAgIEFT
U0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKG1fY29tcG9zaXRvclRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYXZhaWxhYmxl
QnVmZmVyOwogCiAgICAgYXV0byBidWZmZXJzID0gV1RGTW92ZShtX3VzZWRCdWZmZXJzKTsKQEAg
LTE0NCw3ICsxNDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveAogdm9pZCBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5OjphcHBlbmRUb1VudXNlZEJ1ZmZlcnMoc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBidWZmZXIpCiB7CiAgICAgQVNT
RVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0gICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09
IFdURjo6Y3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICBzY2hlZHVsZVJlbGVhc2VVbnVzZWRCdWZmZXJzKCk7CiB9CkBAIC0xNzIs
NyArMTczLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNl
VW51c2VkQnVmZmVyc1RpbWVyRmlyZWQoKQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OnN3YXBCdWZmZXIoKQogewotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJ
RCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVh
ZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CiAgICAgaWYgKCFtX3RhcmdldExheWVyIHx8ICFtX3BlbmRpbmdCdWZmZXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCmlu
ZGV4IGQwMDRjYzgwZmU4NjVjYjczYzJlMWQ0YzhjYmZjZjI2Y2NlMjliODYuLmYzY2JkZjRlOGI0
MzhiYWMzM2M1Y2ZmMzM0NzNhZDQ0ZDU4YjNlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaApAQCAtOTEsNyArOTEsNyBAQCBjbGFzcyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRl
eHR1cmVNYXBwZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Pj4gbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyOwogCiAj
aWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElkZW50aWZpZXIgbV9jb21wb3NpdG9yVGhyZWFkSUQg
eyAwIH07CisgICAgUmVmUHRyPFRocmVhZD4gbV9jb21wb3NpdG9yVGhyZWFkOwogI2VuZGlmCiAK
ICAgICB2b2lkIGNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggODBlNDU0
MDg0YzgwZTA2YTIxOGJmN2YwYjBlYWRjMjE2OTkxMzMzYy4uOTVmY2YxMzEzNTJlMmEzODFkOWY0
YzU3YzVlMjRlMGQwN2E5OGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNjU2LDcgKzY1Niw2IEBAIHZvaWQgKlJ1bldlYlRo
cmVhZCh2b2lkICphcmcpCiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIFdlYlRocmVh
ZCBhbmQgdGhlIG1haW4gdGhyZWFkIHNoYXJlIHRoZSBzYW1lIFRocmVhZEdsb2JhbERhdGEgb2Jq
ZWN0cy4KICAgICBXZWJDb3JlOjp0aHJlYWRHbG9iYWxEYXRhKCkuc2V0V2ViQ29yZVRocmVhZERh
dGEoKTsKLSAgICBpbml0aWFsaXplV2ViVGhyZWFkSWRlbnRpZmllcigpOwogCiAjaWYgSEFWRShQ
VEhSRUFEX1NFVE5BTUVfTlApCiAgICAgcHRocmVhZF9zZXRuYW1lX25wKCJXZWJUaHJlYWQiKTsK
QEAgLTc2Niw3ICs3NjUsNyBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAgICAgICAg
IHN0YXJ0dXBDb25kaXRpb24ud2FpdChzdGFydHVwTG9jayk7CiAgICAgfQogCi0gICAgaW5pdGlh
bGl6ZUFwcGxpY2F0aW9uVUlUaHJlYWRJZGVudGlmaWVyKCk7CisgICAgaW5pdGlhbGl6ZUFwcGxp
Y2F0aW9uVUlUaHJlYWQoKTsKIH0KIAogc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2sg
KHB0aHJlYWRfY29uZF90ICpjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCAqbG9jaywgQ0ZBYnNv
bHV0ZVRpbWUgaW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcAppbmRleCA5ODdiMzQ2YWViOTE3MjM4NDhmMDM2NzRhODFhOTE3MmNhNzgz
MzYxLi4yMDk1ZWU4MTE4YWExMjAyNjM3NTdhMjMzY2Q5NjY0NzlhZjU5OGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTEwNSw3ICsx
MDUsNyBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGJvb2wgZm9yV2ViU1FMRGF0YWJhc2UpCiAgICAgfQogCiAgICAgaWYgKGlzT3BlbigpKQotICAg
ICAgICBtX29wZW5pbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgICAgIG1fb3Blbmlu
Z1RocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBlbHNlCiAgICAgICAgIG1fb3BlbkVy
cm9yTWVzc2FnZSA9ICJzcWxpdGVfb3BlbiByZXR1cm5lZCBudWxsIjsKIApAQCAtMTI5LDcgKzEy
OSw3IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKCkKIHsKICAgICBpZiAobV9kYikgewog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBiZWluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
IGR1cmluZyBKUyBHQy4gPHJkYXI6Ly9wcm9ibGVtLzU3Mzk4MTg+Ci0gICAgICAgIC8vIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcGVuaW5nVGhyZWFkKTsKKyAgICAgICAgLy8gQVNTRVJU
KG1fb3BlbmluZ1RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAgICBzcWxpdGUz
KiBkYiA9IG1fZGI7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
ZGF0YWJhc2VDbG9zaW5nTXV0ZXgpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgU1FMaXRlRGF0
YWJhc2U6OmNsb3NlKCkKICAgICAgICAgc3FsaXRlM19jbG9zZShkYik7CiAgICAgfQogCi0gICAg
bV9vcGVuaW5nVGhyZWFkID0gMDsKKyAgICBtX29wZW5pbmdUaHJlYWQgPSBudWxscHRyOwogICAg
IG1fb3BlbkVycm9yID0gU1FMSVRFX0VSUk9SOwogICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9IENT
dHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
LmgKaW5kZXggNzE3MmU0ZTEzMzY2M2FjZTBmODljNTQ0ZjFmMGYxMDY2NGJiOTBjMC4uZGViYjdj
OGNhMTEzN2U4NWIyZTIwNWYxNzMyZGVmZGM0ZTg0YWEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBT
UUxpdGVEYXRhYmFzZSB7CiAgICAgc3FsaXRlMyogc3FsaXRlM0hhbmRsZSgpIGNvbnN0CiAgICAg
ewogI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIEFTU0VSVChtX3NoYXJhYmxlIHx8IGN1cnJl
bnRUaHJlYWQoKSA9PSBtX29wZW5pbmdUaHJlYWQgfHwgIW1fZGIpOworICAgICAgICBBU1NFUlQo
bV9zaGFyYWJsZSB8fCBtX29wZW5pbmdUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8ICFt
X2RiKTsKICNlbmRpZgogICAgICAgICByZXR1cm4gbV9kYjsKICAgICB9CkBAIC0xNTcsNyArMTU3
LDcgQEAgY2xhc3MgU1FMaXRlRGF0YWJhc2UgewogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6
ZXI+IG1fYXV0aG9yaXplcjsKIAogICAgIExvY2sgbV9sb2NraW5nTXV0ZXg7Ci0gICAgVGhyZWFk
SWRlbnRpZmllciBtX29wZW5pbmdUaHJlYWQgeyAwIH07CisgICAgUmVmUHRyPFRocmVhZD4gbV9v
cGVuaW5nVGhyZWFkIHsgbnVsbHB0ciB9OwogCiAgICAgTG9jayBtX2RhdGFiYXNlQ2xvc2luZ011
dGV4OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmlu
ZGV4IDg4NjFlYjgxZDU2ZWY5OGE4MzMxZTI4NDRjZjIwMGE5OGY5OGYxNWEuLmJmNzQ1MmVjYzZj
M2M5YmVhNjFjZTVmNGJlMDY4MzY5NGZhZWYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNj
b3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjCiAKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogewot
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gdGhyZWFkKCkudGhyZWFkSUQoKSk7CisgICAg
QVNTRVJUKHRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBt
X3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKICAgICBtX2NyeXB0byA9IG51bGxwdHI7CkBAIC0zMjks
NyArMzI5LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KIAogYm9vbCBXb3JrZXJHbG9iYWxT
Y29wZTo6aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3VycmVudFRocmVh
ZCgpID09IHRocmVhZCgpLnRocmVhZElEKCk7CisgICAgcmV0dXJuIHRocmVhZCgpLnRocmVhZCgp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKIH0KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGI1ZGQzOGE1NjBhMjRhNWQyN2MyN2NiNTUw
YWIxODY4MTczZjdkNzkuLmVkMDI0YTI0N2VhMDQyMjU0YmE1YmUzZTg2YTM0MzJhYjc0YjI0MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQ
cm94eShXb3JrZXImIHdvcmtlck9iamVjdCkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJP
YmplY3QpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCi0gICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29w
ZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgY3VycmVudFRocmVhZCgpID09IGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQo
KS50aHJlYWRJRCgpKSk7CisgICAgICAgIHx8IChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSkpOwogCiAgICAgLy8gTm9ib2R5IG91dHNpZGUgdGhpcyBjbGFzcyByZWYgY291bnRzIHRo
aXMgb2JqZWN0LiBUaGUgb3JpZ2luYWwgcmVmCiAgICAgLy8gaXMgYmFsYW5jZWQgYnkgdGhlIGRl
cmVmIGluIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwuCkBAIC02OSw3ICs2OSw3
IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogewogICAg
IEFTU0VSVCghbV93b3JrZXJPYmplY3QpOwogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGlzTWFpblRocmVhZCgpKQotICAgICAgICB8fCAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGN1cnJlbnRU
aHJlYWQoKSA9PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkudGhyZWFkKCkudGhyZWFkSUQoKSkpOworICAgICAgICB8fCAoaXM8V29ya2VyR2xv
YmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKS50aHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIEpTQzo6UnVudGltZUZsYWdz
IHJ1bnRpbWVGbGFncywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggMjM2MWJmNzQ1YWFiNTRmNTkxMzYwNzM5Mjc2
OWI2MmFkYjNlMGJjZS4uNTZmYWY3ZDU0ZWUyOWZjYjhhMzEyNWNmYmVlYjVhNWQ0ODAxMDc1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xNTEsNyArMTUx
LDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29y
a2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnMKIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29y
a2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBN
b2RlUHJlZGljYXRlJiBwcmVkaWNhdGUsIFdhaXRNb2RlIHdhaXRNb2RlKQogewogICAgIEFTU0VS
VChjb250ZXh0KTsKLSAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCkudGhyZWFkSUQoKSA9PSBj
dXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0LT50aHJlYWQoKS50aHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgSlNDOjpKU1J1bkxvb3BUaW1lcjo6VGltZXJO
b3RpZmljYXRpb25DYWxsYmFjayB0aW1lckFkZGVkVGFzayA9IFdURjo6Y3JlYXRlU2hhcmVkVGFz
azxKU0M6OkpTUnVuTG9vcFRpbWVyOjpUaW1lck5vdGlmaWNhdGlvblR5cGU+KFt0aGlzXSB7CiAg
ICAgICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIGhlcmUsIHdlIGp1c3Qgd2Fu
dCB0byBsb29wIGFyb3VuZCBydW5Jbk1vZGUKQEAgLTIyMSw3ICsyMjEsNyBAQCBNZXNzYWdlUXVl
dWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJHbG9iYWxTY29wZSog
Y29udGV4dCwgY29ucwogdm9pZCBXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2Vy
R2xvYmFsU2NvcGUqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VS
VChjb250ZXh0LT50aHJlYWQoKS50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKGNvbnRleHQtPnRocmVhZCgpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CiAgICAgQVNTRVJUKG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpKTsKIAogICAgIHdoaWxlICh0cnVl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA0OWU1YzRiYmJmNTJi
ZGNhODE1N2MxYzA3ZmIxOTZlOGRlYmVjOTZiLi43YzQyZTI5M2RhMzQ2NGI1Yzk3ZGE1NDYxOTIw
NDQ1NzQ1NzBmOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTY2
LDcgKzY2LDcgQEAgY2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFdvcmtlclRocmVhZD4gewogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoV1RGOjpG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGV2YWx1YXRlQ2FsbGJhY2spOwogICAgIHZv
aWQgc3RvcChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0ZXJtaW5hdGVkQ2FsbGJhY2spOwogCi0g
ICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkID8g
bV90aHJlYWQtPmlkKCkgOiAwOyB9CisgICAgVGhyZWFkKiB0aHJlYWQoKSBjb25zdCB7IHJldHVy
biBtX3RocmVhZC5nZXQoKTsgfQogICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVy
biBtX3J1bkxvb3A7IH0KICAgICBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHko
KSBjb25zdCB7IHJldHVybiBtX3dvcmtlckxvYWRlclByb3h5OyB9CiAgICAgV29ya2VyRGVidWdn
ZXJQcm94eSYgd29ya2VyRGVidWdnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyRGVi
dWdnZXJQcm94eTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDE1ZDBmZWNjNzNmM2Y1OTFkYmY5
YzIwZjA3MWE1YWNjNGRhMTA2MTQuLjU2ZWNiYzQwNTRiODI4NzZmZWIyMTNhNmQxNzYzMGUwZWI1
Yjg0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6U2VydmljZVdvcmtlckNvbnRhaW5lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LAogU2VydmljZVdvcmtlckNvbnRhaW5lcjo6flNlcnZpY2VXb3JrZXJDb250YWlu
ZXIoKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBj
dXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2Nv
cGVVUkwsIGNvbnN0IFVSTCYKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVK
b2IoUmVmPFNlcnZpY2VXb3JrZXJKb2I+JiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAog
ICAgIEFTU0VSVChtX3N3Q29ubmVjdGlvbik7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydE1lc3NhZ2VzKCkKIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNv
bnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0
aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIGlm
IChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CkBAIC0zMTAsNyAr
MzEwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0
aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6c2NoZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAog
ICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50aWZp
ZXIpKQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnCiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNl
V29ya2VySm9iJiBqb2IsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSwgU2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsKICNpZm5k
ZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgp
KTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogI2VuZGlmCiAKICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlz
LCAmam9iXSB7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLAogdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJl
c3VsdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCiB7
CiAjaWZuZGVmIE5ERUJVRwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRU
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKICNlbmRpZgogCiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhp
dChbdGhpcywgJmpvYl0gewpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtl
ckpvCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2Io
U2VydmljZVdvcmtlckpvYiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9j
cmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2NyZWF0aW9u
VGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIExPRyhT
ZXJ2aWNlV29ya2VyLCAiU2V2aWNlV29ya2VyQ29udGFpbmVyICVwIHN0YXJ0aW5nIHNjcmlwdCBm
ZXRjaCBmb3Igam9iICVzIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZp
Y2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7CiAjaWZuZGVmIE5ERUJV
RwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNl
bmRpZgogCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAg
ZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmll
cigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQxNSw3ICs0MTUsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2
aWNlV29ya2VySm9iJiBqb2IsIGNvbgogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JG
YWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikKIHsKICNp
Zm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVh
ZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogI2VuZGlmCiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNv
bnRhaW5lciAlcCBmYWlsZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2Iu
aWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQzMSw3ICs0
MzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3Jp
cHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpqb2JEaWRGaW5pc2goU2VydmljZVdvcmtlckpvYiYgam9iKQogewogI2lmbmRlZiBOREVC
VUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworICAg
IEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAj
ZW5kaWYKIAogICAgIGF1dG8gdGFrZW4gPSBtX2pvYk1hcC50YWtlKGpvYi5pZGVudGlmaWVyKCkp
OwpAQCAtNDcwLDcgKzQ3MCw3IEBAIFNXQ2xpZW50Q29ubmVjdGlvbiYgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkKIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lz
dHJhdGlvbikKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQg
PT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBlbnN1cmVTV0NsaWVudENvbm5l
Y3Rpb24oKS5hZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIocmVnaXN0cmF0aW9u
LmlkZW50aWZpZXIoKSk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjphZGRSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYgcmVnaXN0
cmEKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICNpZm5kZWYgTkRFQlVHCi0g
ICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NF
UlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlm
CiAKICAgICBtX3N3Q29ubmVjdGlvbi0+cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24mIHJlZ2lzCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVk
dWxlVGFza1RvRmlyZUNvbnRyb2xsZXJDaGFuZ2VFdmVudCgpCiB7CiAjaWZuZGVmIE5ERUJVRwot
ICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNT
RVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRp
ZgogCiAgICAgaWYgKG1faXNTdG9wcGVkKQpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6c3RvcCgpCiBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpjb250ZXh0SWRlbnRpZmllcigpCiB7CiAjaWZuZGVmIE5ERUJV
RwotICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisgICAg
QVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNl
bmRpZgogCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aAppbmRleCAyZDlhOWYwNDZhYmI0YWNlZjAzNjE3OThmNjNmMTYxODhkODI3ZDAwLi5lYTEyZThj
NTk0ZGZiNDMzYzM2NDhkMzVjZjVmOTE1NjE5YzlhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTEx
OSw3ICsxMTksNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGZpbmFsIDogcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBYwogICAgIEhhc2hNYXA8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24q
PiBtX3JlZ2lzdHJhdGlvbnM7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgVGhyZWFkSWRlbnRpZmll
ciBtX2NyZWF0aW9uVGhyZWFkIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgUmVmPFRocmVhZD4g
bV9jcmVhdGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNw
cAppbmRleCBmNzNmOTA3MmEwM2MzYzA1ZTMyNjE1NDdhODg5MWFkYTk1NzI0MDk5Li40YTg4MWQ3
N2I1OGY5ODczYTY1Yjg1MDc1ZDBkZDllOWY5MDVlYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCkBAIC00NywxMiArNDcs
MTIgQEAgU2VydmljZVdvcmtlckpvYjo6U2VydmljZVdvcmtlckpvYihTZXJ2aWNlV29ya2VySm9i
Q2xpZW50JiBjbGllbnQsIFJlZjxEZWZlcnJlZFAKIAogU2VydmljZVdvcmtlckpvYjo6flNlcnZp
Y2VXb3JrZXJKb2IoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9jcmVhdGlv
blRocmVhZCk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0
aW9uKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQogewotICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9jcmVhdGlvblRocmVhZCk7CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQu
cHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsK
IAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9u
KQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIo
KSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAg
ICAgbV9jb21wbGV0ZWQgPSB0cnVlOwpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJKb2I6OnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSYmCiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRp
b25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhy
ZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRl
ZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoYm9vbCB1bnJl
Z2lzdHJhdGlvblJlc3VsCiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRj
aCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsK
KyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jbGllbnQtPnN0YXJ0U2NyaXB0
RmV0Y2hGb3JKb2IoKnRoaXMpOwpAQCAtODcsNyArODcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJK
b2I6OnN0YXJ0U2NyaXB0RmV0Y2goKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2Ny
aXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25UaHJlYWQpOworICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJU
KCFtX2NvbXBsZXRlZCk7CiAKICAgICAvLyBGSVhNRTogV29ya2VyU2NyaXB0TG9hZGVyIGlzIHRo
ZSB3cm9uZyBsb2FkZXIgY2xhc3MgdG8gdXNlIGhlcmUsIGJ1dCB0aGVyZSdzIG5vdGhpbmcgZWxz
ZSBiZXR0ZXIgcmlnaHQgbm93LgpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJK
b2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQg
bG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2NyZWF0aW9uVGhyZWFkKTsKKyAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9jb21w
bGV0ZWQpOwogICAgIEFTU0VSVChtX3NjcmlwdExvYWRlcik7CiAKQEAgLTExNSw3ICsxMTUsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6Om5vdGlm
eUZpbmlzaGVkKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fY3JlYXRpb25U
aHJlYWQpOworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CiAgICAgQVNTRVJUKG1fc2NyaXB0TG9hZGVyKTsKICAgICAKICAgICBpZiAoIW1f
c2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IGMzMGE0ZmI4NDg5NzM4OWMxNWI2MjdmMWRm
OWRlZmUyODkxNzllNGMuLjljNDI4ZTc3MjAwMzQyOTkxYWYzMTczYTI5ZTA0MDEyOTVkNTI5YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2IuaApAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VySm9iIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJKb2I+LCBwdWJsaWMgVwogICAgIFJlc291
cmNlUmVzcG9uc2UgbV9sYXN0UmVzcG9uc2U7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAg
VGhyZWFkSWRlbnRpZmllciBtX2NyZWF0aW9uVGhyZWFkIHsgY3VycmVudFRocmVhZCgpIH07Cisg
ICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBhMzdkNjE1MTZhNjI4MDBmNWE0MzFiODkxYzcy
NzM0ZjA5MDM1YmNjLi40ZWRhMzJhYTc3OTYwMzliMzY4OWE0NTEzNzdhYTg4OWZhYmViMmQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCkBAIC0zNDAsMTMgKzM0MCwxMyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tz
IHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBpbnQgZ2xv
YmFsRGVzY3JpcHRvciA9IDA7Ci1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBsaWJ4bWxMb2FkZXJU
aHJlYWQgPSAwOworc3RhdGljIFRocmVhZCogbGlieG1sTG9hZGVyVGhyZWFkIHsgbnVsbHB0ciB9
OwogCiBzdGF0aWMgaW50IG1hdGNoRnVuYyhjb25zdCBjaGFyKikKIHsKICAgICAvLyBPbmx5IG1h
dGNoIGxvYWRzIGluaXRpYXRlZCBkdWUgdG8gdXNlcyBvZiBsaWJ4bWwyIGZyb20gd2l0aGluIFhN
TERvY3VtZW50UGFyc2VyIHRvIGF2b2lkCiAgICAgLy8gaW50ZXJmZXJpbmcgd2l0aCBjbGllbnQg
YXBwbGljYXRpb25zIHRoYXQgYWxzbyB1c2UgbGlieG1sMi4gIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzUzCi0gICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyU2Nv
cGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlciAmJiBjdXJyZW50VGhyZWFkKCkgPT0gbGli
eG1sTG9hZGVyVGhyZWFkOworICAgIHJldHVybiBYTUxEb2N1bWVudFBhcnNlclNjb3BlOjpjdXJy
ZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXIgJiYgbGlieG1sTG9hZGVyVGhyZWFkID09ICZUaHJlYWQ6
OmN1cnJlbnQoKTsKIH0KIAogY2xhc3MgT2Zmc2V0QnVmZmVyIHsKQEAgLTQzMiw3ICs0MzIsNyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0V4dGVybmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHN0
YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgQVNTRVJUKFhNTERv
Y3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlcik7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJlYWQpOworICAgIEFTU0VSVCgm
VGhyZWFkOjpjdXJyZW50KCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkKTsKIAogICAgIFVSTCB1cmwo
VVJMKCksIHVyaSk7CiAKQEAgLTQ5NSwxNyArNDk1LDIwIEBAIHN0YXRpYyB2b2lkIGVycm9yRnVu
Yyh2b2lkKiwgY29uc3QgY2hhciosIC4uLikKIH0KICNlbmRpZgogCi1zdGF0aWMgYm9vbCBkaWRJ
bml0ID0gZmFsc2U7Ci0KLVJlZjxYTUxQYXJzZXJDb250ZXh0PiBYTUxQYXJzZXJDb250ZXh0Ojpj
cmVhdGVTdHJpbmdQYXJzZXIoeG1sU0FYSGFuZGxlclB0ciBoYW5kbGVycywgdm9pZCogdXNlckRh
dGEpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplWE1MUGFyc2VyKCkKIHsKLSAgICBpZiAoIWRpZElu
aXQpIHsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsKKyAgICBzdGQ6OmNhbGxfb25j
ZShmbGFnLCBbJl0gewogICAgICAgICB4bWxJbml0UGFyc2VyKCk7CiAgICAgICAgIHhtbFJlZ2lz
dGVySW5wdXRDYWxsYmFja3MobWF0Y2hGdW5jLCBvcGVuRnVuYywgcmVhZEZ1bmMsIGNsb3NlRnVu
Yyk7CiAgICAgICAgIHhtbFJlZ2lzdGVyT3V0cHV0Q2FsbGJhY2tzKG1hdGNoRnVuYywgb3BlbkZ1
bmMsIHdyaXRlRnVuYywgY2xvc2VGdW5jKTsKLSAgICAgICAgbGlieG1sTG9hZGVyVGhyZWFkID0g
Y3VycmVudFRocmVhZCgpOwotICAgICAgICBkaWRJbml0ID0gdHJ1ZTsKLSAgICB9CisgICAgICAg
IGxpYnhtbExvYWRlclRocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICB9KTsKK30KKwor
UmVmPFhNTFBhcnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZVN0cmluZ1BhcnNl
cih4bWxTQVhIYW5kbGVyUHRyIGhhbmRsZXJzLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBpbml0
aWFsaXplWE1MUGFyc2VyKCk7CiAKICAgICB4bWxQYXJzZXJDdHh0UHRyIHBhcnNlciA9IHhtbENy
ZWF0ZVB1c2hQYXJzZXJDdHh0KGhhbmRsZXJzLCAwLCAwLCAwLCAwKTsKICAgICBwYXJzZXItPl9w
cml2YXRlID0gdXNlckRhdGE7CkBAIC01MjIsMTMgKzUyNSw3IEBAIFJlZjxYTUxQYXJzZXJDb250
ZXh0PiBYTUxQYXJzZXJDb250ZXh0OjpjcmVhdGVTdHJpbmdQYXJzZXIoeG1sU0FYSGFuZGxlclB0
ciBoYW5kCiAvLyBDaHVuayBzaG91bGQgYmUgZW5jb2RlZCBpbiBVVEYtOAogUmVmUHRyPFhNTFBh
cnNlckNvbnRleHQ+IFhNTFBhcnNlckNvbnRleHQ6OmNyZWF0ZU1lbW9yeVBhcnNlcih4bWxTQVhI
YW5kbGVyUHRyIGhhbmRsZXJzLCB2b2lkKiB1c2VyRGF0YSwgY29uc3QgQ1N0cmluZyYgY2h1bmsp
CiB7Ci0gICAgaWYgKCFkaWRJbml0KSB7Ci0gICAgICAgIHhtbEluaXRQYXJzZXIoKTsKLSAgICAg
ICAgeG1sUmVnaXN0ZXJJbnB1dENhbGxiYWNrcyhtYXRjaEZ1bmMsIG9wZW5GdW5jLCByZWFkRnVu
YywgY2xvc2VGdW5jKTsKLSAgICAgICAgeG1sUmVnaXN0ZXJPdXRwdXRDYWxsYmFja3MobWF0Y2hG
dW5jLCBvcGVuRnVuYywgd3JpdGVGdW5jLCBjbG9zZUZ1bmMpOwotICAgICAgICBsaWJ4bWxMb2Fk
ZXJUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Ci0gICAgICAgIGRpZEluaXQgPSB0cnVlOwotICAg
IH0KKyAgICBpbml0aWFsaXplWE1MUGFyc2VyKCk7CiAKICAgICAvLyBhcHBlbmRGcmFnbWVudFNv
dXJjZSgpIGNoZWNrcyB0aGF0IHRoZSBsZW5ndGggZG9lc24ndCBvdmVyZmxvdyBhbiBpbnQuCiAg
ICAgeG1sUGFyc2VyQ3R4dFB0ciBwYXJzZXIgPSB4bWxDcmVhdGVNZW1vcnlQYXJzZXJDdHh0KGNo
dW5rLmRhdGEoKSwgY2h1bmsubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggYzM3NzU4MjU0YjRkNGY4ZjAxY2U5
YTM4ZTZmMGRlOGI1MjU4OTk2YS4uMDdlZWRjYjYzYzQ4ZWU2YmNiMTY2ZDkyYmI4YTY3ZGExODRi
MGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lOQ19USFJF
QUQoKSBBU1NFUlQoIW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19USFJFQUQo
KSkKIAogLy8gRm9yIG1ldGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCB0aGUgc3luYyB0
aHJlYWQgT05MWQotI2RlZmluZSBJU19JQ09OX1NZTkNfVEhSRUFEKCkgKG1fc3luY1RocmVhZC0+
aWQoKSA9PSBjdXJyZW50VGhyZWFkKCkpCisjZGVmaW5lIElTX0lDT05fU1lOQ19USFJFQUQoKSAo
bV9zeW5jVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSkKICNkZWZpbmUgQVNTRVJUX0lDT05f
U1lOQ19USFJFQUQoKSBBU1NFUlQoSVNfSUNPTl9TWU5DX1RIUkVBRCgpKQogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVy
aWNDYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgK
aW5kZXggMmI3YjJmNWM3Y2EwMWM0ZTM1ZGE0MzRiMzMxNGU2OGY3ZGJhY2ZiNy4uYmFjNmRjYTRk
YzAxODVjNmQ3NjJmZGNmMDhmYTFkNjMxMWIxMDRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2VuZXJpY0NhbGxiYWNrLmgKQEAgLTk0LDEzICs5NCwxMyBAQCBjbGFzcyBHZW5lcmljQ2Fs
bGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKIAogICAgIHZpcnR1YWwgfkdlbmVyaWNDYWxs
YmFjaygpCiAgICAgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2lu
VGhyZWFkSUQpOworICAgICAgICBBU1NFUlQobV9vcmlnaW5UaHJlYWQucHRyKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKICAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrKTsKICAgICB9CiAKICAg
ICB2b2lkIHBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShULi4uIHJldHVyblZhbHVlKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElE
KTsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTE3LDcgKzExNyw3IEBAIGNsYXNzIEdlbmVyaWNDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFj
a0Jhc2UgewogCiAgICAgdm9pZCBpbnZhbGlkYXRlKEVycm9yIGVycm9yID0gRXJyb3I6OlVua25v
d24pIGZpbmFsCiAgICAgewotICAgICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3Jp
Z2luVGhyZWFkSUQpOworICAgICAgICBBU1NFUlQobV9vcmlnaW5UaHJlYWQucHRyKCkgPT0gJlRo
cmVhZDo6Y3VycmVudCgpKTsKIAogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgR2VuZXJpY0NhbGxiYWNrIDogcHVi
bGljIENhbGxiYWNrQmFzZSB7CiAgICAgc3RkOjpvcHRpb25hbDxDYWxsYmFja0Z1bmN0aW9uPiBt
X2NhbGxiYWNrOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIFRocmVhZElkZW50aWZpZXIgbV9vcmln
aW5UaHJlYWRJRCB7IGN1cnJlbnRUaHJlYWQoKSB9OworICAgIFJlZjxUaHJlYWQ+IG1fb3JpZ2lu
VGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVmNjhhOTUwMTU3N2ZkZWYx
N2MzNjRjOGY5NjE0MjU4ZjIyZjcwMjAuLjUwYTEzMDhiNjhiNDUyZjE5NDZhZTIyYWIzYTIxOWUw
ZmI1NzlhNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXVEYgc2hvdWxkbid0IGhhdmUgYm90aCBUaHJlYWQg
YW5kIFRocmVhZElkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MDMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAg
ICAoZHVtcFJlbmRlclRyZWUpOgorICAgICAgICAocnVuVGhyZWFkKTogRGVsZXRlZC4KKyAgICAg
ICAgKHJ1blB0aHJlYWQpOiBEZWxldGVkLgorICAgICAgICAodGVzdFRocmVhZElkZW50aWZpZXJN
YXApOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkaW5nLmNwcDogQWRkZWQu
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMi0wMyAgQWFrYXNoIEph
aW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHkgRVdTIGtlZXBz
IHJldHJ5aW5nIGEgZmFpbGluZyBwYXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDMyN2YyMGIxZGYwNGNlYmI4OGYxNDJmNWM5YTlhNjY2MjVlZGJm
MGQuLjU0NTJkMmRkNDk4MTVmZTE0M2FlNDczYjY4ZGQzNGE4OTNkY2Q3NzAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwNjUsMzYgKzEwNjUsNiBA
QCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQog
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9t
YWluOnByb2Nlc3NJbnN0YW5jZURlZmF1bHRzIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiB9
CiAKLXN0YXRpYyB2b2lkIHJ1blRocmVhZCgpCi17Ci0gICAgc3RhdGljIFRocmVhZElkZW50aWZp
ZXIgcHJldmlvdXNJZCA9IDA7Ci0gICAgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SWQgPSBjdXJy
ZW50VGhyZWFkKCk7Ci0gICAgLy8gVmVyaWZ5IDIgc3VjY2Vzc2l2ZSB0aHJlYWRzIGRvIG5vdCBn
ZXQgdGhlIHNhbWUgSWQuCi0gICAgQVNTRVJUKHByZXZpb3VzSWQgIT0gY3VycmVudElkKTsKLSAg
ICBwcmV2aW91c0lkID0gY3VycmVudElkOwotfQotCi1zdGF0aWMgdm9pZCogcnVuUHRocmVhZCh2
b2lkKikKLXsKLSAgICBydW5UaHJlYWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotc3Rh
dGljIHZvaWQgdGVzdFRocmVhZElkZW50aWZpZXJNYXAoKQotewotICAgIC8vIEltaXRhdGUgJ2Zv
cmVpZ24nIHRocmVhZHMgdGhhdCBhcmUgbm90IGNyZWF0ZWQgYnkgV1RGLgotICAgIHB0aHJlYWRf
dCBwdGhyZWFkOwotICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCAwLCAmcnVuUHRocmVhZCwg
MCk7Ci0gICAgcHRocmVhZF9qb2luKHB0aHJlYWQsIDApOwotCi0gICAgcHRocmVhZF9jcmVhdGUo
JnB0aHJlYWQsIDAsICZydW5QdGhyZWFkLCAwKTsKLSAgICBwdGhyZWFkX2pvaW4ocHRocmVhZCwg
MCk7Ci0KLSAgICAvLyBOb3cgY3JlYXRlIGFub3RoZXIgdGhyZWFkIHVzaW5nIFdURi4gT24gT1NY
LCBpdCB3aWxsIGhhdmUgdGhlIHNhbWUgcHRocmVhZCBoYW5kbGUKLSAgICAvLyBidXQgc2hvdWxk
IGdldCBhIGRpZmZlcmVudCBSZWZQdHI8VGhyZWFkPi4KLSAgICBUaHJlYWQ6OmNyZWF0ZSgiRHVt
cFJlbmRlclRyZWU6IHRlc3QiLCBydW5UaHJlYWQpOwotfQotCiBzdGF0aWMgdm9pZCBhbGxvY2F0
ZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSB0
aGVzZSBhbmQgbW92ZSB0byB0aGUgT2JqQyBzdGFuZGFyZCBbRm9vIHNoYXJlZEluc3RhbmNlXSBt
b2RlbApAQCAtMTI4Myw5ICsxMjUzLDYgQEAgdm9pZCBkdW1wUmVuZGVyVHJlZShpbnQgYXJnYywg
Y29uc3QgY2hhciAqYXJndltdKQogICAgIFtOU1VSTFJlcXVlc3Qgc2V0QWxsb3dzQW55SFRUUFND
ZXJ0aWZpY2F0ZTpZRVMgZm9ySG9zdDpAImxvY2FsaG9zdCJdOwogICAgIFtOU1VSTFJlcXVlc3Qg
c2V0QWxsb3dzQW55SFRUUFNDZXJ0aWZpY2F0ZTpZRVMgZm9ySG9zdDpAIjEyNy4wLjAuMSJdOwog
Ci0gICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi8zMjY4OQotICAgIHRlc3RUaHJlYWRJZGVudGlm
aWVyTWFwKCk7Ci0KICAgICBpZiAodGhyZWFkZWQpCiAgICAgICAgIHN0YXJ0SmF2YVNjcmlwdFRo
cmVhZHMoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4
dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggN2UzMWYzMDk3OGFl
NDI3YjEwYTkxZmIxNGVmYjlmZTEzNDQzMDFhMS4uNWFjNWU2MTVkMzJmN2M1NTI1NzY2ZjkzMWMz
MGY0OTY3MWYxMjQwYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC0xNDEsNiAr
MTQxLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9UZXh0QnJlYWtJdGVyYXRvci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL1RocmVhZE1lc3NhZ2VzLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dU
Ri9UaHJlYWRpbmcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RpbWUu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggODMyOGNlYWE4NzQzNjI3M2Q0NjExMTQ0NTQ0YzlkMWNkYmIyMjBjYi4u
YzUyZDdlOTI1Nzg1MjM3YTE4ODA4Y2ZlZWIxYzc3MmUyYzY3Y2NiYyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTY5Myw2ICs2OTMsNyBAQAogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMg
LyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERD
OTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJRTE5NEUxQkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BM
b2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAv
KiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLzsgfTsKIAkJRTM3M0Q3
OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25h
bHMuY3BwICovOyB9OworCQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEEwRDM0
MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovOyB9OwogCQlFM0RFQTgxMTFGMEE1
ODkwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdy
b3VwLmNwcCAqLzsgfTsKIAkJRUNBNjgwQ0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxp
dGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVD
QTY4MENEMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi87IH07CiAJCUY0
MDdGRTM5MUYxRDBERkMwMDE3Q0YyNSAvKiBlbm9ybW91cy5zdmcgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwN0ZFMzgxRjFEMERFNjAwMTdD
RjI1IC8qIGVub3Jtb3VzLnN2ZyAqLzsgfTsKQEAgLTE3NzIsNiArMTc3Myw3IEBACiAJCUUxOTRF
MUJBMTc3RTUxNDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zy
b21EaWRSZWNlaXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
OTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9u
c2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQg
LyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBOYXZpZ2F0b3JMYW5ndWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM4QTBEMzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWduYWxzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdy
b3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3Vw
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwMDE5MzAxQUNFOUI1QzAwMUIw
QTJBIC8qIEJsb29tRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJsb29tRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NTEs
NiArMjY1Myw3IEBACiAJCQkJNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXpl
ZEZpeGVkUXVldWUuY3BwICovLAogCQkJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0
QnJlYWtJdGVyYXRvci5jcHAgKi8sCiAJCQkJRTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRo
cmVhZEdyb3VwLmNwcCAqLywKKwkJCQlFMzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIgLyogVGhyZWFk
aW5nLmNwcCAqLywKIAkJCQk1MzExQkQ1RDFFQTk0OTBEMDA1MjUyODEgLyogVGhyZWFkTWVzc2Fn
ZXMuY3BwICovLAogCQkJCTBGMkMyMEI3MURDRDU0NDgwMDU0MkQ5RSAvKiBUaW1lLmNwcCAqLywK
IAkJCQk1QzVFNjMzRDFEMEI2Nzk0MDA4NUEwMjUgLyogVW5pcXVlUmVmLmNwcCAqLywKQEAgLTMy
MTEsNiArMzIxNCw3IEBACiAJCQkJN0M4M0RGNDAxRDBBNTkwQzAwRkVCQ0YzIC8qIFRlc3RzQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzI5QUEyOTFERTNGODFFMDAzQUJEMDcg
LyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTNERUE4MTExRjBB
NTg5MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOEEw
RDM1MUZENTBDQzMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTMxMUJENUUxRUE5NDkwRTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2VzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMkMyMEI4MURDRDU0NTAwMDU0MkQ5RSAvKiBUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNFMDNCMUQwQTYwMjcwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UGFya2luZ0xvdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90
LmNwcAppbmRleCBiYThkZDU2YTViMzBhMjRlZjVmZGNlM2JkMzAxZDA2ZjU0YWQ0ZTg4Li5mOTQ0
MGQwOWZlMWUxMmE4MDY1NDBiNDJlMjEwOWM5MWE0Yzc3YjZmIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcApAQCAtNTEsNyArNTEsNiBAQCBzdHJ1Y3Qg
U2luZ2xlTGF0Y2hUZXN0IHsKICAgICAgICAgICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgKICAgICAg
ICAgICAgICAgICAgICAgIlBhcmtpbmcgVGVzdCBUaHJlYWQiLAogICAgICAgICAgICAgICAgICAg
ICBbJl0gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX05FKDB1LCBjdXJyZW50
VGhyZWFkKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgZG93bigpOwogCiAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9ja2VyKGxvY2spOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkaW5nLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZGluZy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzQ2OGQxNTA5NmM1MjhiMjhmOTQ3ZTczZjgwOTEzZjAwYWRhZGIyZgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZGluZy5jcHAKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKKyNpZiBVU0UoUFRIUkVBRFMpCitURVNUKFdURiwgVGhyZWFk
aW5nVGhyZWFkSWRlbnRpdHkpCit7CisgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi8zMjY4OQor
ICAgIHN0YXRpYyBUaHJlYWQqIHRocmVhZDE7CisgICAgc3RhdGljIFRocmVhZCogdGhyZWFkMjsK
KworICAgIC8vIEltaXRhdGUgJ2ZvcmVpZ24nIHRocmVhZHMgdGhhdCBhcmUgbm90IGNyZWF0ZWQg
YnkgV1RGLgorICAgIHB0aHJlYWRfdCBwdGhyZWFkOworICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhy
ZWFkLCBudWxscHRyLCBbXSAodm9pZCopIC0+IHZvaWQqIHsKKyAgICAgICAgdGhyZWFkMSA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKKyAgICAgICAgdGhyZWFkMS0+cmVmKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0sIG51bGxwdHIpOworICAgIHB0aHJlYWRfam9pbihwdGhyZWFkLCBu
dWxscHRyKTsKKworICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCBudWxscHRyLCBbXSAodm9p
ZCopIC0+IHZvaWQqIHsKKyAgICAgICAgdGhyZWFkMiA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyAg
ICAgICAgdGhyZWFkMi0+cmVmKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0sIG51
bGxwdHIpOworICAgIHB0aHJlYWRfam9pbihwdGhyZWFkLCBudWxscHRyKTsKKworICAgIC8vIE5v
dyBjcmVhdGUgYW5vdGhlciB0aHJlYWQgdXNpbmcgV1RGLiBPbiBPU1gsIGl0IG1heSBoYXZlIHRo
ZSBzYW1lIHB0aHJlYWQgaGFuZGxlCisgICAgLy8gYnV0IHNob3VsZCBnZXQgYSBkaWZmZXJlbnQg
UmVmUHRyPFRocmVhZD4gaWYgdGhlIHByZXZpb3VzIFJlZlB0cjxUaHJlYWQ+IGlzIGhlbGQuCisg
ICAgVGhyZWFkOjpjcmVhdGUoIkR1bXBSZW5kZXJUcmVlOiB0ZXN0IiwgW10geworICAgICAgICBF
WFBFQ1RfVFJVRSh0aHJlYWQxICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKHRocmVhZDIgIT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUodGhyZWFkMSAhPSB0aHJlYWQyKTsKKyAgICAgICAgdGhyZWFkMS0+ZGVyZWYoKTsKKyAgICAg
ICAgdGhyZWFkMi0+ZGVyZWYoKTsKKyAgICB9KS0+d2FpdEZvckNvbXBsZXRpb24oKTsKK30KKyNl
bmRpZiAvLyBVU0UoUFRIUkVBRFMpCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>