<?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>141372</bug_id>
          
          <creation_ts>2015-02-08 12:32:12 -0800</creation_ts>
          <short_desc>Web Inspector: remove some unnecessary Inspector prefixes from class names in Inspector namespace</short_desc>
          <delta_ts>2015-02-14 15:26:02 -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 Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>141608</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1067694</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-08 12:32:12 -0800</bug_when>
    <thetext>Keep the prefix for file names, as it provides useful information. Otherwise, convert to namespacing where needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067695</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-02-08 12:32:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/19760554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067696</commentid>
    <comment_count>2</comment_count>
      <attachid>246246</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-08 12:55:29 -0800</bug_when>
    <thetext>Created attachment 246246
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067697</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-08 12:57:17 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067698</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-08 12:57:35 -0800</bug_when>
    <thetext>Attachment 246246 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/ConsoleMessage.cpp:180:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:85:  [CppBackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains] Instance of &apos;CppBackendDispatcherHeaderGenerator&apos; has no &apos;wrap_with_guard_for_domain&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 112 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>1067822</commentid>
    <comment_count>5</comment_count>
      <attachid>246273</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-09 08:07:07 -0800</bug_when>
    <thetext>Created attachment 246273
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067823</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-09 08:08:14 -0800</bug_when>
    <thetext>Attachment 246273 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/ConsoleMessage.cpp:180:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:85:  [CppBackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains] Instance of &apos;CppBackendDispatcherHeaderGenerator&apos; has no &apos;wrap_with_guard_for_domain&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 111 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>1067882</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-02-09 12:26:21 -0800</bug_when>
    <thetext>&gt; /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos/DerivedSources/JavaScriptCore/InspectorBackendDispatchers.cpp:39:10: fatal error: &apos;Inspector::AlternateBackendDispatchers.h&apos; file not found
&gt; #include &quot;Inspector::AlternateBackendDispatchers.h&quot;
&gt;          ^
&gt; 1 error generated.

Hmm, weird name for an include seen on the iOS bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067884</commentid>
    <comment_count>8</comment_count>
      <attachid>246273</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-02-09 12:39:01 -0800</bug_when>
    <thetext>Comment on attachment 246273
Proposed Fix

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

Seems this could go another round to clean up Inspector::&apos;s. Overall I think its a good step forward tho. r- so I can see another patch. And I&apos;ll likely need to try a patch in advance to make sure Augmentation Agents stuff still works correct.

&gt; Source/JavaScriptCore/inspector/InspectorAgentBase.h:49
&gt; +    virtual void didCreateFrontendAndBackend(Inspector::FrontendChannel*, Inspector::BackendDispatcher*) = 0;
&gt; +    virtual void willDestroyFrontendAndBackend(Inspector::DisconnectReason) = 0;

No need for the &quot;Inspector::&quot; namespace here.

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h:75
&gt; +    void connectFrontend(Inspector::FrontendChannel*, bool isAutomaticInspection);
&gt; +    void disconnectFrontend(Inspector::DisconnectReason);

Likewise. Seems the FrontendChannel

&gt; Source/JavaScriptCore/inspector/agents/InspectorAgent.h:56
&gt; +    virtual void didCreateFrontendAndBackend(Inspector::FrontendChannel*, Inspector::BackendDispatcher*) override;
&gt; +    virtual void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override;

Ditto. Seems like move places with FrontendChannel / DisconnectReason can avoid it.

&gt; Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp:46
&gt; +    m_frontendDispatcher = std::make_unique&lt;Inspector::RuntimeFrontendDispatcher&gt;(frontendChannel);
&gt; +    m_backendDispatcher = Inspector::RuntimeBackendDispatcher::create(backendDispatcher, this);

Hmm, lots of unnecessary Inspector::&apos;s actually. Maybe that was intentional? I would expect FooBackendDispatcher classes to always be unique.

&gt; Source/JavaScriptCore/inspector/augmentable/AlternateDispatchableAgent.h:31
&gt; +#include &quot;Inspector::AlternateBackendDispatchers.h&quot;

This looks bad!

&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:59
&gt; +        secondary_includes.append(&apos;#include &quot;Inspector::AlternateBackendDispatchers.h&quot;&apos;)

This also looks bad.

&gt; Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result:1
&gt; +### Begin File: Inspector::AlternateBackendDispatchers.h

Eek.

&gt; Source/WebCore/WebCore.order:6337
&gt; +__ZN7WebCore19Inspector::Controller18disconnectFrontendEv

We shouldn&apos;t change the order file, and these changes wouldn&apos;t make sense.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h:56
&gt; -    WebCore::InspectorFrontendChannel* openInspectorFrontend(WebCore::InspectorController*) override;
&gt; +    Inspector::FrontendChannel* openInspectorFrontend(WebCore::InspectorController*) override;

Did we remove WebCore::InspectorFrontendChannel? I thought it was a typedef, that would prevent WebKit clients from having issue.

&gt; Source/WebKit2/mac/WebKit2.order:1676
&gt; +__ZN6WebKit12WebInspector6createEPNS_7WebPageEPN7WebCore15FrontendChannelE

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067903</commentid>
    <comment_count>9</comment_count>
      <attachid>246273</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-09 14:08:22 -0800</bug_when>
    <thetext>Comment on attachment 246273
Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/inspector/InspectorAgentBase.h:49
&gt;&gt; +    virtual void willDestroyFrontendAndBackend(Inspector::DisconnectReason) = 0;
&gt; 
&gt; No need for the &quot;Inspector::&quot; namespace here.

I opted to include it in headers, to make mass searching easier. But I think I&apos;ll remove it for code in JavaScriptCore.

&gt;&gt; Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp:46
&gt;&gt; +    m_backendDispatcher = Inspector::RuntimeBackendDispatcher::create(backendDispatcher, this);
&gt; 
&gt; Hmm, lots of unnecessary Inspector::&apos;s actually. Maybe that was intentional? I would expect FooBackendDispatcher classes to always be unique.

I think I prefer keeping the namespace for the per-agent classes, and removing it otherwise (DisconnectReason, etc).

&gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h:56
&gt;&gt; +    Inspector::FrontendChannel* openInspectorFrontend(WebCore::InspectorController*) override;
&gt; 
&gt; Did we remove WebCore::InspectorFrontendChannel? I thought it was a typedef, that would prevent WebKit clients from having issue.

it is re-exported from the WebCore namespace. This hasn&apos;t changed, but if WebKit clients are like to use this type, I&apos;ll change this line back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067907</commentid>
    <comment_count>10</comment_count>
      <attachid>246290</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-09 14:27:00 -0800</bug_when>
    <thetext>Created attachment 246290
Proposed Fix .2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067908</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-09 14:28:50 -0800</bug_when>
    <thetext>Attachment 246290 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/ConsoleMessage.cpp:180:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:85:  [CppBackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains] Instance of &apos;CppBackendDispatcherHeaderGenerator&apos; has no &apos;wrap_with_guard_for_domain&apos; member  [pylint/E1101] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 3 in 99 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>1067978</commentid>
    <comment_count>12</comment_count>
      <attachid>246310</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-09 19:39:27 -0800</bug_when>
    <thetext>Created attachment 246310
Patch (fix Windows)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067979</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-09 19:41:45 -0800</bug_when>
    <thetext>Attachment 246310 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/ConsoleMessage.cpp:180:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:85:  [CppBackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains] Instance of &apos;CppBackendDispatcherHeaderGenerator&apos; has no &apos;wrap_with_guard_for_domain&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 99 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>1069166</commentid>
    <comment_count>14</comment_count>
      <attachid>246586</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-02-14 00:00:48 -0800</bug_when>
    <thetext>Created attachment 246586
[PATCH] ObjC Generation Changes (needs test rebaseline)

These are the changes to get the ObjC Portion building properly.

- AlternateDispatchableAgent.h the template typename &quot;BackendDispatcher&quot; hilariously conflicted with the actual Inspector::BackendDispatcher. Make the typename clearer and avoid the conflict with &quot;TBackendDispatcher&quot;.
- many cases: s/AlternateInspector${domainName}/Alternate${domainName}/
- one case: s/Inspector${domainName}BackendDispatcher/${domainName}BackendDispatcher/

Back over to you Brian!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069167</commentid>
    <comment_count>15</comment_count>
      <attachid>246310</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-02-14 00:08:50 -0800</bug_when>
    <thetext>Comment on attachment 246310
Patch (fix Windows)

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

r=me with the ObjC fixes. Careful with the bots (Windows still looks red)

&gt; Source/JavaScriptCore/inspector/ConsoleMessage.cpp:180
&gt; -void ConsoleMessage::addToFrontend(InspectorConsoleFrontendDispatcher* consoleFrontendDispatcher, Inspector::InjectedScriptManager* injectedScriptManager, bool generatePreview)
&gt; +    void ConsoleMessage::addToFrontend(ConsoleFrontendDispatcher* consoleFrontendDispatcher, InjectedScriptManager* injectedScriptManager, bool generatePreview)

Style: Unexpected leading whitespace.

&gt; Source/JavaScriptCore/inspector/ConsoleMessage.cpp:233
&gt; +void ConsoleMessage::updateRepeatCountInConsole(Inspector::ConsoleFrontendDispatcher* consoleFrontendDispatcher)

Meh, I really don&apos;t think the Inspector::&apos;s are needed anymore for FrontendDispatchers / BackendDispatchers. You removed them in some places (see above). But I won&apos;t belabor the point.

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:105
&gt; -    ASSERT(!m_inspectorFrontendChannel);
&gt; -    ASSERT(!m_inspectorBackendDispatcher);
&gt; +    ASSERT(!m_frontendChannel);
&gt; +    ASSERT(!m_backendDispatcher);

I really like these member renames. 3 levels of &quot;inspector&quot; by this point. Inspector::InspectorController::m_inspector*

&gt; Source/JavaScriptCore/inspector/agents/InspectorAgent.h:43
&gt; +class InspectorFrontendDispatchers;

lolwhat? I think I typo&apos;d this a long time ago. This doesn&apos;t sound real. Drop the bad forward declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069198</commentid>
    <comment_count>16</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-14 09:38:29 -0800</bug_when>
    <thetext>Thanks for checking the ObjC stuff. I will land this once EWS runs clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069233</commentid>
    <comment_count>17</comment_count>
      <attachid>246603</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-14 12:07:55 -0800</bug_when>
    <thetext>Created attachment 246603
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069234</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-14 12:09:33 -0800</bug_when>
    <thetext>Attachment 246603 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:85:  [CppBackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains] Instance of &apos;CppBackendDispatcherHeaderGenerator&apos; has no &apos;wrap_with_guard_for_domain&apos; member  [pylint/E1101] [5]
Total errors found: 1 in 100 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>1069241</commentid>
    <comment_count>19</comment_count>
      <attachid>246605</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-14 12:51:03 -0800</bug_when>
    <thetext>Created attachment 246605
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069242</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-14 12:53:30 -0800</bug_when>
    <thetext>Attachment 246605 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:85:  [CppBackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains] Instance of &apos;CppBackendDispatcherHeaderGenerator&apos; has no &apos;wrap_with_guard_for_domain&apos; member  [pylint/E1101] [5]
Total errors found: 1 in 100 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>1069245</commentid>
    <comment_count>21</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-14 15:26:02 -0800</bug_when>
    <thetext>Committed r180116: &lt;http://trac.webkit.org/changeset/180116&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246246</attachid>
            <date>2015-02-08 12:55:29 -0800</date>
            <delta_ts>2015-02-09 08:07:02 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-141372-20150208125530.patch</filename>
            <type>text/plain</type>
            <size>343147</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODM2MjhiYTlhYmZjZGJhNDNmYzFhNzJmMDgxNWZlMzRmOTYzMTA1Li42ZDA5ZTEyZGQwMzI0Nzg3
ODU4NzljMTlkYWE3MTkwNGFmMWFhZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTYgQEAKKzIwMTUtMDItMDggIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ2hh
bmdlTG9nLTIwMTQtMDItMjA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29s
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeTo6
QWdlbnRSZWdpc3RyeSk6CisgICAgICAgIChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6OmFwcGVu
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6OmFwcGVuZEV4dHJhQWdlbnQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6
OmRpc2NhcmRBZ2VudHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5OjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kRXh0cmFBZ2VudCk6IERlbGV0
ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnk6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50UmVnaXN0cnk6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFn
ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpD
YWxsYmFja0Jhc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2Fs
bGJhY2tCYXNlOjppc0FjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRGYWlsdXJlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZElmQWN0aXZlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyOjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4pOgorICAgICAg
ICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAoSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IpOgorICAgICAgICAo
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcik6CisgICAgICAgIChJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OmdldEJvb2xlYW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OmdldEFycmF5KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OmdldFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKTogRGVsZXRlZC4KKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKTog
RGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OnNlbmRSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKTogRGVsZXRlZC4KKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIpOiBEZWxl
dGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKTogRGVsZXRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJh
eSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpnZXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmg6CisgICAgICAgIChJbnNwZWN0b3I6OlN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6CisgICAgICAgIChJ
bnNwZWN0b3I6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjp+U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNo
ZXIpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlcjo6fkluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6fkZyb250ZW5kQ2hhbm5l
bCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDo6fkluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpnbG9iYWxPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29u
bmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEV4dHJhQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6aGFuZGxlQ29uc29sZUFzc2VydCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNT
UCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9n
cmFtKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJC
cmVha0RldGFpbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJsZS9B
dWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3BwR2Vu
ZXJhdG9yLmNwcF90eXBlX2Zvcl9mb3JtYWxfb3V0X3BhcmFtZXRlcik6CisgICAgICAgIChDcHBH
ZW5lcmF0b3IuY3BwX3R5cGVfZm9yX3N0YWNrX291dF9wYXJhbWV0ZXIpOgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisgICAg
ICAgIChBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcik6CisgICAgICAgIChBbHRlcm5hdGUpOgor
ICAgICAgICAodm9pZCk6CisgICAgICAgIChBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcik6IERlbGV0ZWQuCisgICAgICAgIChBbHRlcm5hdGVJbnNwZWN0b3IpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVybmF0
ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQ3BwQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNo
ZXJfaGVhZGVyLnB5OgorICAgICAgICAoQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0
b3IuX2dlbmVyYXRlX2FsdGVybmF0ZV9oYW5kbGVyX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9k
b21haW5zLkFsdGVybmF0ZSk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdl
bmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6Cisg
ICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0
ZXJuYXRlX2hhbmRsZXJfZm9yd2FyZF9kZWNsYXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRl
SW5zcGVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAg
ICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRl
X291dHB1dCk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9oYW5kbGVyX2NsYXNzX2Rlc3RydWN0b3JfZm9yX2RvbWFpbik6Cisg
ICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5l
cmF0ZV9sYXJnZV9kaXNwYXRjaGVyX3N3aXRjaF9pbXBsZW1lbnRhdGlvbl9mb3JfZG9tYWluKToK
KyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dl
bmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9yX2NvbW1hbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBGcm9udGVuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9m
b3JfZXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoT2JqQ0JhY2tlbmRE
aXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHk6CisgICAgICAgIChPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5OgorICAgICAgICAoT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLl9nZW5lcmF0ZV9ldmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQt
c2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0
ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21h
aW4uanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNl
ZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmlu
Zy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpjb25uZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpk
aXNjb25uZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
OgorCiAyMDE1LTAyLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIFZlY3Rvcjo6cmVtb3ZlRmlyc3RNYXRjaGluZygpIC8gcmVtb3ZlQWxsTWF0Y2hpbmco
KSBtZXRob2RzIHRha2luZyBsYW1iZGEgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM1M2UxMDZl
NzI0OGU0NDEwOGNmYjUxNTRjODM4NzFmZTc0NTYyZS4uYzAxZWMxYjBkOTI5MThjYWE1NzM5YTE4
YzNhY2JjN2ZjYjVhOWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxNS0wMi0w
OCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgSW5zcGVjdG9yIHByZWZpeGVzIGZy
b20gY2xhc3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3cpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZElu
dmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2ls
bFNlbmRYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckluZGV4ZWREQkFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBsYXlB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsOjpXb3JrZXJGcm9udGVu
ZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVu
dGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyOjp+V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2VE
ZWJ1Z2dhYmxlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTWVzc2FnaW5nUHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKToKKwogMjAxNS0w
Mi0wNyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFY
OiBUaGUgaW5wdXQgZWxlbWVudCB3aXRoIHR5cGU9InNlYXJjaCIgaGFzIG5vIGRlZmF1bHQgZm9j
dXMgb3V0bGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZGY4YWZmYTA4NTYzNzhmZWE0ZWU5MTU0NDYwMGUzZjY4
ZWRkZGFlLi4zODBkMjBhYjEyNGRiZTNkZDlmYTA3NTI3ODk4ZTkxZWNjMTFhNGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAyLTA4ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53
YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgc29tZSB1bm5l
Y2Vzc2FyeSBJbnNwZWN0b3IgcHJlZml4ZXMgZnJvbSBjbGFzcyBuYW1lcyBpbiBJbnNwZWN0b3Ig
bmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDEzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbjoKKwogMjAxNS0wMi0wNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2luXSA2NC1iaXQgYnVpbGQgZml4IGFmdGVyIHIxNzk3MDIgYW5kIHIxNzk3
MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvaW9zL0NoYW5nZUxvZwppbmRleCAzZWY1ZjE2OGZiMDE4ODI2YWRkZTM0MTU4YmQxYjEyNjc3
NWQwYzliLi5hMjM0MGI0MzRjYmNlMTFiNDdiN2Q3YWMxODQ1Y2FkYTcxMjRhNGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDItMDggIEJyaWFuIEouIEJ1cmcgIDxi
dXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBz
b21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIElu
c3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorCiAyMDE1
LTAyLTAzICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gQWRkIHN1cHBvcnQgZm9yIGRlbGV0ZUZyb21JbnB1dFdpdGhGbGFncy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCBiOGEyNjZjZDVmYmYyMDJmZGE5YTBjZjRjMTgyNjI2ZWQzMjExNGQ2Li43YTNlZDk1
NTcxNjUwODVlNjg3OWM0NjBmNDZiMDE1Y2Q5ZDViMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTUtMDItMDggIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpv
cGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250
cm9sbGVyIGRlc3Ryb3lJbnNwZWN0b3JWaWV3Ol0pOgorICAgICAgICAqIFdlYktpdC5vcmRlcjoK
KwogMjAxNS0wMi0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZy
PiBhbmQgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgYSBiYXJlYm9uZSBSZWFkYWJsZVN0cmVhbSBp
bnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA4N2I1MzlmZWIxOTIyN2FkZGFhZTY4MzMwN2Zk
OWRiN2UwOWExM2E5Li4yYWQ2OTcxNmVkNGY3NzU1MjI5OTEyYjExMDljYmE4OGQyMWNkZGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDItMDggIEJyaWFuIEouIEJ1
cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJl
bW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVz
IGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yVmlldyk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisKIDIwMTUt
MDItMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVmVj
dG9yOjpyZW1vdmVGaXJzdE1hdGNoaW5nKCkgLyByZW1vdmVBbGxNYXRjaGluZygpIG1ldGhvZHMg
dGFraW5nIGxhbWJkYSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5NDg4ZTY5MDlmZGQ0NmMwYTAy
N2JiYWEyNjVkNGU4OTIwMTZhY2IwLi4wYmRiNTBjNmM3NDZlYWE5ODc3YzE0Yjk4YjhmYzM5MTQx
ODFkMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDItMDggIEJyaWFuIEou
IEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5h
bWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5J
bnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVu
ZERpc2Nvbm5lY3RlZCk6CisKIDIwMTUtMDItMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgVmVjdG9yOjpyZW1vdmVGaXJzdE1hdGNoaW5nKCkgLyByZW1v
dmVBbGxNYXRjaGluZygpIG1ldGhvZHMgdGFraW5nIGxhbWJkYSBmdW5jdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXgg
NTBlMTE0ODc0ZDE2Nzk0YWEwNTY3YWNiMjUxMTBjNjFjYmYwNGJhOC4uNWY3NjkwZTY3N2I0ZWU1
YmY2YjE1MDcyY2JlNGRkYTc0ODQ4NWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0
aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsIG1l
c3NhZ2VMZXZlbFZhbHVlKE1lcwogICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25z
b2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKIH0KIAotdm9pZCBDb25zb2xlTWVzc2Fn
ZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25z
b2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKKyAgICB2b2lkIENv
bnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNv
bnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsKICAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U+IGpzb25PYmogPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9zb3VyY2UpKQpAQCAtMjMwLDcgKzIzMCw3IEBA
IHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci0+
bWVzc2FnZUFkZGVkKFdURjo6bW92ZShqc29uT2JqKSk7CiB9CiAKLXZvaWQgQ29uc29sZU1lc3Nh
Z2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERp
c3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIpCit2b2lkIENvbnNvbGVNZXNzYWdl
Ojp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3I6OkNvbnNvbGVGcm9udGVuZERp
c3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIpCiB7CiAgICAgY29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChtX3JlcGVhdENvdW50KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
aAppbmRleCBlZjFjNzlkMTVjN2NlODczZjcwYWVhMTVkMTJkOTkzN2NlZGJmN2ZhLi44NDc2ZjFj
NmQ4YmQ0N2U5ZDE0NWZjMWEzMzE3NmJhOWU3ZDVhOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC01NSw4ICs1NSw4IEBAIHB1
YmxpYzoKICAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1l
bnRzPiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0g
MCk7CiAgICAgfkNvbnNvbGVNZXNzYWdlKCk7CiAKLSAgICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5z
cGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciosIEluamVjdGVkU2NyaXB0TWFuYWdlcios
IGJvb2wgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICB2b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25z
b2xlKEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqKTsKKyAgICB2b2lkIGFkZFRv
RnJvbnRlbmQoSW5zcGVjdG9yOjpDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpOworICAgIHZvaWQgdXBkYXRlUmVw
ZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yOjpDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7
CiAKICAgICBNZXNzYWdlU291cmNlIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dEJhc2UuaAppbmRleCA2MzlkMDQ4YjI3YWVmOTdlZDNmYzJkMmUwODhmNWViNjMzMDlhNWE2Li40
YWFiNGU4NjI1YzM5OTM0OGU2ZjM5ZDdjZTZmNGEzZjFjOTAwNWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKQEAgLTMx
LDEwICszMSwxMCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CitjbGFz
cyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKIAotZW51bSBjbGFz
cyBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHsKK2VudW0gY2xhc3MgRGlzY29ubmVjdFJlYXNv
biB7CiAgICAgSW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkLAogICAgIEluc3BlY3RvckRlc3Ryb3ll
ZAogfTsKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRvbWFpbk5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KIAog
cHJvdGVjdGVkOgpAQCAtNTcsNyArNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBTdHJpbmcgbV9u
YW1lOwogfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAh
ZGVmaW5lZChJbnNwZWN0b3JBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDQw
MTA4ZWI0OWI0ZTliZGQ0ODMzZjVhOGZhZDM1MzdlYmJkYmFiNGMuLmJjYzA5ODgyMTRhNjFkZjFl
YTY3MzQzZDUzMjI2MTUyNWU3ZWY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApAQCAtMzEsMTcg
KzMxLDE3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5OjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KCkKK0FnZW50UmVnaXN0cnk6OkFnZW50UmVnaXN0
cnkoKQogewogfQogCi12b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2VudCkKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6
YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQogewogICAg
IG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoYWdlbnQpKTsKIH0KIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
OjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFn
ZW50KQordm9pZCBBZ2VudFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQogewogICAgIG1fZXh0cmFEb21haW5zLmFwcGVu
ZChhZ2VudC0+ZG9tYWluTmFtZSgpKTsKIApAQCAtNDksMTkgKzQ5LDE5IEBAIHZvaWQgSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yQWdlbnRCYXNlCiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7
IGkrKykKICAgICAgICAgbV9hZ2VudHNbaV0tPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChm
cm9udGVuZENoYW5uZWwsIGJhY2tlbmREaXNwYXRjaGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7IGkrKykKICAgICAgICAgbV9hZ2VudHNbaV0t
PndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW50cygpCit2b2lkIEFnZW50UmVnaXN0cnk6OmRp
c2NhcmRBZ2VudHMoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2VudHMuc2l6
ZSgpOyBpKyspCiAgICAgICAgIG1fYWdlbnRzW2ldLT5kaXNjYXJkQWdlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmgKaW5kZXggOGI3NzU3ZjhjYTU1YjkyMzNmNWVkY2NjOGMzYmIyOWY3ZGY2NmNlZS4uYmVh
YjI3ZGZjM2RlODk0ZmJiZGRmYWQxYTk4OWFlYWRiZGQ5ZWM0NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgK
QEAgLTMyLDE5ICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xhc3MgQmFj
a2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JB
Z2VudEJhc2U7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKLWVudW0gY2xhc3MgSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bjsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7Citl
bnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFzb247CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFn
ZW50UmVnaXN0cnkgewogcHVibGljOgotICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkoKTsKKyAg
ICBBZ2VudFJlZ2lzdHJ5KCk7CiAKICAgICB2b2lkIGFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yQWdlbnRCYXNlPik7CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciop
OwotICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbiByZWFzb24pOworICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciopOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpAQCAtNTUsOCArNTYsOCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIC8vIFRoZXNlIGFyZSBkZWNsYXJlZCBoZXJlIHRvIGF2b2lkIE1T
VkMgZnJvbSB0cnlpbmcgdG8gY3JlYXRlIGRlZmF1bHQgaXBsZW1lbnRhdGlvbnMgd2hpY2ggd291
bGQKICAgICAvLyBpbnZvbHZlIGdlbmVyYXRpbmcgYSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBjb3B5
IGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIHRoZSBWZWN0b3Igb2Ygc3RkOjp1bmlxdWVfcHRycy4K
LSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KGNvbnN0IEluc3BlY3RvckFnZW50UmVnaXN0cnkm
KSA9IGRlbGV0ZTsKLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5JiBvcGVyYXRvcj0oY29uc3Qg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRlOworICAgIEFnZW50UmVnaXN0cnkoY29u
c3QgQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRlOworICAgIEFnZW50UmVnaXN0cnkmIG9wZXJhdG9y
PShjb25zdCBBZ2VudFJlZ2lzdHJ5JikgPSBkZWxldGU7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4+IG1fYWdlbnRzOwogI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRl
eCAzMTU2NGQ4NzQ1NGVlNTUxZWU2OTI1MDIzYTc1YmM1N2ExOTRlMzBlLi5mODhjZmJkYWJjMWRj
OWNlYWY4ZjUwMzBjNjc1ZDQ5NGQ3NjAzODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cApAQCAtMzQsMjUgKzM0LDI1IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUmVmPEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpCitCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUmVmPEJhY2tlbmREaXNw
YXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpCiAgICAgOiBtX2JhY2tlbmREaXNw
YXRjaGVyKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlcikpCiAgICAgLCBtX2lkKGlkKQogICAg
ICwgbV9hbHJlYWR5U2VudChmYWxzZSkKIHsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Citib29sIEJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1f
YWxyZWFkeVNlbnQgJiYgbV9iYWNrZW5kRGlzcGF0Y2hlci0+aXNBY3RpdmUoKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVyZShj
b25zdCBFcnJvclN0cmluZyYgZXJyb3IpCit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2U6OnNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJiBlcnJvcikKIHsKICAgICBBU1NF
UlQoZXJyb3IubGVuZ3RoKCkpOwogICAgIHNlbmRJZkFjdGl2ZShudWxscHRyLCBlcnJvcik7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZElm
QWN0aXZlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVy
cm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpCit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U6OnNlbmRJZkFjdGl2ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBhcnRpYWxN
ZXNzYWdlLCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKQogewogICAgIGlmICht
X2FscmVhZHlTZW50KQogICAgICAgICByZXR1cm47CkBAIC02MSwyMCArNjEsMjAgQEAgdm9pZCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kSWZBY3RpdmUoUmVm
UHRyPEluc3BlY3Rvck9iamUKICAgICBtX2FscmVhZHlTZW50ID0gdHJ1ZTsKIH0KIAotUmVmPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQor
UmVmPEJhY2tlbmREaXNwYXRjaGVyPiBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEJhY2tlbmREaXNwYXRjaGVyKGZyb250ZW5kQ2hhbm5lbCkp
OwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZWdpc3RlckRpc3BhdGNo
ZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIEluc3BlY3RvclN1cHBsZW1lbnRhbEJh
Y2tlbmREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVn
aXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluLCBTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1f
ZGlzcGF0Y2hlcnMuYWRkKGRvbWFpbiwgZGlzcGF0Y2hlcik7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBCYWNrZW5kRGlz
cGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJhY2tlbmRE
aXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
cGFyc2VkTWVzc2FnZTsKICAgICBpZiAoIUluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2Fn
ZSwgcGFyc2VkTWVzc2FnZSkpIHsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgfQog
CiAgICAgU3RyaW5nIGRvbWFpbiA9IG1ldGhvZC5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOwotICAg
IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKiBkb21haW5EaXNwYXRjaGVy
ID0gbV9kaXNwYXRjaGVycy5nZXQoZG9tYWluKTsKKyAgICBTdXBwbGVtZW50YWxCYWNrZW5kRGlz
cGF0Y2hlciogZG9tYWluRGlzcGF0Y2hlciA9IG1fZGlzcGF0Y2hlcnMuZ2V0KGRvbWFpbik7CiAg
ICAgaWYgKCFkb21haW5EaXNwYXRjaGVyKSB7CiAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3Io
JmNhbGxJZCwgTWV0aG9kTm90Rm91bmQsICInIiArIGRvbWFpbiArICInIGRvbWFpbiB3YXMgbm90
IGZvdW5kIik7CiAgICAgICAgIHJldHVybjsKQEAgLTEyOSw5ICsxMjksOSBAQCB2b2lkIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAg
ICAgZG9tYWluRGlzcGF0Y2hlci0+ZGlzcGF0Y2goY2FsbElkLCBkb21haW5NZXRob2QsIG1lc3Nh
Z2VPYmplY3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mJiByZXN1bHQsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpCit2b2lkIEJh
Y2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiYgcmVzdWx0LCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKQog
ewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250
ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGludm9jYXRpb25FcnJvci5s
ZW5ndGgoKSkgewpAQCAtMTQyLDE1ICsxNDIsMTUgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWMK
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXNwb25zZU1lc3NhZ2UgPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJh
bCgicmVzdWx0IiksIHJlc3VsdCk7CiAgICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRJbnRlZ2VyKEFT
Q0lJTGl0ZXJhbCgiaWQiKSwgY2FsbElkKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJlc3BvbnNlTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkp
OworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVzcG9uc2VN
ZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21t
b25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3QK
K3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyog
Y29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkgY29uc3QKIHsKICAgICByZXBvcnRQcm90b2NvbEVycm9yKGNhbGxJZCwgZXJy
b3JDb2RlLCBlcnJvck1lc3NhZ2UsIG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJ
ZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGRhdGEpIGNvbnN0
Cit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcq
IGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYm
IGRhdGEpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBlcnJvckNvZGVzW10gPSB7CiAg
ICAgICAgIC0zMjcwMCwgLy8gUGFyc2VFcnJvcgpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyog
Y29uc3QgY2FsbElkLCBDCiAgICAgQVNTRVJUX0FSRyhlcnJvckNvZGUsICh1bnNpZ25lZCllcnJv
ckNvZGUgPCBXVEZfQVJSQVlfTEVOR1RIKGVycm9yQ29kZXMpKTsKICAgICBBU1NFUlRfQVJHKGVy
cm9yQ29kZSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKIAotICAgIGlmICghbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXJyb3IgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiAg
ICAgZWxzZQogICAgICAgICBtZXNzYWdlLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoImlkIiksIElu
c3BlY3RvclZhbHVlOjpudWxsKCkpOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwt
PnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9m
cm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlLT50b0pTT05TdHJp
bmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUg
VmFsdWVUeXBlLCB0eXBlbmFtZSBEZWZhdWx0VmFsdWVUeXBlPgpAQCAtMjI3LDM3ICsyMjcsMzcg
QEAgc3RydWN0IEFzTWV0aG9kQnJpZGdlcyB7CiAgICAgc3RhdGljIGJvb2wgYXNWYWx1ZShJbnNw
ZWN0b3JWYWx1ZSYgdmFsdWUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mIG91dHB1dCkgeyByZXR1
cm4gdmFsdWUuYXNWYWx1ZShvdXRwdXQpOyB9CiB9OwogCi1pbnQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPiYgcHJvdG9jb2xFcnJvcnMpCitpbnQgQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIo
SW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVG
b3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMp
CiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8aW50LCBpbnQsIGludD4ob2JqZWN0LCBu
YW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwgQXNNZXRob2RCcmlkZ2VzOjphc0lu
dGVnZXIsICJJbnRlZ2VyIik7CiB9CiAKLWRvdWJsZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Z2V0RG91YmxlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHBy
b3RvY29sRXJyb3JzKQorZG91YmxlIEJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUoSW5zcGVj
dG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAg
ICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8ZG91YmxlLCBkb3VibGUsIGRvdWJsZT4ob2JqZWN0
LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwgQXNNZXRob2RCcmlkZ2VzOjph
c0RvdWJsZSwgIk51bWJlciIpOwogfQogCi1TdHJpbmcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmdldFN0cmluZyhJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBw
cm90b2NvbEVycm9ycykKK1N0cmluZyBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKEluc3Bl
Y3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewog
ICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFN0cmluZywgU3RyaW5nLCBTdHJpbmc+KG9iamVj
dCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsICIiLCBBc01ldGhvZEJyaWRnZXM6
OmFzU3RyaW5nLCAiU3RyaW5nIik7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmdldEJvb2xlYW4oSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYg
cHJvdG9jb2xFcnJvcnMpCitib29sIEJhY2tlbmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKEluc3Bl
Y3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewog
ICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPGJvb2wsIGJvb2wsIGJvb2w+KG9iamVjdCwgbmFt
ZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIGZhbHNlLCBBc01ldGhvZEJyaWRnZXM6OmFz
Qm9vbGVhbiwgIkJvb2xlYW4iKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5
VmFsdWU8UmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBJ
bnNwZWN0b3JPYmplY3QqPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3Jz
LCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6OmFzT2JqZWN0LCAiT2JqZWN0Iik7CiB9CiAKLVJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5
KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVl
Rm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3Jz
KQorUmVmUHRyPEluc3BlY3RvckFycmF5PiBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkoSW5z
cGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3Vu
ZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7
CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UmVmUHRyPEluc3BlY3RvckFycmF5PiwgUmVm
UHRyPEluc3BlY3RvckFycmF5PiwgSW5zcGVjdG9yQXJyYXkqPihvYmplY3QsIG5hbWUsIHZhbHVl
Rm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6OmFzQXJyYXks
ICJBcnJheSIpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+JiBwcm90b2NvbEVycm9ycykKK1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gQmFja2VuZERpc3Bh
dGNoZXI6OmdldFZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4m
IHByb3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4sIEluc3BlY3RvclZhbHVlKj4o
b2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgbnVsbHB0ciwgQXNNZXRo
b2RCcmlkZ2VzOjphc1ZhbHVlLCAiVmFsdWUiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApp
bmRleCAwZjBhMjQ1OWExOWNmMWU3ZDQ2Y2I0MmQ1NjdjYmM3ZDAyZjRjNmFkLi5iMzAzNzAwYTIw
OWJiMjIyNjZiYWU4ZjRlNGRlOGRkMzI2ZmI5NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
CkBAIC0zMywyNyArMzMsMjggQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OworY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CisKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFzcyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyPiB7CiBw
dWJsaWM6Ci0gICAgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQorICAgIFN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikK
ICAgICAgICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKSB7IH0KLSAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQor
ICAgIHZpcnR1YWwgflN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVm
PEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZjxC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKLWNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QmFja2VuZERpc3BhdGNoZXI+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBj
cmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgc3RhdGljIFJlZjxCYWNrZW5k
RGlzcGF0Y2hlcj4gY3JlYXRlKEZyb250ZW5kQ2hhbm5lbCopOwogCiAgICAgY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgQ2FsbGJhY2tCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tCYXNl
PiB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsYmFja0Jhc2UoUmVmPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICBDYWxsYmFja0Jhc2UoUmVmPEJhY2tl
bmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwogCiAgICAgICAgIGJvb2wgaXNBY3RpdmUoKSBjb25z
dDsKICAgICAgICAgdm9pZCBzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYpOwpAQCAtNjMs
MTMgKzY0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZW5kSWZBY3RpdmUoUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mJiBwYXJ0aWFsTWVzc2FnZSwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9j
YXRpb25FcnJvcik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWY8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgICAgIFJlZjxCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICAgICAgaW50IG1faWQ7CiAgICAgICAg
IGJvb2wgbV9hbHJlYWR5U2VudDsKICAgICB9OwogCi0gICAgdm9pZCBjbGVhckZyb250ZW5kKCkg
eyBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7IH0KLSAgICBib29sIGlzQWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQorICAg
IHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOyB9Cisg
ICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9mcm9udGVuZENoYW5uZWw7IH0K
IAogICAgIGVudW0gQ29tbW9uRXJyb3JDb2RlIHsKICAgICAgICAgUGFyc2VFcnJvciA9IDAsCkBA
IC04MCw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU2VydmVyRXJyb3IKICAgICB9OwogCi0g
ICAgdm9pZCByZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4s
IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCByZWdp
c3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIFN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCBkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogICAgIHZvaWQgc2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYmIHJlc3VsdCwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcik7
CiAgICAgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwg
Q29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3Q7CkBAIC05
NSwxMCArOTYsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGdldEFycmF5KEluc3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFs
dWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJv
cnMpOwogCiBwcml2YXRlOgotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CisgICAgQmFja2Vu
ZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBGcm9udGVuZENoYW5uZWwpCisgICAgICAgIDog
bV9mcm9udGVuZENoYW5uZWwoRnJvbnRlbmRDaGFubmVsKSB7IH0KIAotICAgIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0gICAgSGFzaE1hcDxT
dHJpbmcsIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKj4gbV9kaXNwYXRj
aGVyczsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOworICAgIEhhc2hN
YXA8U3RyaW5nLCBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hlcnM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCmluZGV4
IGZhMGE4ZWFlODM5ZjVmZTQ3MTc0ZTRjYmJjOWRlNTc0MzJhNmI5NjEuLmEyYmY2ZjNjMjRmZTlh
MzMwZGEzY2ZkYWVhN2IyY2NmNjhjMzgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApAQCAtMzAs
OSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsIHsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgdmly
dHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCkgeyB9CisgICAgdmlydHVhbCB+RnJvbnRl
bmRDaGFubmVsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCA2NTUzZDU2YWNmZWI2NTk2MzAyYWVmNjNjNjFjYTQ1ZmE5
YzI1NWEwLi41YjQzNTA0NDliYTgxNDgzOWRmODg0YTk2NjJhZGRiOTlmZTE4MzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigq
dGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCi0gICAgLCBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbChudWxscHRyKQorICAgICwgbV9mcm9udGVuZENoYW5uZWwobnVsbHB0cikK
ICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBt
X2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9ucyh0cnVlKQogICAgICwgbV9pc0F1
dG9tYXRpY0luc3BlY3Rpb24oZmFsc2UpCkBAIC05NCwyMiArOTQsMjIgQEAgSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjp+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
KCkKIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6Omdsb2JhbE9iamVj
dERlc3Ryb3llZCgpCiB7Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEZyb250
ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAKICAgICBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogfQogCi12b2lkIEpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikK
K3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQo
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0
aW9uKQogewotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOwotICAgIEFT
U0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcik7CisgICAgQVNTRVJUKCFtX2Zyb250
ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUKCFtX2JhY2tlbmREaXNwYXRjaGVyKTsKIAogICAgIG1f
aXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNBdXRvbWF0aWNJbnNwZWN0aW9uOwogCi0gICAgbV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5uZWw7Ci0gICAgbV9pbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
ZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5l
bDsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShm
cm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5l
bCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJh
RG9tYWlucyhtX2FnZW50cy5leHRyYURvbWFpbnMoKSk7CkBAIC0xMTksMTYgKzExOSwxNiBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbAogI2VuZGlmCiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbiByZWFzb24pCit2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewotICAgIGlmICgh
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQocmVhc29uKTsKIAotICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXItPmNsZWFy
RnJvbnRlbmQoKTsKLSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7Ci0g
ICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRyOworICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFy
KCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV9pc0F1dG9tYXRp
Y0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAtMTQwLDggKzE0MCw4IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNw
YXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlm
IChtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBpZiAobV9iYWNrZW5kRGlzcGF0
Y2hlcikKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CiB9
CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRBUElCYWNr
dHJhY2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCkBAIC0yMzEsMTIgKzIzMSwxMiBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6YXBwZW5kRXh0cmFBZ2VudChz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogewogICAgIFN0cmluZyBkb21haW5OYW1lID0gYWdlbnQt
PmRvbWFpbk5hbWUoKTsKIAotICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAg
ICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgaWYg
KG1fZnJvbnRlbmRDaGFubmVsKQorICAgICAgICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAog
ICAgIG1fYWdlbnRzLmFwcGVuZEV4dHJhQWdlbnQoV1RGOjptb3ZlKGFnZW50KSk7CiAKLSAgICBp
ZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKG1fZnJvbnRlbmRDaGFubmVs
KQogICAgICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbk5h
bWUpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRl
eCA3NjBmNzBmYTI4ZDBkNjVlYzQ3NmQ1MmViM2VkZGY4YjliZmVmZmRmLi44NTUwODQ0NDdmNjdi
M2MzOTc3YWNjOGQ4N2I5ZTNhNzY0NWRiOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBKU1ZhbHVlOwogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAorY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVu
ZENoYW5uZWw7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JB
Z2VudDsKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9y
Q29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDsK
IGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAg
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsK
ICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGNv
bm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGlj
SW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbiByZWFzb24pOworICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOworICAgIHZvaWQg
ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7CiAgICAgdm9p
ZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lk
IGdsb2JhbE9iamVjdERlc3Ryb3llZCgpOwpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXVn
bWVudGluZ0NsaWVudDsgfSAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0
b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCog
Y2xpZW50KSBvdmVycmlkZSB7IG1fYXVnbWVudGluZ0NsaWVudCA9IGNsaWVudDsgfQogCi0gICAg
dmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOyB9CisgICAgdmly
dHVhbCBGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZnJvbnRlbmRDaGFubmVsOyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEV4dHJh
QWdlbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4pIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKQEAgLTExMCw5ICsxMTAsOSBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KiBt
X2luc3BlY3RvckFnZW50OwogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9jb25zb2xlQWdl
bnQ7CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwotICAgIElu
c3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CisgICAgQWdlbnRS
ZWdpc3RyeSBtX2FnZW50czsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVs
OworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAg
ICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwogICAgIGJvb2wgbV9p
bmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnM7CiAgICAgYm9vbCBtX2lzQXV0b21h
dGljSW5zcGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCBlNjJlYzJlYzA0YjBhOGIzYjZh
Y2FmMjEwZDk4ODY4N2VmZTQxOGEwLi4yYmE4YzJhZGUzZjk3OWZjNzQzNTY0ODBlYTAxODM2NTFh
MmYzMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgSW5zcGVjdG9y
QWdlbnQ6On5JbnNwZWN0b3JBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvckluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4o
ZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvckFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5oCmluZGV4IDM4YzllZWYyNzczMWE2OGRmMDA4OTVhNzVkNzVlNmY1ODVi
MWQzNGMuLmViYTIyYTEyMGI0ZDVlNDU3MjA3MTU0MWJjZDE1NTQxMmMzNjJmMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QWdlbnQuaApAQCAtMzgsMjIgKzM4LDIyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCitj
bGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckVudmlyb25tZW50OwotY2xh
c3MgSW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JJ
bnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmREaXNw
YXRjaGVyczsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvckluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JB
Z2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEluc3BlY3RvckFnZW50KEluc3BlY3RvckVudmlyb25tZW50Jik7CiAgICAgdmly
dHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJy
b3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRz
OwogICAgIHN0ZDo6cGFpcjxSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4s
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwCmluZGV4IDA1MDUxMTkzMTdlM2EyMTRkYjg4OTFlOTkyN2I3NmQxNzQyNTdhZmUu
LjdiNzg5YTY5N2U2YjBkNDhlYmEyOWIyYjRlMTVlMzdlNWZkZmNiMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6fkluc3BlY3RvckNvbnNvbGVBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6
Q29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5k
ZXggNzI2MmMwNzVhZDIwMjEyMWI1M2MwYjViNjM4MmFiZjhhYzE2ZmYxZC4uNDJiMzQzOWIzMTYx
N2NlMmE2NDk5ZGVlNzJkZGUyMmNjZWZkZWUxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmgKQEAgLTQ4LDE1ICs0OCwxNSBAQCBjbGFzcyBTY3JpcHRBcmd1bWVudHM7CiBjbGFzcyBTY3Jp
cHRDYWxsU3RhY2s7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSwgcHVibGljIEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewor
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6Q29uc29sZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29uc29sZUFn
ZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0
b3JDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yQ29uc29sZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKQEAgLTgxLDggKzgxLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPik7CiAKICAgICBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
ICAgICBDb25zb2xlTWVzc2FnZSogbV9wcmV2aW91c01lc3NhZ2U7CiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4+IG1fY29uc29sZU1lc3NhZ2VzOwogICAgIGludCBt
X2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCAzYWU3NjA5Y2FlMjBiN2FmMGFmMzYzNzM2OWI3ZjQyYzc0ODJmZDIwLi5iZjY4
NTQzZmM0OGY5ZDAzZDYwMGE0MzgzZGJjNDdmOWQ4NjkxODI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNjgsMTggKzY4LDE4IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6On5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewot
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpEZWJ1Z2dl
ckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQog
Ci12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29u
IHJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCi0gICAgYm9vbCBza2lwUmVjb21waWxlID0gcmVh
c29uID09IEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3ll
ZDsKKyAgICBib29sIHNraXBSZWNvbXBpbGUgPSByZWFzb24gPT0gRGlzY29ubmVjdFJlYXNvbjo6
SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkOwogICAgIGRpc2FibGUoc2tpcFJlY29tcGlsZSk7CiB9
CiAKQEAgLTE4MSw3ICsxODEsNyBAQCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpidWlsZEV4Y2VwdGlvblBhdXNlUmVhc29uKGNvbnN0CiB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRsZUNvbnNvbGVBc3NlcnQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3Rh
dGUoKSAhPSBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpCi0gICAgICAgIGJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpB
c3NlcnQsIGJ1aWxkQXNzZXJ0UGF1c2VSZWFzb24obWVzc2FnZSkpOworICAgICAgICBicmVha1By
b2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpBc3Nl
cnQsIGJ1aWxkQXNzZXJ0UGF1c2VSZWFzb24obWVzc2FnZSkpOwogfQogCiBzdGF0aWMgUmVmPElu
c3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0cmlu
ZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBj
b25kaXRpb24sIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGFjdGlvbnMsIGJvb2wgaXNSZWdleCwg
Ym9vbCBhdXRvQ29udGludWUpCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdAogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWlscyhlcnJvclN0cmluZywg
ZnVuY3Rpb25JZCwgJmRldGFpbHMpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBk
YXRhKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0U3Rh
dGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVh
a1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKQogewogICAgIGlmIChtX2ph
dmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDkyLDcgKzQ5Miw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1l
bnQoKQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKEVycm9yU3RyaW5nJikK
IHsKLSAgICBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OlBhdXNlT25OZXh0U3RhdGVtZW50LCBudWxscHRyKTsK
KyAgICBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6UGF1c2VPbk5leHRTdGF0ZW1lbnQsIG51bGxwdHIpOwog
CiAgICAgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQgPSB0cnVlOwogfQpAQCAtNTgyLDcgKzU4
Miw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0T3ZlcmxheU1lc3NhZ2UoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqKQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
Y3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KQog
ewogICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAh
PSBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpCi0gICAgICAgIGJyZWFrUHJv
Z3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpDU1BWaW9s
YXRpb24sIGJ1aWxkQ1NQVmlvbGF0aW9uUGF1c2VSZWFzb24oZGlyZWN0aXZlVGV4dCkpOworICAg
ICAgICBicmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpDU1BWaW9sYXRpb24sIGJ1aWxkQ1NQVmlvbGF0aW9uUGF1c2VSZWFzb24oZGlyZWN0
aXZlVGV4dCkpOwogfQogCiBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmN1cnJlbnRDYWxsRnJhbWVzKEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0KQpAQCAtNjY0
LDIyICs2NjQsMjIgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6
OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2EKICAgICBJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlw
dEZvcihzY3JpcHRTdGF0ZSk7CiAKICAgICAvLyBJZiBhIGhpZ2ggbGV2ZWwgcGF1c2UgcGF1c2Ug
cmVhc29uIGlzIG5vdCBhbHJlYWR5IHNldCwgdHJ5IHRvIGluZmVyIGEgcmVhc29uIGZyb20gdGhl
IGRlYnVnZ2VyLgotICAgIGlmIChtX2JyZWFrUmVhc29uID09IEluc3BlY3RvckRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok90aGVyKSB7CisgICAgaWYgKG1fYnJlYWtSZWFzb24g
PT0gSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpPdGhlcikg
ewogICAgICAgICBzd2l0Y2ggKHNjcmlwdERlYnVnU2VydmVyKCkucmVhc29uRm9yUGF1c2UoKSkg
ewogICAgICAgICBjYXNlIEpTQzo6RGVidWdnZXI6OlBhdXNlZEZvckJyZWFrcG9pbnQ6IHsKICAg
ICAgICAgICAgIEpTQzo6QnJlYWtwb2ludElEIGRlYnVnZ2VyQnJlYWtwb2ludElkID0gc2NyaXB0
RGVidWdTZXJ2ZXIoKS5wYXVzaW5nQnJlYWtwb2ludElEKCk7CiAgICAgICAgICAgICBpZiAoZGVi
dWdnZXJCcmVha3BvaW50SWQgIT0gbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQpIHsK
LSAgICAgICAgICAgICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbjo6QnJlYWtwb2ludDsKKyAgICAgICAgICAgICAgICBtX2JyZWFr
UmVhc29uID0gSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpC
cmVha3BvaW50OwogICAgICAgICAgICAgICAgIG1fYnJlYWtBdXhEYXRhID0gYnVpbGRCcmVha3Bv
aW50UGF1c2VSZWFzb24oZGVidWdnZXJCcmVha3BvaW50SWQpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBKU0M6OkRlYnVnZ2VyOjpQ
YXVzZWRGb3JEZWJ1Z2dlclN0YXRlbWVudDoKLSAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBJ
bnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpEZWJ1Z2dlclN0YXRl
bWVudDsKKyAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRlYnVnZ2VyU3RhdGVtZW50OwogICAgICAgICAgICAg
bV9icmVha0F1eERhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgSlNDOjpEZWJ1Z2dlcjo6UGF1c2VkRm9yRXhjZXB0aW9uOgotICAgICAgICAgICAgbV9icmVh
a1JlYXNvbiA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV4
Y2VwdGlvbjsKKyAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV4Y2VwdGlvbjsKICAgICAgICAgICAgIG1fYnJl
YWtBdXhEYXRhID0gYnVpbGRFeGNlcHRpb25QYXVzZVJlYXNvbihleGNlcHRpb25PckNhdWdodFZh
bHVlLCBpbmplY3RlZFNjcmlwdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBK
U0M6OkRlYnVnZ2VyOjpQYXVzZWRBdFN0YXRlbWVudDoKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENvbnRpbnVlKCkKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+cmVzdW1lZCgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJy
ZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpCit2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYg
ZGF0YSkKIHsKICAgICBtX2JyZWFrUmVhc29uID0gYnJlYWtSZWFzb247CiAgICAgbV9icmVha0F1
eERhdGEgPSBXVEY6Om1vdmUoZGF0YSk7CkBAIC04MTQsNyArODE0LDcgQEAgYm9vbCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Ojphc3NlcnRQYXVzZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQog
CiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyQnJlYWtEZXRhaWxzKCkKIHsKLSAg
ICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6T3RoZXI7CisgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXI7CiAgICAgbV9icmVha0F1eERhdGEgPSBudWxs
cHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggOWJlMzIzMzE1MTA5
NDU1ODc4YjAxYzM0YjA2MThjNTYzODE0NDUyYy4uM2JlNTA5ZWY4ZDg3YzdmM2Q3ZjU5YjRiNmY1
MDA0NmVhMjhjNTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNTcsNyAr
NTcsNyBAQCBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
U2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0
ZW5lciwgcHVibGljIEluc3BlY3Rvcjo6RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNjUsOCArNjUsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTkxLDkgKzkxLDkgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgaGFuZGxlQ29uc29sZUFzc2VydChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogCi0gICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3Rv
ckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24sIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYgZGF0YSk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3Rh
dGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVh
a1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKTsKICAgICB2b2lkIGNhbmNl
bFBhdXNlT25OZXh0U3RhdGVtZW50KCk7Ci0gICAgdm9pZCBicmVha1Byb2dyYW0oSW5zcGVjdG9y
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mJiBkYXRhKTsKKyAgICB2b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6
OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24sIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYgZGF0YSk7CiAgICAgdm9pZCBzY3JpcHRFeGVjdXRpb25CbG9ja2Vk
QnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsKIAogICAgIGNsYXNzIExpc3RlbmVy
IHsKQEAgLTE1NSw4ICsxNTUsOCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxKU0M6
OkJyZWFrcG9pbnRJRCwgU3RyaW5nPiBEZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRFRvQnJlYWtwb2lu
dElkZW50aWZpZXI7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3RvckRl
YnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgTGlzdGVuZXIqIG1fbGlzdGVuZXIge251
bGxwdHJ9OwogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlIHtudWxscHRy
fTsKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CkBAIC0x
NjUsNyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICBCcmVha3BvaW50SWRlbnRpZmllclRvQnJlYWtw
b2ludE1hcCBtX2phdmFTY3JpcHRCcmVha3BvaW50czsKICAgICBEZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJRFRvQnJlYWtwb2ludElkZW50aWZpZXIgbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVy
VG9JbnNwZWN0b3JCcmVha3BvaW50SWRlbnRpZmllcjsKICAgICBKU0M6OkJyZWFrcG9pbnRJRCBt
X2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRDsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIG1fYnJlYWtSZWFzb247CisgICAgSW5zcGVjdG9yOjpE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIG1fYnJlYWtSZWFzb247CiAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gbV9icmVha0F1eERhdGE7CiAgICAgYm9vbCBtX2VuYWJsZWQg
e2ZhbHNlfTsKICAgICBib29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkIHtmYWxzZX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCA5Yzk3MjVhNWZiMDg3NzgxMzM4ZjNl
ZTU3YmQxNTNkZGZhNTQzNjE5Li5mNDUzOTM1ZWIwODdlZDYzMjQwYTBkOTgzNzkyMzJiZTk0OGE4
YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTI5Niw5ICsyOTYsOSBA
QCBzdGF0aWMgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc0ZvclR5cGVQcm9maWxpbmcoVk0m
IHZtLCBib29sIHNob3VsZEVuYWJsZVR5cAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKQordm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewotICAgIGlmIChy
ZWFzb24gIT0gSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJv
eWVkICYmIG1faXNUeXBlUHJvZmlsaW5nRW5hYmxlZCkKKyAgICBpZiAocmVhc29uICE9IERpc2Nv
bm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCAmJiBtX2lzVHlwZVByb2ZpbGlu
Z0VuYWJsZWQpCiAgICAgICAgIHNldFR5cGVQcm9maWxlckVuYWJsZWRTdGF0ZShmYWxzZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggMDdlNGZlY2Y5NzBjZDk3MDJhNGJm
OWViNTAzYTZlZjk4NjZkMjVlNC4uNjZlZTE1Yzk0ZWI5ZmZhNDFjYTA2NTU1YjhhMWRmMzdkMWI4
MTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTUwLDEyICs1MCwxMiBAQCBj
bGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvclJ1
bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JS
dW50aW1lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclJ1bnRpbWVBZ2VudCk7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SW5zcGVjdG9yUnVudGltZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IGZh
bHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZGM0
NGNjN2ZmNjEyMTFiNjc3MjZiMzBjYmI0ZjRhMGNiMzg4MTdmMS4uNTEzZGY1YmMxNzNkNTBmMjMz
OGExYWYxMDg5N2ZhOWM0ZDU1MDY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmNwcApAQCAtNDAsMTMgKzQwLDEzIEBAIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluCiB7
CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50
aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Cisg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UnVu
dGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24gcmVhc29uKQordm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xl
YXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCmluZGV4IGM2NTA2OGU2
ODllYzQ1M2EzYzI1NDNhNmY4ZDQ4NTdlZTA4Y2Y3OTcuLjk2NDAwZTNlOTliY2Q2OGJlNzU5ZTEx
NjE4YTQwNzNkMDY5MjA3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
aApAQCAtMzgsOCArMzgsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgewogcHVibGljOgogICAgIEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciosIEpTQzo6SlNHbG9iYWxP
YmplY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgSlNDOjpWTSYgZ2xvYmFsVk0oKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0
cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKQEAgLTUwLDgg
KzUwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJp
ZGUgeyB9CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclJ1bnRpbWVG
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9m
cm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qm
IG1fZ2xvYmFsT2JqZWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRj
aGFibGVBZ2VudC5oCmluZGV4IDhmN2I0NzA0MWFkODIwODZlZDRiZmFlYzcyMGM0MzJhNjg0ZGUz
MTUuLjQxZmRlZmEwYzI3ZjE2YmRjNzc3OTE3Nzk4NzQ0OTA2MTUyZThjNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JBZ2VudEJhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDUsMTQgKzQ1LDE0
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpIG92ZXJyaWRlCisgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIG51bGxwdHIpOwogICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5zZXRBbHRlcm5hdGVEaXNwYXRjaGVyKG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
ci5nZXQoKSk7CiAgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0QmFja2VuZERpc3Bh
dGNoZXIoYmFja2VuZERpc3BhdGNoZXIpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVy
cmlkZQorICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5z
ZXRCYWNrZW5kRGlzcGF0Y2hlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDhhOGU3YWQxMDJjNDRkNTI5OGVmYWJk
NTZjY2VkMDI5MzJiODJlMWUuLjQ2MGQ1ZWQ4MzRmY2NmYzdhOTU3MjA2ZWM0ZjI2MDY3YmJjNGYz
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFi
bGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNs
aWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNwZWN0
b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCop
ID0gMDsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRF
eHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KSA9IDA7CiAKICAg
ICBib29sIGNvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhZnJvbnRlbmRDaGFubmVsKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaAppbmRleCBkZDZhYTQ3OGM4ZDQ4ZTI3
OTYzNGNjMDBlYzA1YzliYjUyNTU3YjgzLi5jYmRlOTljOWIxMzIyNDBmZTMyOTg3MGM4YmM0YTk5
ODk5ZDg0NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC0zNCw3
ICszNCw4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CisKIHN0cnVjdCBSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbzsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZSB7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKICAgICB2aXJ0
dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNjb25uZWN0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VG
cm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgeyB9IC8vIERlZmF1bHQgaXMgdG8gZG8gbm90aGlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5o
CmluZGV4IDU0MjUxMTE0ZTYzYWM1NGE4MzU0Mzg2NmFkYjU0MjM3ZWM5NDFiZWIuLjFkNzQ4YTBh
Njk3MWYxYTYxZDM4ZTZlZDYyOGUyYjdiMTgwYTczYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaApAQCAtNzQsNyArNzQsNyBAQCBwcml2
YXRlOgogCiB0eXBlZGVmIFZlY3RvcjxSZW1vdGVJbnNwZWN0b3JCbG9jaz4gUmVtb3RlSW5zcGVj
dG9yUXVldWU7CiAKLWNsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uIGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uPiwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CitjbGFzcyBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4sIHB1Ymxp
YyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAgICAgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSosIE5TU3Ry
aW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSk7CiAgICAgdmlydHVhbCB+UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJh
dG9yLnB5CmluZGV4IDAyMTE1YWUxYmZmMzM2MGQyMjY0ZjBhNDAxZGVjYjE0ZjhlYzQ1NWMuLmRm
OTBiZTkyZDViNGY1MzRhZWYwYzNlMDZmZWNhZjUzMTk1ZDYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3Iu
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Y3BwX2dlbmVyYXRvci5weQpAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcjoK
ICAgICAgICAgICAgICAgICByZXR1cm4gJyVzKicgJSBjcHBfbmFtZQogICAgICAgICBpZiBpc2lu
c3RhbmNlKF90eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAgICBpZiBfdHlwZS5pc19hbm9ueW1v
dXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6JXMqJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0
KHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuICclc0Jh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JXMqJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFp
bl9uYW1lLCB1Y2ZpcnN0KHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCiAgICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6OiVz
KicgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkK
IApAQCAtMjcwLDcgKzI3MCw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcjoKICAgICAgICAgICAgICAg
ICByZXR1cm4gY3BwX25hbWUKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUp
OgogICAgICAgICAgICAgaWYgX3R5cGUuaXNfYW5vbnltb3VzOgotICAgICAgICAgICAgICAgIHJl
dHVybiAnSW5zcGVjdG9yJXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiVzJyAlIChfdHlwZS50
eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0KHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFt
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuICclc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIHVjZmlyc3QocGFyYW1ldGVy
LnBhcmFtZXRlcl9uYW1lKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0
dXJuICdJbnNwZWN0b3I6OlByb3RvY29sOjolczo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCku
ZG9tYWluX25hbWUsIF90eXBlLnJhd19uYW1lKCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxh
dGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Y3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggMDAyODZhYThlM2VkMjY4NDMwMGY4ZWE3
YzYwYzY0Mjk3ZmE5ZGRiZi4uMDVmMzUzMDk3NGUwNTlkN2Y5YzY0ZjlmZTg5NjBlNDUzMmNhZmY4
ZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkK
QEAgLTY2LDEyICs2NiwxMiBAQCAke2luY2x1ZGVzfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERp
c3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIp
IHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNw
YXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRj
aGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogIiIiKQogCkBAIC04Myw2MSArODMsNjEgQEAgcHJp
dmF0ZToKICNlbmRpZiAvLyAhZGVmaW5lZCgke2hlYWRlckd1YXJkU3RyaW5nfSkiIiIpCiAKICAg
ICBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkhhbmRsZXJJbnRlcmZhY2VE
ZWNsYXJhdGlvbiA9ICgKLSAgICAiIiJjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3Ike2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIgeworICAgICIiImNsYXNzIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyKCkgeyB9CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNw
YXRjaGVyKCkgeyB9CiAke2NvbW1hbmREZWNsYXJhdGlvbnN9CiB9OyIiIikKIAogICAgIEJhY2tl
bmREaXNwYXRjaGVySGVhZGVyRG9tYWluSGFuZGxlckRlY2xhcmF0aW9uID0gKAotICAgICIiIiR7
Y2xhc3NBbmRFeHBvcnRNYWNyb30gSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CisgICAgIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICR7Y29tbWFuZERlY2xhcmF0aW9u
c30KIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmlydHVhbCB+JHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcigpOwogfTsiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRl
ckRvbWFpbkRpc3BhdGNoZXJEZWNsYXJhdGlvbiA9ICgKLSAgICAiIiIke2NsYXNzQW5kRXhwb3J0
TWFjcm99IEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsK
KyAgICAiIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXI+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMg
UmVmPCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRj
aGVyKiwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAke2NvbW1hbmREZWNsYXJhdGlv
bnN9CiBwcml2YXRlOgotICAgIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3RvciR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgJHtkb21haW5OYW1l
fUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwgJHtkb21haW5OYW1lfUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciopOworICAgICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0
ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0
Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9Cisg
ICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNr
ZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNo
ZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRlOgotICAgIEFsdGVybmF0ZUluc3Bl
Y3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVy
OworICAgIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5h
dGVEaXNwYXRjaGVyOwogI2VuZGlmCiB9OyIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySGVh
ZGVyQXN5bmNDb21tYW5kRGVjbGFyYXRpb24gPSAoCi0gICAgIiIiICAgICR7Y2xhc3NBbmRFeHBv
cnRNYWNyb30gJHtjYWxsYmFja05hbWV9IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CisgICAgIiIiICAgICR7Y2xhc3NBbmRFeHBv
cnRNYWNyb30gJHtjYWxsYmFja05hbWV9IDogcHVibGljIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgJHtjYWxsYmFja05hbWV9KFJlZjxJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICAk
e2NhbGxiYWNrTmFtZX0oUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwogICAgICAg
ICB2b2lkIHNlbmRTdWNjZXNzKCR7b3V0UGFyYW1ldGVyc30pOwogICAgIH07CiAgICAgdmlydHVh
bCB2b2lkICR7Y29tbWFuZE5hbWV9KCR7aW5QYXJhbWV0ZXJzfSkgPSAwOyIiIikKIAogICAgIEJh
Y2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25TbWFsbFN3aXRjaCA9ICgKLSAgICAiIiJ2b2lk
IEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpCisgICAgIiIidm9pZCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4m
JiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXI+IHByb3RlY3QoKnRoaXMpOwogCiAke2Rpc3BhdGNoQ2FzZXN9CiAgICAgZWxzZQotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXFwn
JywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBC
YWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2Rv
bWFpbk5hbWV9IiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9IiIiKQogCiAg
ICAgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkxhcmdlU3dpdGNoID0gKAotIiIidm9p
ZCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcg
Y2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNz
YWdlKQorIiIidm9pZCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxv
bmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBt
ZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgdHlwZWRlZiB2b2lkIChJbnNwZWN0b3Ike2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB0eXBlZGVmIHZvaWQg
KCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6KkNhbGxIYW5kbGVyKShsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBDYWxsSGFuZGxlcj4gRGlzcGF0Y2hNYXA7CiAgICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBkaXNwYXRjaE1hcCwgKCkpOwogICAgIGlmIChkaXNw
YXRjaE1hcC5pc0VtcHR5KCkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCAke2Rpc3BhdGNoQ2FzZXN9
CiAKICAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3Bh
dGNoTWFwLmZpbmQobWV0aG9kKTsKICAgICBpZiAoaXQgPT0gZGlzcGF0Y2hNYXAuZW5kKCkpIHsK
LSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElk
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmco
J1xcJycsICIke2RvbWFpbk5hbWV9IiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7
CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcXCcnLCAi
JHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xNjIsMTMgKzE2MiwxMyBAQCAke2Rpc3BhdGNoQ2FzZXN9
CiB9IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkRvbWFpbkNvbnN0
cnVjdG9yID0gKAotICAgICIiIlJlZjxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXI+IEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yJHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgIiIiUmVmPCR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCAke2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKmJhY2tl
bmREaXNwYXRjaGVyLCBhZ2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAK
LUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNr
ZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hl
cihiYWNrZW5kRGlzcGF0Y2hlcikKKyR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6JHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlz
cGF0Y2hlciwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisg
ICAgOiBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAg
ICAsIG1fYWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCiAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTE4NCwxNSAr
MTg0LDE1IEBAIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyCiAke2luUGFyYW1ldGVyRGVjbGFyYXRp
b25zfQogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5n
IGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2Qg
XCclc1wnIGNhbid0IGJlIHByb2Nlc3NlZCIsICIke2RvbWFpbk5hbWV9LiR7Y29tbWFuZE5hbWV9
Iik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNh
bGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVz
c2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6Oklu
dmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckltcGxl
bWVudGF0aW9uQXN5bmNDb21tYW5kID0gKAotIiIiSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFja05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUmVm
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQp
IDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdU
Rjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KKyIiIiR7ZG9tYWluTmFtZX1CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFja05hbWV9KFJl
ZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwg
aWQpIHsgfQogCi12b2lkIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OiR7Y2FsbGJhY2tOYW1lfTo6c2VuZFN1Y2Nlc3MoJHtmb3JtYWxQYXJhbWV0ZXJzfSkK
K3ZvaWQgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFja05h
bWV9OjpzZW5kU3VjY2Vzcygke2Zvcm1hbFBhcmFtZXRlcnN9KQogewogICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICR7b3V0
UGFyYW1ldGVyQXNzaWdubWVudHN9CkBAIC0yMDAsMjYgKzIwMCwyNiBAQCAke291dFBhcmFtZXRl
ckFzc2lnbm1lbnRzfQogfSIiIikKIAogICAgIEZyb250ZW5kRGlzcGF0Y2hlckRvbWFpbkRpc3Bh
dGNoZXJEZWNsYXJhdGlvbiA9ICgKLSIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gSW5zcGVjdG9y
JHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0Y2hlciB7CisiIiIke2NsYXNzQW5kRXhwb3J0TWFj
cm99ICR7ZG9tYWluTmFtZX1Gcm9udGVuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIEluc3Bl
Y3RvciR7ZG9tYWluTmFtZX1Gcm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KKyAgICAke2RvbWFpbk5hbWV9RnJvbnRl
bmREaXNwYXRjaGVyKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRl
bmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkgeyB9CiAke2V2ZW50RGVjbGFyYXRpb25zfQogcHJp
dmF0ZToKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiB9OyIiIikK
IAogICAgIFByb3RvY29sT2JqZWN0QnVpbGRlckRlY2xhcmF0aW9uUHJlbHVkZSA9ICgKICIiIiAg
ICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxh
dGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBT
VEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8Lyoke29iamVj
dFR5cGV9Ki9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1
aWxkZXIoUmVmPC8qJHtvYmplY3RUeXBlfSovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAg
ICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0
ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtMjMyLDkgKzIzMiw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIFJlZjwke29iamVjdFR5cGV9PiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAg
Q09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5
KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZigke29iamVjdFR5cGV9KSA9PSBz
aXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJHtvYmplY3RUeXBlfSkgPT0gc2l6ZW9mKEluc3Bl
Y3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5v
bk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8
UmVmPCR7b2JqZWN0VHlwZX0+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTI0
NSwxOSArMjQ1LDE5IEBAICR7Y29uc3RydWN0b3JFeGFtcGxlfQogICAgICAqLwogICAgIHN0YXRp
YyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKICAgICB9IiIiKQogCiAgICAgUHJvdG9jb2xPYmplY3RSdW50aW1lQ2FzdCA9ICgK
LSIiIlJlZlB0cjwke29iamVjdFR5cGV9PiBCaW5kaW5nVHJhaXRzPCR7b2JqZWN0VHlwZX0+Ojpy
dW50aW1lQ2FzdChSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4mJiB2YWx1ZSkKKyIi
IlJlZlB0cjwke29iamVjdFR5cGV9PiBCaW5kaW5nVHJhaXRzPCR7b2JqZWN0VHlwZX0+OjpydW50
aW1lQ2FzdChSZWZQdHI8SW5zcGVjdG9yVmFsdWU+JiYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQ7CisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gcmVzdWx0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChy
ZXN1bHQpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIEJpbmRpbmdUcmFpdHM8JHtvYmplY3RUeXBlfT46
OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKHJlc3VsdC5nZXQoKSk7CiAjZW5kaWYgIC8vICFB
U1NFUlRfRElTQUJMRUQKLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJHtvYmplY3RUeXBlfSkg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9i
bGVtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JHtvYmplY3RUeXBlfSo+KHN0YXRpY19jYXN0
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+KHJlc3VsdC5nZXQoKSkpOworICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZigke29iamVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yT2Jq
ZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JHtv
YmplY3RUeXBlfSo+KHN0YXRpY19jYXN0PEluc3BlY3Rvck9iamVjdEJhc2UqPihyZXN1bHQuZ2V0
KCkpKTsKIH0KICIiIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRj
aGVyX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9hbHRlcm5hdGVfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5w
eQppbmRleCBkNGE4ZDVhZmVlZDQ0NTJlZTlmYmY3OGVhNTJiOTQzM2ZhYjIzNjc4Li5kYTI4YTcw
NGIzM2M3Y2NlNTkwMjdmYTFkNjE1YTA5ZDMxYThkZDhlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYWx0ZXJu
YXRlX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVybmF0ZV9iYWNr
ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIENwcEFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAg
IEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpCiAKICAgICBk
ZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJ0luc3BlY3RvckFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oJworICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6QWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgnCiAKICAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNl
bGYpOgogICAgICAgICBoZWFkZXJzID0gWwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0
Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQppbmRleCBh
MjQxYzUzMDZhNDIxMjczMzUzYjAwNWM4NTA2Zjg0OGY1OTI5NDM4Li4yM2U3ZDk5NzNjNmYyMDdk
Yjk0MjgzNTNmNzdlNDAyYzNkZGQxNzE5IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRj
aGVyX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpAQCAt
ODIsNyArODIsNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKScpCiAgICAgICAgIGZvciBk
b21haW4gaW4gZG9tYWluczoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLndyYXBfd2l0
aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ2NsYXNzIEFsdGVybmF0ZUluc3BlY3RvciVzQmFj
a2VuZERpc3BhdGNoZXI7JyAlIGRvbWFpbi5kb21haW5fbmFtZSkpCisgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sICdjbGFzcyBB
bHRlcm5hdGUlc0JhY2tlbmREaXNwYXRjaGVyOycgJSBkb21haW4uZG9tYWluX25hbWUpKQogICAg
ICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUyknKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCkBAIC0xOTcs
NCArMTk3LDQgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2Vu
ZXJhdG9yKToKICAgICAgICAgcmV0dXJuIHNlbGYud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21haW4o
ZG9tYWluLCBUZW1wbGF0ZShDcHBUZW1wbGF0ZXMuQmFja2VuZERpc3BhdGNoZXJIZWFkZXJEb21h
aW5EaXNwYXRjaGVyRGVjbGFyYXRpb24pLnN1YnN0aXR1dGUoTm9uZSwgKipoYW5kbGVyX2FyZ3Mp
KQogCiAgICAgZGVmIF9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xhcmF0aW9uX2Zvcl9jb21tYW5k
KHNlbGYsIGNvbW1hbmQpOgotICAgICAgICByZXR1cm4gIiAgICB2b2lkICVzKGxvbmcgY2FsbElk
LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7IiAlIGNvbW1hbmQu
Y29tbWFuZF9uYW1lCisgICAgICAgIHJldHVybiAiICAgIHZvaWQgJXMobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7IiAlIGNvbW1hbmQuY29tbWFuZF9uYW1lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCA1ODJkZTRiNGE0Y2Fk
YmFjYWJmZjkyZDBmYzMxYzkwZTkzMTY0MWExLi42NmFhYmU0NGRkMjRmY2Q2ZTBkNjE4Nzc3ZDdh
NDRhYjdlMDg3MzViIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkK
QEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBzZWNvbmRhcnlfaW5jbHVkZXMgPSBbJyNp
bmNsdWRlICVzJyAlIGhlYWRlciBmb3IgaGVhZGVyIGluIHNlY29uZGFyeV9oZWFkZXJzXQogICAg
ICAgICBzZWNvbmRhcnlfaW5jbHVkZXMuYXBwZW5kKCcnKQogICAgICAgICBzZWNvbmRhcnlfaW5j
bHVkZXMuYXBwZW5kKCcjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
JykKLSAgICAgICAgc2Vjb25kYXJ5X2luY2x1ZGVzLmFwcGVuZCgnI2luY2x1ZGUgIkluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIicpCisgICAgICAgIHNlY29uZGFyeV9pbmNs
dWRlcy5hcHBlbmQoJyNpbmNsdWRlICJJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oIicpCiAgICAgICAgIHNlY29uZGFyeV9pbmNsdWRlcy5hcHBlbmQoJyNlbmRpZicpCiAK
ICAgICAgICAgaGVhZGVyX2FyZ3MgPSB7CkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIENwcEJhY2tl
bmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
ZGVzdHJ1Y3Rvcl9hcmdzID0gewogICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9t
YWluX25hbWUKICAgICAgICAgfQotICAgICAgICBkZXN0cnVjdG9yID0gJ0luc3BlY3RvciUoZG9t
YWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yJShkb21haW5OYW1l
KXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0nICUgZGVzdHJ1Y3Rvcl9hcmdzCisgICAg
ICAgIGRlc3RydWN0b3IgPSAnJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
On4lKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfScgJSBkZXN0cnVj
dG9yX2FyZ3MKICAgICAgICAgcmV0dXJuIHNlbGYud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21haW4o
ZG9tYWluLCBkZXN0cnVjdG9yKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uc19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CkBAIC0xMjMsNyArMTIzLDcgQEAg
Y2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0
b3IpOgogICAgICAgICAgICAgICAgICdkb21haW5OYW1lJzogZG9tYWluLmRvbWFpbl9uYW1lLAog
ICAgICAgICAgICAgICAgICdjb21tYW5kTmFtZSc6IGNvbW1hbmQuY29tbWFuZF9uYW1lCiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlcy5hcHBlbmQoJyAgICAgICAgICAgIHsgIiUoY29t
bWFuZE5hbWUpcyIsICZJbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVyOjol
KGNvbW1hbmROYW1lKXMgfSwnICUgYXJncykKKyAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgnICAg
ICAgICAgICAgeyAiJShjb21tYW5kTmFtZSlzIiwgJiUoZG9tYWluTmFtZSlzQmFja2VuZERpc3Bh
dGNoZXI6OiUoY29tbWFuZE5hbWUpcyB9LCcgJSBhcmdzKQogCiAgICAgICAgIHN3aXRjaF9hcmdz
ID0gewogICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCkBAIC0x
OTIsNyArMTkyLDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgICdzdWNjZXNzT3V0UGFyYW0nOiBv
dXRfc3VjY2Vzc19hcmd1bWVudAogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpbl9wYXJh
bWV0ZXJfZGVjbGFyYXRpb25zLmFwcGVuZCgnICAgICUocGFyYW1ldGVyVHlwZSlzIGluXyUocGFy
YW1ldGVyTmFtZSlzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiUoa2V5ZWRHZXRNZXRo
b2QpcyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1l
KXMiKSwgJShzdWNjZXNzT3V0UGFyYW0pcywgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOycgJSBwYXJh
bV9hcmdzKQorICAgICAgICAgICAgaW5fcGFyYW1ldGVyX2RlY2xhcmF0aW9ucy5hcHBlbmQoJyAg
ICAlKHBhcmFtZXRlclR5cGUpcyBpbl8lKHBhcmFtZXRlck5hbWUpcyA9IEJhY2tlbmREaXNwYXRj
aGVyOjolKGtleWVkR2V0TWV0aG9kKXMocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVy
YWwoIiUocGFyYW1ldGVyTmFtZSlzIiksICUoc3VjY2Vzc091dFBhcmFtKXMsIHByb3RvY29sRXJy
b3JzLmdldCgpKTsnICUgcGFyYW1fYXJncykKIAogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlz
X29wdGlvbmFsOgogICAgICAgICAgICAgICAgIG9wdGlvbmFsX2luX3BhcmFtZXRlcl9zdHJpbmcg
PSAnJShwYXJhbWV0ZXJOYW1lKXNfdmFsdWVGb3VuZCA/ICUocGFyYW1ldGVyRXhwcmVzc2lvbilz
IDogbnVsbHB0cicgJSBwYXJhbV9hcmdzCkBAIC0yMDksNyArMjA5LDcgQEAgY2xhc3MgQ3BwQmFj
a2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgn
ICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOycpCi0gICAgICAgICAgICBvdXRfcGFyYW1ldGVy
X2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQ
cm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OlNlcnZlckVycm9yLCBlcnJvcik7JykKKyAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNz
aWdubWVudHMuYXBwZW5kKCcgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3Rv
Y29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7
JykKICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAg
IHJldHVybjsnKQogICAgICAgICAgICAgbWV0aG9kX3BhcmFtZXRlcnMuYXBwZW5kKCdjYWxsYmFj
ay5jb3B5UmVmKCknKQogCkBAIC0yNTEsOSArMjUxLDkgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3Bh
dGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogCiAgICAgICAgIGxpbmVz
ID0gW10KICAgICAgICAgaWYgbGVuKGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzKSA9PSAwOgotICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkIEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2Vu
ZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiknICUgY29tbWFuZF9hcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lk
ICUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyhsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiknICUgY29tbWFuZF9hcmdzKQogICAgICAgICBl
bHNlOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkIEluc3BlY3RvciUoZG9tYWluTmFt
ZSlzQmFja2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyhsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKScgJSBjb21tYW5kX2FyZ3MpCisgICAgICAgICAgICBs
aW5lcy5hcHBlbmQoJ3ZvaWQgJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShjb21t
YW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpJyAl
IGNvbW1hbmRfYXJncykKICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKIAogICAgICAgICBpZiBs
ZW4oY29tbWFuZC5jYWxsX3BhcmFtZXRlcnMpID4gMDoKQEAgLTI3MCw3ICsyNzAsNyBAQCBjbGFz
cyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6
CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEVycm9yU3RyaW5nIGVycm9yOycpCiAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7JykKICAgICAgICAgaWYgY29tbWFuZC5pc19hc3luYzoKLSAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjxJbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0JhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6JShjYWxsYmFja05hbWUpcz4gY2FsbGJhY2sgPSBhZG9wdFJl
ZigqbmV3IEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjol
KGNhbGxiYWNrTmFtZSlzKG1fYmFja2VuZERpc3BhdGNoZXIuY29weVJlZigpLCBjYWxsSWQpKTsn
ICUgY29tbWFuZF9hcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgUmVmPCUoZG9t
YWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolKGNhbGxiYWNrTmFtZSlzPiBjYWxs
YmFjayA9IGFkb3B0UmVmKCpuZXcgJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OiUoY2FsbGJhY2tOYW1lKXMobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJ
ZCkpOycgJSBjb21tYW5kX2FyZ3MpCiAgICAgICAgIGlmIGxlbihjb21tYW5kLnJldHVybl9wYXJh
bWV0ZXJzKSA+IDA6CiAgICAgICAgICAgICBsaW5lcy5leHRlbmQob3V0X3BhcmFtZXRlcl9kZWNs
YXJhdGlvbnMpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIG1fYWdlbnQtPiUoY29tbWFuZE5h
bWUpcyglKGludm9jYXRpb25QYXJhbWV0ZXJzKXMpOycgJSBjb21tYW5kX2FyZ3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9u
dGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGJkYjhkYmMyN2MzODE0NzA1
Y2MwZDBmZjI0NGI3OWFkYjM1YzJlNTEuLjc5ODE1N2EwNjA4OWU1MjMyODVjM2Q0YmYxZmEwYWQ3
MTExNmViM2UgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBA
IC0xMDUsNyArMTA1LDcgQEAgY2xhc3MgQ3BwRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRp
b25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgICdmb3JtYWxQYXJhbWV0ZXJzJzog
IiwgIi5qb2luKGZvcm1hbF9wYXJhbWV0ZXJzKQogICAgICAgICB9CiAKLSAgICAgICAgbGluZXMu
YXBwZW5kKCd2b2lkIEluc3BlY3RvciUoZG9tYWluTmFtZSlzRnJvbnRlbmREaXNwYXRjaGVyOjol
KGV2ZW50TmFtZSlzKCUoZm9ybWFsUGFyYW1ldGVycylzKScgJSBldmVudF9hcmdzKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJShkb21haW5OYW1lKXNGcm9udGVuZERpc3BhdGNoZXI6OiUo
ZXZlbnROYW1lKXMoJShmb3JtYWxQYXJhbWV0ZXJzKXMpJyAlIGV2ZW50X2FyZ3MpCiAgICAgICAg
IGxpbmVzLmFwcGVuZCgneycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsnKQogICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiJShkb21haW5OYW1lKXMuJShldmVudE5hbWUpcyIp
KTsnICUgZXZlbnRfYXJncykKQEAgLTExNiw2ICsxMTYsNiBAQCBjbGFzcyBDcHBGcm9udGVuZERp
c3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBh
cmFtcyIpLCBXVEY6Om1vdmUocGFyYW1zT2JqZWN0KSk7JykKIAogICAgICAgICBsaW5lcy5hcHBl
bmQoJycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsn
KQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7JykKICAgICAgICAgbGlu
ZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJuICJcbiIuam9pbihsaW5lcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNw
YXRjaGVyX2hlYWRlci5weQppbmRleCAyOWIzOGU4ODcxOGQ5ZjU4OGIyMjI0ZjY1ZjBlMjVmNmUw
NDllZjA1Li42ZWE5MjgyYThlOGEwY2Y3NGQ4MDJiNDcwZDJmOGI5YjlkODVmNmIwIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5k
X2Rpc3BhdGNoZXJfaGVhZGVyLnB5CkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIE9iakNCYWNrZW5k
RGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgogCiAgICAgZGVmIGdlbmVyYXRl
X291dHB1dChzZWxmKToKICAgICAgICAgaGVhZGVycyA9IFsKLSAgICAgICAgICAgICc8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+JywKKyAgICAg
ICAgICAgICc8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaD4nLAogICAgICAgICAgICAgJzx3dGYvUmV0YWluUHRyLmg+JywKICAgICAgICAgXQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkKaW5kZXggNTMyMDVjYjlkY2U3Mzg3Yzk0
ZTVhYzI2ZGFhNTFiYjA2ODQzODlmMC4uNDczNWEwYTNkMjg4NDBjMGVmYWI0MGViMDk5NWRiZTA2
N2ZkN2JiZiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICAgICAgICAgJyIlc0JhY2tlbmREaXNwYXRjaGVycy5oIicgJSBPYmpD
R2VuZXJhdG9yLk9CSkNfUFJFRklYLAogICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9BbHRl
cm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oPicsCiAgICAgICAgICAgICAnPEphdmFTY3JpcHRDb3Jl
L0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPicsCi0gICAgICAgICAgICAnPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPicsCisgICAg
ICAgICAgICAnPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzLmg+JywKICAgICAgICAgICAgICc8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXJzLmg+JywKICAgICAgICAgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5k
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb24ucHkKaW5kZXggNmQ1MjAxZjA3MjdjYjM0YmI2NDQ3NzY0Y2NmMDI4YTk0
ZjM2YzUwMi4uNzgyNjE1NzFjNTNmNWZmNDMxYWI5NzllNjdmNmIyOGZmNjdjYjBlYSAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTgsNyArOTgsNyBA
QCBjbGFzcyBPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2Vu
ZXJhdG9yKToKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5f
Z2VuZXJhdGVfZXZlbnRfc2lnbmF0dXJlKGRvbWFpbiwgZXZlbnQpKQogICAgICAgICBsaW5lcy5h
cHBlbmQoJ3snKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsn
KQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOycpCiAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghZnJvbnRlbmRDaGFubmVsKScpCiAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgICAgICByZXR1cm47JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGNmZjk4OWUxNjE4OGFh
NDQwNzNiOWI1YjlhM2ZiMzY0ZDY1YjM0ZWYuLmIwYmI2YjRkZWNiMzQ2ZDM1ZmU0ZjgxZDEzODJi
MGNlYjdhZWU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAg
LTEsNCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjksOCArMjksOCBAQAogLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgt
YXN5bmMtYXR0cmlidXRlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAot
I2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2lmbmRlZiBJ
bnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9y
X0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKIApAQCAtMzksMTggKzM5LDE4IEBACiAKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7
CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBz
ZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYg
ZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIp
OyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0
QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIp
IHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIAotY2xhc3MgQWx0ZXJuYXRl
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
KCkgeyB9CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KGxvbmcgY2FsbElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhsb25nIGNhbGxJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGludCBp
bl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSA9IDA7CkBAIC02MSw4ICs2MSw4
IEBAIHB1YmxpYzoKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCiAKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMu
anMKIC8qCkBAIC0xNDgsMTAgKzE0OCwxMCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyOworY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjsKICNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAotY2xhc3MgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIC8vIE5hbWVkIGFmdGVyIHBh
cmFtZXRlciAnc2NyZWVuQ29sb3InIHdoaWxlIGdlbmVyYXRpbmcgY29tbWFuZC9ldmVudCBleGVj
dXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzLgogICAgIGVudW0gY2xhc3MgU2NyZWVuQ29s
b3IgewpAQCAtMTY2LDQxICsxNjYsNDEgQEAgcHVibGljOgogICAgICAgICBZZWxsb3cgPSA1LAog
ICAgICAgICBCbGFjayA9IDYsCiAgICAgfTsgLy8gZW51bSBjbGFzcyBQcmludENvbG9yCi0gICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJp
bmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2Fs
dGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOwotICAgIGNsYXNzIEV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsKKyAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGludCBp
bl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRf
dmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29s
b3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291
dF9wcmludENvbG9yKSA9IDA7CisgICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXNDYWxsYmFjayA6IHB1YmxpYyBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzQ2FsbGJhY2soUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYs
IGludCBpZCk7CisgICAgICAgIEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2Fs
bGJhY2soUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwogICAgICAgICB2b2lkIHNl
bmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGNv
bHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIHZh
bHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50PiogZGF0
YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBz
cWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVlbkNv
bG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBh
bHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBw
cmludENvbG9yKTsKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRp
b25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBT
dHJpbmcmIGluX3F1ZXJ5LCBSZWY8RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXND
YWxsYmFjaz4mJiBjYWxsYmFjaykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3lu
YyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1bW5O
YW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUq
IG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3Is
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBv
dXRfcHJpbnRDb2xvcikgPSAwOwotICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrIDog
cHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZSB7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3RyaW5nJiwgaW50IGlu
X2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3Rl
cywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0
X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0
X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
JiBvdXRfc3FsRXJyb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CisgICAgY2xhc3Mg
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhS
ZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKKyAg
ICAgICAgRXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2soUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmLCBp
bnQgaWQpOwogICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBk
b3VibGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmlu
ZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKICAg
ICB9OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMoRXJyb3JTdHJpbmcmLCBpbnQg
aW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3lu
Y0NhbGxiYWNrPiYmIGNhbGxiYWNrKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFsIH5E
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3Bl
Y3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMgUmVm
PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciosIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVj
dD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAgdm9pZCBleGVjdXRlU1FMU3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0gICAgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJl
dHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qm
IG1lc3NhZ2UpOwotICAgIHZvaWQgZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGV4ZWN1dGVTUUxB
c3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpOworICAgIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBleGVjdXRlU1FMQXN5bmMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiBwcml2YXRlOgot
ICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
IG1fYWdlbnQ7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hl
ciYsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRj
aGVyKEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0
ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hl
cjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6Ci0gICAgQWx0ZXJuYXRlSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwor
ICAgIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjQ4LDIwICsyNDgsMjAgQEAgcHJpdmF0ZToKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKLSNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
cy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKCkgeyB9CitEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAKLVJlZjxJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCitSZWY8RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKmJh
Y2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxlbWVudGFs
QmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNr
ZW5kRGlzcGF0Y2hlciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQor
ICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCiAg
ICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0yNzAsOSAr
MjcwLDkgQEAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3IKICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCB0
aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmpl
Y3Q+JiYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
bG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYm
IG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBwcm90
ZWN0KCp0aGlzKTsKIAogICAgIGlmIChtZXRob2QgPT0gImV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMiKQogICAgICAgICBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KGNhbGxJZCwgbWVzc2FnZSk7CkBAIC0yODMsMTkgKzI4MywxOSBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJp
bmcmIG1ldAogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZVNRTEFzeW5jIikKICAgICAg
ICAgZXhlY3V0ZVNRTEFzeW5jKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZQotICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0
YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0
Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRhdGFiYXNlIiwgJy4nLCBt
ZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90
b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNz
YWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwot
ICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldElu
dGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgp
LCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
KyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJx
dWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29s
RXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5n
Ojpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3Nl
ZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzIik7Ci0gICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RG
Ojptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJh
bXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9u
ZwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9z
cWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0gICAgSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7Cisg
ICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50
Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhl
cnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3Rl
cywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFz
ZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMs
ICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CkBAIC0zNDUs
OSArMzQ1LDkgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVj
dXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQog
Ci1JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgYmFj
a2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsg
fQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzQ2FsbGJhY2soUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBp
bnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEY6Om1vdmUoYmFja2Vu
ZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJh
Y2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiog
bm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50
PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJv
cj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNj
cmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJp
bmc+KiBwcmludENvbG9yKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nlc3Mo
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBh
eWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNv
bG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3Ip
CiB7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIGlmIChjb2x1bW5OYW1lcykKQEAgLTM3MywxNiArMzczLDE2IEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsCiAgICAgc2VuZElmQWN0aXZlKFdURjo6bW92ZShqc29u
TWVzc2FnZSksIEVycm9yU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90
b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNz
YWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwot
ICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldElu
dGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgp
LCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
KyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJx
dWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29s
RXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5n
Ojpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3Nl
ZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIpOwotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdU
Rjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFy
YW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zOTUsMjYgKzM5NSwyNiBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KGxvbgogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWY8SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzQ2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7
CisgICAgUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKCpuZXcg
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzQ2FsbGJhY2sobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJ
ZCkpOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGVy
cm9yLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwgY2FsbGJhY2suY29weVJlZigpKTsKIAogICAg
IGlmIChlcnJvci5sZW5ndGgoKSkgewogICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOwotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7
CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2Fn
ZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBj
YWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3Rv
Y29sRXJyb3JzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3Nh
Z2UuZ2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtc0NvbnRhaW5lcik7Ci0g
ICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50
ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBu
dWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwor
ICAgIGludCBpbl9kYXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFy
YW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwg
cHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9xdWVyeSA9IEJhY2tlbmREaXNw
YXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1
ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xF
cnJvcnMtPmxlbmd0aCgpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6
OmZvcm1hdCgiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2Vk
IiwgIkRhdGFiYXNlLmV4ZWN1dGVTUUxTeW5jIik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3Jz
KSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNh
bGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RG
Ojptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQz
Niw3ICs0MzYsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZQogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNv
bG9yczsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBv
dXRfc2NyZWVuQ29sb3I7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+
ZXhlY3V0ZVNRTFN5bmMoZXJyb3IsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5LCBvdXRfY29sdW1u
TmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxv
YWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAm
b3V0X3NjcmVlbkNvbG9yLCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5n
dGgoKSkgewpAQCAtNDU0LDkgKzQ1NCw5IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3Vs
dCksIGVycm9yKTsKIH0KIAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkg
OiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RG
Ojptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNDYWxs
YmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkg
OiBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0
Y2hlciksIGlkKSB7IH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJp
bmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2
YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3Is
IGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmlu
dENvbG9yKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNR
TEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUg
dGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2Ny
ZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0
PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKICAgICBqc29uTWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIp
LCBjb2x1bW5OYW1lcyk7CkBAIC00NzIsMTYgKzQ3MiwxNiBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6c2Vu
ZFN1YwogICAgIHNlbmRJZkFjdGl2ZShXVEY6Om1vdmUoanNvbk1lc3NhZ2UpLCBFcnJvclN0cmlu
ZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVj
dXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkK
K3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2Nv
bEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdl
LmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAg
IGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVn
ZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVs
bHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAg
ICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVy
eSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJy
b3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpm
b3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIs
ICJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMp
KTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2Fs
bElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6
Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDk0
LDEyICs0OTQsMTIgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpl
eGVjdXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3AKIAogICAgIEVycm9yU3RyaW5n
IGVycm9yOwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5
bmNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7CisgICAg
UmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxs
YmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlS
ZWYoKSwgY2FsbElkKSk7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTEFzeW5jKGVycm9yLCBpbl9k
YXRhYmFzZUlkLCBpbl9xdWVyeSwgY2FsbGJhY2suY29weVJlZigpKTsKIAogICAgIGlmIChlcnJv
ci5sZW5ndGgoKSkgewogICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOwotICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CisgICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2Vu
ZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiB9CkBAIC02ODQsMTQgKzY4NCwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRF
PgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVy
PFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9y
T2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVj
dCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmll
bGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNzE2LDkgKzcx
Niw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPEVycm9yPiByZWxlYXNlKCkKICAgICAgICAgewog
ICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRf
aXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9y
T2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAg
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVs
bCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8
RXJyb3I+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTczMiw3ICs3MzIsNyBA
QCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKQEAgLTg0
MCw3ICs4NDAsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIC8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogQHByb3RvY29sIFJXSVByb3RvY29sRGF0YWJhc2VEb21haW5IYW5k
bGVyOwpAQCAtOTAxLDcgKzkwMSw3IEBAIHByaXZhdGU6CiAjaW1wb3J0ICJSV0lQcm90b2NvbEJh
Y2tlbmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1w
YXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4t
cGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA5MDU4NzEwOThlNDc1YTM5Y2E2ZjkwNmQ1NTU2
MGY4MDk5NGQ3MTE0Li5lZGRhYjJhNTdiY2MwZDk1MmYyNWNhYWYzZDUyZWNmMmY5MTJjYTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQKQEAgLTEsNCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3I6
OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjksOCArMjksOCBAQAog
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uCiAv
LyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAK
QEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0
ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2Vu
ZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0
cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIg
PSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9
CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIg
eworY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRl
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFs
dGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyog
aW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3Ry
aW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2Fs
bElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5O
YW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgSW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJp
bmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgPSAw
OwogfTsKQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3Rv
cjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIAogIyMjIEJlZ2luIEZpbGU6IEluc3Bl
Y3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKQEAgLTE0MywxMCArMTQzLDEwIEBAIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAg
ICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1ldGVyICdzY3JlZW5Db2xvcicgd2hpbGUgZ2VuZXJhdGlu
ZyBjb21tYW5kL2V2ZW50IGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMuCiAgICAgZW51bSBj
bGFzcyBTY3JlZW5Db2xvciB7CkBAIC0xNjEsMjcgKzE2MSwyNyBAQCBwdWJsaWM6CiAgICAgICAg
IFllbGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFBy
aW50Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhF
cnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGlu
X2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3Rp
bWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3Zh
bHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3Qg
aW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29u
c3QgU3RyaW5nKiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIG9w
dF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9v
dXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJv
cj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9w
cmludENvbG9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVycyhFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGlt
ZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFs
dWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJy
b3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9w
cmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG91
dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5h
dGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmlu
dENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMs
IGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
KiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9z
Y3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5f
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
b3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRl
cm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9y
KiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRv
dWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50
IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBT
dHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRf
dGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3Is
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVu
Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYg
b3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFs
IH5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Oklu
c3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNo
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMg
UmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlcios
IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9i
amVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAgdm9pZCBleGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCYgbWVzc2FnZSk7Ci0gICAgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsK
KyAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiBw
cml2YXRlOgotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5k
RGlzcGF0Y2hlciYsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIq
IGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6Ci0gICAgQWx0
ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNw
YXRjaGVyOworICAgIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjI5LDIwICsyMjksMjAgQEAgcHJpdmF0
ZToKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLSNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CitEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6fkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAKLVJlZjxJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQp
CitSZWY8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVy
LCBhZ2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRj
aGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
IGFnZW50KQorICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3Bh
dGNoZXIpCiAgICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBA
IC0yNTEsNDYgKzI1MSw0NiBAQCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvcgogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIkRh
dGFiYXNlIiksIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPElu
c3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0
b3JPYmplY3Q+JiYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+IHByb3RlY3QoKnRoaXMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVycyIpCiAgICAgICAgIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMo
Y2FsbElkLCBtZXNzYWdlKTsKICAgICBlbHNlIGlmIChtZXRob2QgPT0gImV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyIpCiAgICAgICAgIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhjYWxs
SWQsIG1lc3NhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVw
b3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0
aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRhdGFiYXNlIiwgJy4nLCBtZXRob2QsICIn
IHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFBy
b3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBt
YWtlU3RyaW5nKCdcJycsICJEYXRhYmFzZSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5k
IikpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNz
YWdlKQogewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJh
bXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMi
KSwgcGFyYW1zQ29udGFpbmVyKTsKICAgICBib29sIGNvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPSBm
YWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fY29sdW1uTmFt
ZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVy
LmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksICZjb2x1bW5OYW1lc192YWx1ZUZv
dW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+IGluX2NvbHVtbk5hbWVzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCAmY29sdW1u
TmFtZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgbm90ZXNf
dmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFN0cmluZyBpbl9ub3RlcyA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVy
YWwoIm5vdGVzIiksICZub3Rlc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Cisg
ICAgU3RyaW5nIGluX25vdGVzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXND
b250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgJm5vdGVzX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHRpbWVzdGFtcF92YWx1ZUZvdW5kID0g
ZmFsc2U7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4gaW5fdGlt
ZXN0YW1wID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZ0aW1lc3RhbXBfdmFsdWVG
b3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxkb3VibGU+IGluX3RpbWVzdGFtcCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3Vi
bGUocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAmdGlt
ZXN0YW1wX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHZhbHVl
c192YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBpbl92YWx1ZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgJnZhbHVlc192YWx1
ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBpbl92YWx1ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgJnZhbHVlc192YWx1
ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBwYXlsb2FkX3ZhbHVlRm91
bmQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5
bG9hZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShwYXJhbXNDb250YWlu
ZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAmcGF5bG9hZF92YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IGluX3BheWxvYWQgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0VmFsdWUocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgJnBheWxvYWRfdmFsdWVGb3VuZCwg
cHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgZGF0YWJhc2VJZF92YWx1ZUZvdW5kID0g
ZmFsc2U7Ci0gICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJh
c2VJZCIpLCAmZGF0YWJhc2VJZF92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Cisg
ICAgaW50IGluX2RhdGFiYXNlSWQgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJh
bXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCAmZGF0YWJhc2VJ
ZF92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBzcWxFcnJvcl92
YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBpbl9zcWxFcnJvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFy
YW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksICZzcWxFcnJvcl92
YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiBpbl9zcWxFcnJvciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmpl
Y3QocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksICZzcWxF
cnJvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBzY3JlZW5D
b2xvcl92YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgU3RyaW5nIGluX3NjcmVlbkNvbG9yID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgJnNjcmVlbkNvbG9yX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFs
KCJzY3JlZW5Db2xvciIpLCAmc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMu
Z2V0KCkpOwogICAgIGJvb2wgYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0g
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgJmFsdGVybmF0ZUNvbG9yc192YWx1
ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXk+IGluX2FsdGVybmF0ZUNvbG9ycyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRB
cnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3Jz
IiksICZhbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwog
ICAgIGJvb2wgcHJpbnRDb2xvcl92YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgU3RyaW5nIGluX3By
aW50Q29sb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksICZwcmludENvbG9yX3Zh
bHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcHJpbnRDb2xv
ciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgJnByaW50Q29sb3JfdmFsdWVGb3VuZCwgcHJvdG9j
b2xFcnJvcnMuZ2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAg
ICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50
cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZUFs
bE9wdGlvbmFsUGFyYW1ldGVycyIpOwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZh
bGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJh
Y2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShw
cm90b2NvbEVycm9ycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTIsNyArMzEy
LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbEkKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRl
Q29sb3JzOwotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQ
cmludENvbG9yIG91dF9wcmludENvbG9yOworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIGNvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyBpbl9j
b2x1bW5OYW1lcy5jb3B5UmVmKCkgOiBudWxscHRyLCBub3Rlc192YWx1ZUZvdW5kID8gJmluX25v
dGVzIDogbnVsbHB0ciwgdGltZXN0YW1wX3ZhbHVlRm91bmQgPyAmaW5fdGltZXN0YW1wIDogbnVs
bHB0ciwgdmFsdWVzX3ZhbHVlRm91bmQgPyBpbl92YWx1ZXMuY29weVJlZigpIDogbnVsbHB0ciwg
cGF5bG9hZF92YWx1ZUZvdW5kID8gaW5fcGF5bG9hZC5jb3B5UmVmKCkgOiBudWxscHRyLCBkYXRh
YmFzZUlkX3ZhbHVlRm91bmQgPyAmaW5fZGF0YWJhc2VJZCA6IG51bGxwdHIsIHNxbEVycm9yX3Zh
bHVlRm91bmQgPyBpbl9zcWxFcnJvci5jb3B5UmVmKCkgOiBudWxscHRyLCBzY3JlZW5Db2xvcl92
YWx1ZUZvdW5kID8gJmluX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgYWx0ZXJuYXRlQ29sb3JzX3Zh
bHVlRm91bmQgPyBpbl9hbHRlcm5hdGVDb2xvcnMuY29weVJlZigpIDogbnVsbHB0ciwgcHJpbnRD
b2xvcl92YWx1ZUZvdW5kID8gJmluX3ByaW50Q29sb3IgOiBudWxscHRyLCBvdXRfY29sdW1uTmFt
ZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQs
ICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0
ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgo
KSkgewpAQCAtMzQwLDI0ICszNDAsMjQgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbEkKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0
KSwgZXJyb3IpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYg
bWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3RvY29sRXJyb3JzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3NhZ2UuZ2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFy
YW1zIiksIHBhcmFtc0NvbnRhaW5lcik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXk+IGluX2NvbHVtbk5hbWVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEFy
cmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBu
dWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX25vdGVzID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwot
ICAgIGRvdWJsZSBpbl90aW1lc3RhbXAgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIG51
bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZT4gaW5fcGF5bG9hZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRW
YWx1ZShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQo
KSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBpbl9zcWxFcnJvciA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdl
dCgpKTsKLSAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzY3Jl
ZW5Db2xvciIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGluX2FsdGVybmF0ZUNvbG9ycyA9IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0
ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
LSAgICBTdHJpbmcgaW5fcHJpbnRDb2xvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInByaW50Q29sb3Ii
KSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRB
cnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9ub3RlcyA9IEJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxp
dGVyYWwoIm5vdGVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBkb3Vi
bGUgaW5fdGltZXN0YW1wID0gQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIG51bGxwdHIsIHByb3RvY29s
RXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGlu
X3ZhbHVlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQo
KSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGluX3BheWxvYWQgPSBC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0VmFsdWUocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxp
dGVyYWwoInBheWxvYWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGlu
dCBpbl9kYXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29u
dGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9j
b2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
aW5fc3FsRXJyb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBudWxscHRyLCBwcm90b2NvbEVycm9y
cy5nZXQoKSk7CisgICAgU3RyaW5nIGluX3NjcmVlbkNvbG9yID0gQmFja2VuZERpc3BhdGNoZXI6
OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29s
b3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBCYWNrZW5kRGlzcGF0Y2hl
cjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImFsdGVybmF0
ZUNvbG9ycyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3RyaW5nIGlu
X3ByaW50Q29sb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIG51bGxwdHIsIHByb3RvY29sRXJy
b3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0aCgpKSB7CiAgICAgICAg
IFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiU29tZSBhcmd1bWVudHMgb2Yg
bWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIkRhdGFiYXNlLmV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyIpOwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90
b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFy
YW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmRE
aXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2Nv
bEVycm9ycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNzksNyArMzc5LDcgQEAg
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMobG9uZyBjYWxsSWQKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3Jz
OwotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENv
bG9yIG91dF9wcmludENvbG9yOworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyhlcnJvciwgaW5fY29sdW1uTmFtZXMuY29weVJlZigpLCBpbl9ub3Rlcywg
aW5fdGltZXN0YW1wLCBpbl92YWx1ZXMuY29weVJlZigpLCBpbl9wYXlsb2FkLmNvcHlSZWYoKSwg
aW5fZGF0YWJhc2VJZCwgaW5fc3FsRXJyb3IuY29weVJlZigpLCBpbl9zY3JlZW5Db2xvciwgaW5f
YWx0ZXJuYXRlQ29sb3JzLmNvcHlSZWYoKSwgaW5fcHJpbnRDb2xvciwgb3V0X2NvbHVtbk5hbWVz
LCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAm
b3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgb3V0X2FsdGVy
bmF0ZUNvbG9ycywgJm91dF9wcmludENvbG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkp
IHsKQEAgLTU3NywxNCArNTc3LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+
CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8
U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
ICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAg
ICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3JP
YmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0
KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVs
ZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC02MDksOSArNjA5
LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8RXJyb3I+IHJlbGVhc2UoKQogICAgICAgICB7CiAg
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9p
c19ub3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9
PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNwZWN0b3JP
YmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAg
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxs
KCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxF
cnJvcj4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNjI1LDcgKzYyNSw3IEBA
IHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRl
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0Zp
ZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtNzMz
LDcgKzczMyw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uCiAvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQHByb3RvY29sIFJXSVByb3RvY29sRGF0
YWJhc2VEb21haW5IYW5kbGVyOwpAQCAtNzkyLDcgKzc5Miw3IEBAIHByaXZhdGU6CiAjaW1wb3J0
ICJSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmct
Y29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNp
emVzLmpzb24tcmVzdWx0CmluZGV4IGFlZDAzYTFhZmE1NGI4MjNhZDg1YWE5OTBmZjU3NTdjN2Vm
Y2M5YjguLjM0Yzk3NjY1NzdlMjFmYzkxODAyNDhmYWM2NWQwY2NhMmEzZDQ1ZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21h
aW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0xLDQgKzEsNCBA
QAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
CisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMu
aAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KQEAgLTI5LDggKzI5LDggQEAKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBkb21haW5zLXdpdGgtdmFyeWluZy1jb21t
YW5kLXNpemVzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkK
IAotI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAotI2RlZmlu
ZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2lmbmRlZiBJbnNwZWN0
b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yX0FsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKIApAQCAtMzksMjMgKzM5LDIzIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFz
cyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNr
ZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0
Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0g
ICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2Vu
ZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERp
c3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVj
dG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9
CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkKSA9IDA7CiB9OwotY2xh
c3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2Fs
bElkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCkgPSAwOwpAQCAt
NjksOCArNjksOCBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvcl9BbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzCiAvKgpAQCAtMTYxLDE4ICsxNjEsMTggQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOwor
Y2xhc3MgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjsKICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAotY2xhc3MgSW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2Ux
KEVycm9yU3RyaW5nJikgPSAwOwogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkluc3BlY3Rvck5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmlydHVhbCB+TmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CiAKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIE5ldHdvcmszQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShFcnJv
clN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMihFcnJvclN0cmlu
ZyYpID0gMDsKQEAgLTE4Miw0NiArMTgyLDQ2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
bG9hZFJlc291cmNlNihFcnJvclN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJl
c291cmNlNyhFcnJvclN0cmluZyYpID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfk5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVj
dG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyPiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0
PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTEo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsK
KyAgICB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgbWVzc2FnZSk7CiBwcml2YXRlOgotICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXIoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3Rvck5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYsIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKik7CisgICAgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAg
dm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRj
aGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0
Y2hlcihBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRj
aGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHBy
aXZhdGU6Ci0gICAgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciog
bV9hbHRlcm5hdGVEaXNwYXRjaGVyOworICAgIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIAotY2xhc3MgSW5zcGVj
dG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Oklu
c3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIE5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNo
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMg
UmVmPE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlcios
IE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9i
amVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAgdm9pZCBsb2FkUmVzb3Vy
Y2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2Fn
ZSk7Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2UyKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2UzKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0gICAg
dm9pZCBsb2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCYgbWVzc2FnZSk7Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0gICAgdm9pZCBsb2Fk
UmVzb3VyY2U2KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYg
bWVzc2FnZSk7Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2U3KGxvbmcgY2FsbElkLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2Ux
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQg
bG9hZFJlc291cmNlMihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdl
KTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9i
amVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlNShsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRS
ZXNvdXJjZTYobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Cisg
ICAgdm9pZCBsb2FkUmVzb3VyY2U3KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
IG1lc3NhZ2UpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3Rvck5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworICAgIE5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXIoQmFja2VuZERpc3BhdGNoZXImLCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciopOworICAgIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogcHVibGljOgotICAgIHZv
aWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
ciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNo
ZXIoQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2
YXRlOgotICAgIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIqIG1f
YWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyAgICBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07CiAKQEAgLTI2OSwyMSArMjY5
LDIxIEBAIHByaXZhdGU6CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0jaW5jbHVkZSAiSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yOjpBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAotSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQotSW5zcGVjdG9yTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVySGFuZGxlcigpIHsgfQorTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5O
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6On5OZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQog
Ci1SZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIqIGFnZW50KQorUmVmPE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIs
IE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5k
RGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5zcGVj
dG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIElu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IElu
c3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQor
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihCYWNr
ZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIE5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJh
Y2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcihu
dWxscHRyKQpAQCAtMjkyLDE3ICsyOTIsMTcgQEAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3IKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlM
aXRlcmFsKCJOZXR3b3JrMSIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRo
b2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQgTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3Rvck5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIGlmIChtZXRob2QgPT0gImxv
YWRSZXNvdXJjZTEiKQogICAgICAgICBsb2FkUmVzb3VyY2UxKGNhbGxJZCwgbWVzc2FnZSk7CiAg
ICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9y
KCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFr
ZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIp
KTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2Fs
bElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywg
Ik5ldHdvcmsxIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAo
bV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC0zMTgsMTMgKzMxOCwxMyBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxs
SWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLVJlZjxJbnNwZWN0b3JOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNw
ZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCitSZWY8TmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcj4gTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3Rv
ck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoKmJhY2tl
bmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyOjpOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5k
RGlzcGF0Y2hlciwgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQorICAg
IDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCiAgICAg
LCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0zMzMsMTEgKzMz
MywxMSBAQCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvcgogICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIk5ldHdvcmszIiksIHRo
aXMpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVj
dD4mJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChs
b25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYg
bWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+IHByb3Rl
Y3QoKnRoaXMpOwogCi0gICAgdHlwZWRlZiB2b2lkIChJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyOjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdHlwZWRlZiB2b2lkIChOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVy
PiBEaXNwYXRjaE1hcDsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGlzcGF0
Y2hNYXAsIGRpc3BhdGNoTWFwLCAoKSk7CiAgICAgaWYgKGRpc3BhdGNoTWFwLmlzRW1wdHkoKSkg
ewpAQCAtMzQ1LDEzICszNDUsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgICAgICAgICBDYWxsSGFuZGxlciBoYW5kbGVyOwog
ICAgICAgICB9IGNvbW1hbmRzW10gPSB7Ci0gICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UxIiwg
Jkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEgfSwKLSAg
ICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTIiLCAmSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcjo6bG9hZFJlc291cmNlMiB9LAotICAgICAgICAgICAgeyAibG9hZFJlc291cmNlMyIs
ICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzIH0sCi0g
ICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U0IiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQgfSwKLSAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTUi
LCAmSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNSB9LAot
ICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNiIsICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2IH0sCi0gICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U3
IiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcgfSwK
KyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTEiLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
cjo6bG9hZFJlc291cmNlMSB9LAorICAgICAgICAgICAgeyAibG9hZFJlc291cmNlMiIsICZOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UyIH0sCisgICAgICAgICAgICB7ICJs
b2FkUmVzb3VyY2UzIiwgJk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMg
fSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTQiLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlNCB9LAorICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNSIsICZO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1IH0sCisgICAgICAgICAgICB7
ICJsb2FkUmVzb3VyY2U2IiwgJk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJj
ZTYgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTciLCAmTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcjo6bG9hZFJlc291cmNlNyB9LAogICAgICAgICB9OwogICAgICAgICBzaXplX3QgbGVu
Z3RoID0gV1RGX0FSUkFZX0xFTkdUSChjb21tYW5kcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCkBAIC0zNjAsMTQgKzM2MCwxNCBAQCB2b2lkIEluc3BlY3Rv
ck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBT
dHJpbmcmIG1ldAogCiAgICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPjo6aXRlcmF0b3Ig
aXQgPSBkaXNwYXRjaE1hcC5maW5kKG1ldGhvZCk7CiAgICAgaWYgKGl0ID09IGRpc3BhdGNoTWFw
LmVuZCgpKSB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJy
b3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBt
YWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMyIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5k
IikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZj
YWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcn
LCAiTmV0d29yazMiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgICgoKnRoaXMpLippdC0+dmFsdWUpKGNhbGxJZCwgbWVzc2Fn
ZS5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6
bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQg
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC0zODMsNyAr
MzgzLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12
b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAg
aWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMihsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNh
bGxJZCwgV1RGOjptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2UzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURp
c3BhdGNoZXIpIHsKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShy
ZXN1bHQpLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlNChsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikK
K3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNChsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC00
MzEsNyArNDMxLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwog
fQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJj
ZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
ck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZv
aWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNShsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3Bv
bnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2KGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2U2KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVy
bmF0ZURpc3BhdGNoZXIpIHsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTYobG9uZyBjYWxsSWQsIGNvbnN0IElu
c3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6
bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2Jq
ZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyhsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7
CkBAIC03MjcsNyArNzI3LDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2Rl
KSB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uCiAvLyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQHByb3RvY29sIFJXSVByb3RvY29sTmV0d29y
azFEb21haW5IYW5kbGVyOwpAQCAtODAyLDcgKzgwMiw3IEBAIHByaXZhdGU6CiAjaW1wb3J0ICJS
V0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggMWZhYjIzNjNmOTcwZWE4NjdiMjE3YmEyYTRh
ZWIyZDgwMjBjMWVjMi4uMjZlNDQ1NGU3MDY0MjhlOTM3OWUxMDkwZTJhYzNmY2I4N2M4Yzg1YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJl
c3VsdApAQCAtMSw0ICsxLDQgQEAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSw4ICsyOSw4IEBACiAvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZW51bS12
YWx1ZXMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0j
aWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5lIElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjaWZuZGVmIEluc3BlY3Rvcl9B
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JfQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogCkBAIC0zOSwxOCArMzksMTggQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmRE
aXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVy
KSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlz
cGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tl
bmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERp
c3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFs
dWUobG9uZyBjYWxsSWQpID0gMDsKIH07CiAKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLSNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKLSMj
IyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisj
IyMgRW5kIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIAog
IyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKQEAgLTE0OSwx
MCArMTQ5LDEwIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLWNs
YXNzIEFsdGVybmF0ZUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjsKK2Ns
YXNzIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjsKICNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAotY2xhc3MgSW5zcGVjdG9y
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICAvLyBOYW1lZCBhZnRl
ciBwYXJhbWV0ZXIgJ3JldHVyblZhbHVlJyB3aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZlbnQg
Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUuCiAgICAgZW51bSBjbGFzcyBSZXR1cm5WYWx1ZSB7
CkBAIC0xNjEsMjUgKzE2MSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIE1hZ2VudGEgPSA3LAogICAg
ICAgICBZZWxsb3cgPSA4LAogICAgIH07IC8vIGVudW0gY2xhc3MgUmV0dXJuVmFsdWUKLSAgICB2
aXJ0dWFsIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUoRXJyb3JTdHJpbmcmLCBJbnNw
ZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5WYWx1ZSog
b3V0X3JldHVyblZhbHVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1hbmRXaXRoRW51bVJl
dHVyblZhbHVlKEVycm9yU3RyaW5nJiwgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UmV0dXJuVmFsdWUqIG91dF9yZXR1cm5WYWx1ZSkgPSAwOwogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgfkluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIo
KTsKKyAgICB2aXJ0dWFsIH5Db21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7
CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlciB7CitjbGFzcyBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJs
aWMgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvckNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9u
ZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJlZjxDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciosIENvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2go
bG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYm
IG1lc3NhZ2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGNvbW1hbmRXaXRoRW51bVJl
dHVyblZhbHVlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYg
bWVzc2FnZSk7CisgICAgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVj
dG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciogbV9hZ2VudDsKKyAgICBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoQmFja2Vu
ZERpc3BhdGNoZXImLCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Cisg
ICAgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lk
IHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3Bh
dGNoZXIoQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVE
aXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7
IH0KIHByaXZhdGU6Ci0gICAgQWx0ZXJuYXRlSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgQWx0ZXJuYXRlQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07
CiAKQEAgLTIyNywyMCArMjI3LDIwIEBAIHByaXZhdGU6CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNlbmRpZgogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIoKSB7IH0KK0NvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5Db21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAKLVJlZjxJbnNwZWN0b3JD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IEluc3BlY3RvckNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlciwgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciogYWdlbnQpCitSZWY8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIsIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hl
ciwgYWdlbnQpKTsKIH0KIAotSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
OjpJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IEluc3BlY3RvclN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQorQ29tbWFuZERvbWFpbkJhY2tl
bmREaXNwYXRjaGVyOjpDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3Bh
dGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tl
bmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcihudWxs
cHRyKQpAQCAtMjQ5LDE3ICsyNDksMTcgQEAgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVyOjpJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlMaXRl
cmFsKCJDb21tYW5kRG9tYWluIiksIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckNvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCit2b2lkIENvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPElu
c3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAK
ICAgICBpZiAobWV0aG9kID09ICJjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZSIpCiAgICAgICAg
IGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZQot
ICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQs
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygn
XCcnLCAiQ29tbWFuZERvbWFpbiIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwor
ICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQs
IEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiQ29t
bWFuZERvbWFpbiIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwogfQogCi12b2lk
IEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhFbnVt
UmV0dXJuVmFsdWUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIENv
bW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgewpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tl
bmREaXNwYXRjaGVyOjpjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25nIGNhCiAKICAgICBF
cnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlIG91dF9yZXR1cm5WYWx1ZTsKKyAgICBDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5WYWx1ZSBvdXRfcmV0dXJu
VmFsdWU7CiAgICAgbV9hZ2VudC0+Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUoZXJyb3IsICZv
dXRfcmV0dXJuVmFsdWUpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkKQEAgLTMyNiw5ICsz
MjYsOSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAKLWNsYXNzIEluc3BlY3RvckV2ZW50
RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEV2ZW50RG9tYWluRnJvbnRlbmREaXNw
YXRjaGVyIHsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0
Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkg
OiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsg
fQorICAgIEV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyKEZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkgeyB9CiAg
ICAgICAgIC8vIE5hbWVkIGFmdGVyIHBhcmFtZXRlciAncGFyYW1ldGVyJyB3aGlsZSBnZW5lcmF0
aW5nIGNvbW1hbmQvZXZlbnQgZXZlbnRXaXRoRW51bVBhcmFtZXRlci4KICAgICAgICAgZW51bSBj
bGFzcyBQYXJhbWV0ZXIgewogICAgICAgICAgICAgU2hhcmVkID0gMCwKQEAgLTMzNyw3ICszMzcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH07IC8vIGVudW0gY2xhc3MgUGFyYW1ldGVyCiAgICAgdm9p
ZCBldmVudFdpdGhFbnVtUGFyYW1ldGVyKFBhcmFtZXRlciBwYXJhbWV0ZXIpOwogcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKQEAgLTM4Myw3ICszODMsNyBAQCBwcml2YXRlOgogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotdm9pZCBJbnNwZWN0b3JFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0
Y2hlcjo6ZXZlbnRXaXRoRW51bVBhcmFtZXRlcihQYXJhbWV0ZXIgcGFyYW1ldGVyKQordm9pZCBF
dmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlcjo6ZXZlbnRXaXRoRW51bVBhcmFtZXRlcihQYXJh
bWV0ZXIgcGFyYW1ldGVyKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdl
ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRXZlbnREb21haW4uZXZlbnRX
aXRoRW51bVBhcmFtZXRlciIpKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEluc3BlY3RvckV2
ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyOjpldmVudFdpdGhFbnVtUGFyYW1ldGVyKFBhcmFt
ZXRlciBwYQogICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicGFyYW1l
dGVyIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKHBhcmFtZXRl
cikpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwg
V1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwor
ICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2Ut
PnRvSlNPTlN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC01NzEs
NyArNTcxLDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
ZW51bS12YWx1ZXMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIEBw
cm90b2NvbCBSV0lQcm90b2NvbENvbW1hbmREb21haW5Eb21haW5IYW5kbGVyOwpAQCAtNjMzLDcg
KzYzMyw3IEBAIHByaXZhdGU6CiAjaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVy
cy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQu
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC05
ODgsNyArOTg4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClldmVu
dFdpdGhFbnVtUGFyYW1ldGVyV2l0aFBhcmFtZXRlcjooUldJUHJvdG9jb2xFdmVudERvbWFpbkV2
ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXIpcGFyYW1ldGVyCiB7Ci0gICAgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRD
aGFubmVsKCk7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsKICAgICBpZiAoIWZyb250ZW5kQ2hh
bm5lbCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwt
cGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CmluZGV4IGNiMTAzMzRiOWM4MjE1ZDdkN2Q4NWIyYWZiNGQ0Zjg1ODI0YjMxNzku
LjIxNGMxYmJkYzYwMWY3MjlmMTIzMDk1M2EwMTczYTdjZjNlMmViOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVu
dHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1v
cHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xLDQgKzEsNCBAQAotIyMjIEJlZ2lu
IEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVnaW4g
RmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAg
LTI5LDggKzI5LDggQEAKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24K
IC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNw
ZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
IApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihS
ZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tl
bmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVm
UHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7
IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKIH07CiAKIApAQCAtNTQsOCArNTQsOCBAQCBwcml2YXRlOgogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLSNlbmRpZiAvLyAh
ZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKLSMjIyBFbmQg
RmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyNlbmRpZiAvLyAh
ZGVmaW5lZChJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5k
IEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIAogIyMjIEJl
Z2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKQEAgLTE4Myw3ICsxODMs
NyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLSNp
bmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtMjM3LDEzICsyMzcsMTMgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIAogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7
CitjbGFzcyBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgSW5zcGVj
dG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBp
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KKyAgICBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
cihGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkgOiBtX2Zyb250ZW5kQ2hhbm5lbChm
cm9udGVuZENoYW5uZWwpIHsgfQogICAgIHZvaWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVy
cyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1w
LCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0
IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcik7CiAgICAgdm9pZCBkaWRFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNv
bHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
UHJpbWFyeUNvbG9ycyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRD
b2xvcik7CiBwcml2YXRlOgotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CisgICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5l
bDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpAQCAtMjg5LDcgKzI4OSw3IEBAIHBy
aXZhdGU6CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi12b2lkIEluc3BlY3RvckRhdGFiYXNl
RnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3Ry
aW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBj
b25zdCBwcmludENvbG9yKQordm9pZCBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhl
Y3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRv
dWJsZSogY29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogY29uc3Qgc2NyZWVu
Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBh
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcikKIHsKICAgICBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBB
U0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMiKSk7CkBA
IC0zMTQsMTAgKzMxNCwxMCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRj
aGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxJbgogICAgICAgICBwYXJh
bXNPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgKnByaW50Q29s
b3IpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwg
V1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwor
ICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2Ut
PnRvSlNPTlN0cmluZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlz
cGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3Rl
cywgZG91YmxlIHRpbWVzdGFtcCwgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2
YWx1ZXMsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRl
Q29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCit2b2lkIERhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5v
dGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVuQ29sb3Is
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNv
bk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwo
IkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyIpKTsKQEAgLTMzMyw3ICsz
MzMsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVj
dXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPAogICAgIHBhcmFtc09iamVjdC0+c2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBwcmludENvbG9yKTsKICAgICBqc29uTWVz
c2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURjo6bW92ZShwYXJhbXNP
YmplY3QpKTsKIAotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRv
RnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kQ2hh
bm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpAQCAtNDIwLDE0ICs0MjAsMTQgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBw
cml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVz
dWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAg
ICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxT
VEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwv
KkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1
aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTQ1Miw5ICs0NTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxF
cnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNU
QVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAg
ICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZyZXN1bHQpKTsKICAgICAgICAg
fQogICAgIH07CkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRp
YyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC01NjksNyArNTY5LDcgQEAgU3RyaW5nIGdldEVudW1D
b25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1l
dGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogCkBAIC02MjEs
NyArNjIxLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAjaW1wb3J0ICJSV0lQcm90b2NvbEJh
Y2tlbmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CkBAIC04NDksNyArODQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogLSAodm9pZClkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICoqKW5v
dGVzIHRpbWVzdGFtcDooZG91YmxlICopdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopcGF5bG9h
ZCBzcWxFcnJvcjooUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVlbkNv
bG9yOihOU1N0cmluZyAqKilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKiopcHJp
bnRDb2xvcgogewotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
ID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOworICAgIEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVs
KCk7CiAgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKIApAQCAtODg5
LDcgKzg4OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKHZvaWQpZGlkRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRv
dWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5
bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBzcWxFcnJvcjooUldJUHJvdG9j
b2xEYXRhYmFzZUVycm9yICopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5nICopc2NyZWVu
Q29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilhbHRlcm5hdGVD
b2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKilwcmludENvbG9yCiB7Ci0gICAgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRD
aGFubmVsKCk7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsKICAgICBpZiAoIWZyb250ZW5kQ2hh
bm5lbCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRo
LWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCBkOWEyYjFlYjg5ZmM4OGIyMTk1NDdlMmYyNjVjZTZk
ODlmNTg4MjA3Li41OWRmYTBiY2VlNTdjNTNiNDEyOGJhZGM3YjRkZDFiNWQzZmZkMWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTEs
NCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtMjksOCArMjksOCBAQAogLy8gRE8gTk9UIEVESVQgVEhJUyBG
SUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLWRvbWFpbnMt
d2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJp
bmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
X2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNpZm5k
ZWYgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3Bl
Y3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKQEAgLTM5LDE5ICszOSwxOSBAQAogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZv
aWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRj
aGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRj
aGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAg
ICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKICNpZiBQTEFURk9S
TShXRUJfQ09NTUFORFMpCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsK
K2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgfkFsdGVybmF0ZUlu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRl
cm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxv
YWRSZXNvdXJjZShsb25nIGNhbGxJZCkgPSAwOwogfTsKICNlbmRpZiAvLyBQTEFURk9STShXRUJf
Q09NTUFORFMpCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNw
ZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBCZWdpbiBGaWxlOiBJ
bnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCkBAIC0xNDgsMzQgKzE0OCwzNCBAQCB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLWNsYXNzIEFsdGVybmF0
ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5hdGVOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykK
ICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAogI2lm
IFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKEVycm9yU3RyaW5nJikg
PSAwOwogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmlydHVhbCB+TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIoKTsKIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRTKQogCiAjaWYg
UExBVEZPUk0oV0VCX0NPTU1BTkRTKQotY2xhc3MgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJh
Y2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwg
OiBwdWJsaWMgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNh
bGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciosIE5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVy
cmlkZTsKIHByaXZhdGU6Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRSZXNv
dXJjZShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZh
dGU6Ci0gICAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Oklu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciogbV9hZ2VudDsKKyAgICBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNw
YXRjaGVyJiwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVybmF0ZURp
c3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogYWx0
ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNw
YXRjaGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZU5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVE
aXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5h
dGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNo
ZXI7CisgICAgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVE
aXNwYXRjaGVyOwogI2VuZGlmCiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykK
QEAgLTIyNCwyMyArMjI0LDIzIEBAIHByaXZhdGU6CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNlbmRpZgogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLUluc3BlY3Rv
ck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KK05ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjp+TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KICNlbmRpZiAvLyBQ
TEFURk9STShXRUJfQ09NTUFORFMpCiAKICNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1SZWY8
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFn
ZW50KQorUmVmPE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IE5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIE5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0
Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rv
ck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IEluc3BlY3Rv
clN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQorTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmRE
aXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcihudWxscHRy
KQpAQCAtMjQ5LDE3ICsyNDksMTcgQEAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
cjo6SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3IKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlMaXRlcmFs
KCJOZXR3b3JrMSIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQgTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5z
cGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIGlmIChtZXRob2QgPT0gImxvYWRSZXNv
dXJjZSIpCiAgICAgICAgIGxvYWRSZXNvdXJjZShjYWxsSWQsIG1lc3NhZ2UpOwogICAgIGVsc2UK
LSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElk
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmco
J1wnJywgIk5ldHdvcmsxIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFj
a2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3Jr
MSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwogfQogCi12b2lkIEluc3BlY3Rv
ck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZShsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0
ZURpc3BhdGNoZXIpIHsKQEAgLTMyNCwxMiArMzI0LDEyIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiAKICNpZiBQTEFURk9STShXRUJfRVZFTlRTKQotY2xhc3MgSW5zcGVjdG9yTmV0d29yazNG
cm9udGVuZERpc3BhdGNoZXIgeworY2xhc3MgTmV0d29yazNGcm9udGVuZERpc3BhdGNoZXIgewog
cHVibGljOgotICAgIEluc3BlY3Rvck5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CisgICAgTmV0d29y
azNGcm9udGVuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwpIDog
bV9mcm9udGVuZENoYW5uZWwoZnJvbnRlbmRDaGFubmVsKSB7IH0KICAgICB2b2lkIHJlc291cmNl
TG9hZGVkKCk7CiBwcml2YXRlOgotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hh
bm5lbDsKIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VCX0VWRU5UUykKIApAQCAtMzc3LDEyICsz
NzcsMTIgQEAgcHJpdmF0ZToKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYgUExBVEZPUk0o
V0VCX0VWRU5UUykKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNGcm9udGVuZERpc3BhdGNoZXI6OnJl
c291cmNlTG9hZGVkKCkKK3ZvaWQgTmV0d29yazNGcm9udGVuZERpc3BhdGNoZXI6OnJlc291cmNl
TG9hZGVkKCkKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIk5ldHdvcmszLnJlc291cmNlTG9hZGVkIikp
OwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5z
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KICNl
bmRpZiAvLyBQTEFURk9STShXRUJfRVZFTlRTKQogCkBAIC00NjUsMTQgKzQ2NSwxNCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1
bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAg
IHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNU
QVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8q
TmV0d29ya0Vycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAg
ICAgIEJ1aWxkZXIoUmVmPC8qTmV0d29ya0Vycm9yKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0
KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAgewog
ICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJf
Y3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC00OTcsOSArNDk3LDkgQEAgcHVibGljOgog
ICAgICAgICBSZWY8TmV0d29ya0Vycm9yPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3Jl
YWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihOZXR3b3JrRXJyb3IpID09
IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihOZXR3b3JrRXJyb3IpID09IHNpemVvZihJbnNw
ZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAg
ICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0
PFJlZjxOZXR3b3JrRXJyb3I+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTUx
Myw3ICs1MTMsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVs
ZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1Nl
dD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJu
IEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0K
IH07CiAKQEAgLTYxNSw3ICs2MTUsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50
IGNvZGUpIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbgog
Ly8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIEBwcm90b2NvbCBSV0lQcm90b2Nv
bE5ldHdvcmsxRG9tYWluSGFuZGxlcjsKQEAgLTY3OSw3ICs2NzksNyBAQCBwcml2YXRlOgogI2lt
cG9ydCAiUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4K
ICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtOTU0LDcgKzk1NCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKHZvaWQpcmVzb3VyY2VMb2FkZWQKIHsKLSAgICBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9u
dGVuZENoYW5uZWwoKTsKKyAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOwogICAgIGlmICghZnJvbnRl
bmRDaGFubmVsKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlm
ZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5q
c29uLXJlc3VsdAppbmRleCA5YjNhZjI4MTQ3Y2ZmOTAwODQ1NTViNDAyNGVmMDI3ZDc2OWMwM2Zm
Li5kNzI2MDQ2MmQ0YmMyN2ZmMGRlOTlkOGRmZTNjZDliYWYwODJmNDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2Ft
ZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1k
aWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CkBAIC0xLDQgKzEsNCBAQAotIyMjIEJlZ2luIEZp
bGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVnaW4gRmls
ZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI5
LDggKzI5LDggQEAKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBzYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uCiAvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKQEAg
LTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERp
c3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxC
YWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBX
VEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBw
cml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CiB9OwogCiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi0jZW5kaWYgLy8gIWRlZmlu
ZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCi0jIyMgRW5kIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjZW5kaWYgLy8gIWRlZmlu
ZWQoSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxl
OiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBCZWdpbiBG
aWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCkBAIC0xNzcsNyArMTc3LDcgQEAg
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKQEAgLTQzNyw3ICs0MzcsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50
VmFsdWUoaW50IGNvZGUpIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBzYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29u
CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogCkBAIC00OTEsNyArNDkxLDcg
QEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAjaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmREaXNw
YXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3No
YWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAppbmRleCAzOGFkNzk5M2Vi
OGVhZDAzNmZiNGQwMzMyODQ2ZjMyMzM2YTNjNDdjLi4wYTAwNWZhYWZjOWYwZjY3MGUwZWYyMTA0
Y2NlN2RjMWYxN2Q5YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJz
Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1
bHQKQEAgLTEsNCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjksOCArMjksOCBAQAogLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2Vk
LW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29s
LWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNp
Zm5kZWYgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5lIElu
c3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKQEAgLTM5LDEyICszOSwxMiBAQAogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAg
IHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNw
YXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2
b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNw
YXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0K
KyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKQEAgLTU0LDgg
KzU0LDggQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yX0FsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29t
bWFuZHMuanMKIC8qCkBAIC0xNzcsNyArMTc3LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTM1Niwx
NCArMzU2LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3Mg
QnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9y
ZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQ
PiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAg
ICAgQnVpbGRlcihSZWY8LypLZXlQYXRoKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBv
YmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qS2V5UGF0aCovSW5zcGVjdG9yT2JqZWN0PiYm
IG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBi
dWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtMzgxLDkgKzM4MSw5IEBAIHB1
YmxpYzoKICAgICAgICAgUmVmPEtleVBhdGg+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3Rf
cmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEtleVBhdGgpID09IHNp
emVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihLZXlQYXRoKSA9PSBzaXplb2YoSW5zcGVjdG9yT2Jq
ZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgp
OwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8S2V5
UGF0aD4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzk2LDcgKzM5Niw3IEBA
IHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRl
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0Zp
ZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogCiAgICAgdm9pZCBz
ZXRTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTUxMCw3ICs1MTAsNyBAQCBTdHJpbmcg
Z2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBzaGFkb3dlZC1vcHRpb25hbC10
eXBlLXNldHRlcnMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIApA
QCAtNTYyLDcgKzU2Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogI2ltcG9ydCAiUldJUHJv
dG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmlt
aXRpdmUtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZl
LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggYWYxZDUzMDk3Y2E2N2FhMGEyOGY0YjA0YjYwOWYzYTkz
YjYwYjE5MS4uNmM2ZjlkZmY0ZmQ3NTExODZkNjcxNDdmMDQ5NmNlMDk3NmM2YjJhNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CkBA
IC0xLDQgKzEsNCBAQAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI5LDggKzI5LDggQEAKIC8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0
aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyc19oCi0jZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19o
CisjaWZuZGVmIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmlu
ZSBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCkBAIC0zOSwxMiArMzksMTIgQEAKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoK
LSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUo
ZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYg
ZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIp
OyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVm
UHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCkBAIC01
NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvcl9BbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2Vu
ZENvbW1hbmRzLmpzCiAvKgpAQCAtMTc3LDcgKzE3Nyw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC00
MzIsNyArNDMyLDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAv
LyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZy
b20gdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24KIC8vIGJ5IHRo
ZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0
ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKICNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgi
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oPgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+
Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlv
bi1hcnJheS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDRkYTk3ZjQ4NGZmNjM1ZmM2M2MzNDZjYTE4
ZGUzMjE4YTY5MjBiNGYuLjhkZTNmYzllMWJjMGJlOWExMzZlMGQ3Mjc3ZTljMzJmN2M0ZDY0YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtMSw0ICsxLDQgQEAKLSMj
IyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMj
IEJlZ2luIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC0yOSw4ICsyOSw4IEBACiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpz
b24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JfQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKIApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFz
cyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hl
cihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIo
UmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0
KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApAQCAtNTQsOCArNTQsOCBAQCBwcml2YXRlOgogCiAjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLSNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKLSMjIyBF
bmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMg
RW5kIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIAogIyMj
IEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKQEAgLTE4MCw3ICsx
ODAsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
LSNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgogI2VuZGlmCiAK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNDYwLDcgKzQ2MCw3IEBAIFN0cmluZyBnZXRFbnVt
Q29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlw
ZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogCkBAIC01MTQsNyAr
NTE0LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAjaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tl
bmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZmI0YWVkMjAxNzBk
YjlkNTNmMjgyMzRhNTc5Y2Y0MDU2MTFiYjMyYy4uZmQ4ZWM4MGMwNzgxZTE3NTRmN2Y2MmFjZTE4
ZDE4NDJlZjM1MWY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAtMSw0
ICsxLDQgQEAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSw4ICsyOSw4IEBACiAvLyBETyBOT1QgRURJVCBUSElTIEZJ
TEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1l
bnVtLXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQog
Ci0jaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5l
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjaWZuZGVmIEluc3BlY3Rv
cl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JfQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQogCkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNz
IEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tl
bmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRj
aGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAg
ICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5k
RGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlz
cGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCkBAIC01NCw4ICs1NCw4IEBAIHByaXZh
dGU6CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
IAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
c19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMu
aAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaAogCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgpA
QCAtMTgxLDcgKzE4MSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQotI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
cy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgi
CiAjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC00NjEsNyArNDYxLDcgQEAgU3Ry
aW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAvLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlv
bi1lbnVtLXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIApA
QCAtNTEzLDcgKzUxMyw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogI2ltcG9ydCAiUldJUHJv
dG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRl
eCA5ZmJiNWY1MzM0OWZlMTIzZjAwOWRjNjMwZGJhZDQ4NDdhNTlkMWYzLi5iYzgwY2I2NWUyNmFm
ZmM5N2NiYmFjODUwNjZmMmMwODU4MzkwZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1v
YmplY3QtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5q
c29uLXJlc3VsdApAQCAtMSw0ICsxLDQgQEAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rvcjo6QWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSw4ICsyOSw4IEBACiAvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
dHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXBy
b3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
X2gKKyNpZm5kZWYgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVm
aW5lIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKQEAgLTM5LDEyICszOSwxMiBAQAog
CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGlj
OgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92
ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4m
JiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hl
cik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0
cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBS
ZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKQEAg
LTU0LDggKzU0LDggQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yX0FsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3I6OkFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanMKIC8qCkBAIC0xNzcsNyArMTc3LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yOjpBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAg
LTM2MywxNCArMzYzLDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAg
Y2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUg
fCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAK
LSAgICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3JPYmplY3Q+
JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAg
ICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQs
IGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC0zOTUsOSArMzk1LDkgQEAg
cHVibGljOgogICAgICAgICBSZWY8RXJyb3I+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3Rf
cmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXpl
b2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3Qp
LCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAg
ICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxFcnJvcj4q
PigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNDExLDcgKzQxMSw3IEBAIHB1Ymxp
YzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1Nl
dD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtNDI1LDE0ICs0
MjUsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWls
ZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3Vs
dDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBj
YXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBC
dWlsZGVyKFJlZjwvKk9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlKi9JbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qT3B0aW9uYWxQYXJhbWV0
ZXJCdW5kbGUqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVz
dWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FT
U0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0
YXRlKTsKQEAgLTQ0Myw5ICs0NDMsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxPcHRpb25hbFBh
cmFtZXRlckJ1bmRsZT4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUpID09
IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSkgPT0g
c2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVm
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1
bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50
ZXJwcmV0X2Nhc3Q8UmVmPE9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlPio+KCZyZXN1bHQpKTsKICAg
ICAgICAgfQogICAgIH07CkBAIC00NTcsNyArNDU3LDcgQEAgcHVibGljOgogICAgICAqLwogICAg
IHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIHNldENvbHVtbk5hbWVzKFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiB2YWx1ZSkKQEAgLTUxMywxNCArNTEz
LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRl
ciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7
CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2Fz
dFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVp
bGRlcihSZWY8LypQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYm
IG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rv
ck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmpl
Y3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0Zp
ZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTU4MCw5ICs1
ODAsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxQYXJhbWV0ZXJCdW5kbGU+IHJlbGVhc2UoKQog
ICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNT
ZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFt
ZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAot
ICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPFBhcmFtZXRlckJ1bmRsZT4qPigmcmVzdWx0
KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNjAxLDcgKzYwMSw3IEBAIHB1YmxpYzoKICAgICAg
Ki8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtNjIxLDE0ICs2MjEsMTQgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAg
ICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1f
cmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAg
ICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUo
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRl
cjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJl
ZjwvKk9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMqL0luc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypPYmplY3RXaXRoUHJvcGVy
dHlOYW1lQ29uZmxpY3RzKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAg
OiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09N
UElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25f
aW5pdF9zdGF0ZSk7CkBAIC02NzQsOSArNjc0LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8T2Jq
ZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cz4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25v
dF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoT2JqZWN0V2l0aFBy
b3BlcnR5TmFtZUNvbmZsaWN0cykgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE9iamVj
dFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBj
YW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxPYmplY3RXaXRo
UHJvcGVydHlOYW1lQ29uZmxpY3RzPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBA
IC02OTMsNyArNjkzLDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5v
RmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVs
ZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJl
dHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAg
ICB9CiB9OwogCkBAIC03MTYsMTQgKzcxNiwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50
IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBC
dWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qUGFyYW1ldGVyQnVuZGxlKi9JbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8q
UGFyYW1ldGVyQnVuZGxlKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAg
OiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09N
UElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25f
aW5pdF9zdGF0ZSk7CkBAIC03NzYsOSArNzc2LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8UGFy
YW1ldGVyQnVuZGxlPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0b3JP
YmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAg
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxs
KCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxQ
YXJhbWV0ZXJCdW5kbGU+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTc5Niw3
ICs3OTYsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNT
ZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4o
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07
CiAKQEAgLTg5Nyw3ICs4OTcsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNv
ZGUpIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24KIC8vIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1p
bnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAKQEAgLTk1MSw3ICs5NTEsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKICNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oPgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0j
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1
bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggMDQ1Y2NiOGYyMGNmNTgzMDg3NDE4ZjA2OGZi
NWEwMDUxODliMzczYi4uZmM1ODIwY2FhZWE0MDlkMTkzYjRhNTg0MGMwMjBhZWM0MGEwNWUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTEsNCArMSw0IEBACi0j
IyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyMj
IyBCZWdpbiBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgpAQCAtMjksOCArMjksOCBAQAogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMu
anNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVm
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5lIEluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjaWZuZGVmIEluc3BlY3Rvcl9BbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogCkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNs
YXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRj
aGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1f
YmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hl
cihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNw
YXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOwogfTsKIAogCkBAIC01NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAotI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMj
IEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMj
IyBFbmQgRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAj
IyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgpAQCAtMTgxLDcg
KzE4MSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQotI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2lu
Y2x1ZGUgIkluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjZW5kaWYK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC0zNjcsMTQgKzM2NywxNCBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7Cisg
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBs
YXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwg
U1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qVHlwZU5l
ZWRpbmdDYXN0Ki9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAg
IEJ1aWxkZXIoUmVmPC8qVHlwZU5lZWRpbmdDYXN0Ki9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0
KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAgewog
ICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJf
Y3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC00MjAsOSArNDIwLDkgQEAgcHVibGljOgog
ICAgICAgICBSZWY8VHlwZU5lZWRpbmdDYXN0PiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90
X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihUeXBlTmVlZGluZ0Nh
c3QpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsK
KyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihUeXBlTmVlZGluZ0Nhc3QpID09IHNp
emVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0
LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVy
cHJldF9jYXN0PFJlZjxUeXBlTmVlZGluZ0Nhc3Q+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAg
ICAgfTsKQEAgLTQzOSw3ICs0MzksNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRl
cjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCkpOwogICAgIH0KIH07CiAKQEAgLTQ2NywxNCArNDY3LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50
IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+
KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypSZWN1cnNpdmVPYmpl
Y3QxKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxk
ZXIoUmVmPC8qUmVjdXJzaXZlT2JqZWN0MSovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAg
ICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0
ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNDg1LDkgKzQ4NSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgUmVmPFJlY3Vyc2l2ZU9iamVjdDE+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVh
ZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlY3Vyc2l2ZU9iamVjdDEp
ID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWN1cnNpdmVPYmplY3QxKSA9PSBzaXpl
b2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxs
KCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5y
ZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnBy
ZXRfY2FzdDxSZWY8UmVjdXJzaXZlT2JqZWN0MT4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAg
ICB9OwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVp
bGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVy
PE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAg
ICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRPYmooUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDI+IHZhbHVlKQpAQCAtNTE4LDE0ICs1MTgsMTQgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBw
cml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVz
dWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAg
ICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxT
VEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwv
KlJlY3Vyc2l2ZU9iamVjdDIqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkK
KyAgICAgICAgQnVpbGRlcihSZWY8LypSZWN1cnNpdmVPYmplY3QyKi9JbnNwZWN0b3JPYmplY3Q+
JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAg
ICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQs
IGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC01MzYsOSArNTM2LDkgQEAg
cHVibGljOgogICAgICAgICBSZWY8UmVjdXJzaXZlT2JqZWN0Mj4gcmVsZWFzZSgpCiAgICAgICAg
IHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVz
dWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVj
dXJzaXZlT2JqZWN0MikgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fu
bm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlY3Vyc2l2ZU9i
amVjdDIpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAg
ICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3Vs
dCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpt
b3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxSZWN1cnNpdmVPYmplY3QyPio+KCZyZXN1bHQpKTsK
ICAgICAgICAgfQogICAgIH07CkBAIC01NTAsNyArNTUwLDcgQEAgcHVibGljOgogICAgICAqLwog
ICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIHNldE9iaihSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT4gdmFsdWUpCkBAIC02OTYsMTYg
KzY5NiwxNiBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6
VHlwZU5lZWRpbmdDYXN0Pjo6YXNzZXJ0VmFsdWVIYXNFeAogfQogI2VuZGlmIC8vICFBU1NFUlRf
RElTQUJMRUQKIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5n
Q2FzdD4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGlu
Z0Nhc3Q+OjpydW50aW1lQ2FzdChSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4mJiB2
YWx1ZSkKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0
Pjo6cnVudGltZUNhc3QoUmVmUHRyPEluc3BlY3RvclZhbHVlPiYmIHZhbHVlKQogewotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0OworICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHJlc3VsdDsKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNP
YmplY3QocmVzdWx0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNj
ZWVkZWQpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBCaW5kaW5nVHJhaXRzPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OmFzc2VydFZhbHVlSGFzRXhwZWN0
ZWRUeXBlKHJlc3VsdC5nZXQoKSk7CiAjZW5kaWYgIC8vICFBU1NFUlRfRElTQUJMRUQKLSAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoSW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRp
bmdDYXN0KSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9j
YXN0X3Byb2JsZW0pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3QqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdEJhc2UqPihyZXN1bHQuZ2V0KCkpKTsKKyAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0KSA9PSBzaXplb2YoSW5z
cGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Kj4oc3RhdGlj
X2Nhc3Q8SW5zcGVjdG9yT2JqZWN0QmFzZSo+KHJlc3VsdC5nZXQoKSkpOwogfQogCiAKQEAgLTc4
OCw3ICs3ODgsNyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVz
dDo6UmVjdXJzaXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFzRQogLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5n
cy5weQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
IApAQCAtODQwLDcgKzg0MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogI2ltcG9ydCAiUldJ
UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0Fs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggZTQyOGY0NWZmZDlk
NmJlMGVkY2U3MTg3OTk3M2I5N2VjNzQzZjE5Ni4uZDViMWJmZjI1ZWIxN2IyZjU5ZDVlZTkzNzk1
M2M3NjAwNGY3MTBhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFN0
cmluZyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBu
YW1lLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiSlNDb250ZXh0IikgOiBuYW1lOwogfQogCi12
b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uKQordm9pZCBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uKQogewogICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwogCkBAIC02MCw3ICs2MCw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKIHsKICAgICBK
U0xvY2tIb2xkZXIgbG9ja2VyKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKIAotICAgIG1fZ2xvYmFs
T2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBtX2dsb2JhbE9iamVj
dC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFz
b246Okluc3BlY3RvckRlc3Ryb3llZCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaAppbmRleCA4YzZlYWI3NzY2MDhiNTQ4NTBiMGE0Y2RiMjNiNGIy
MjNiZTI4ZGQxLi40MGI0YjMwNzI2NTQxYzk4OGQ5YTMwZjhmNGNhNTFlMTg2MmY5ZGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWVudW0gY2xhc3MgSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbjsKK2VudW0gY2xhc3MgRGlzY29ubmVjdFJlYXNvbjsKIH0KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbm5l
Y3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGF1dG9tYXRpY0lu
c3BlY3Rpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxOWEwNDBhOTI0MTA5NzE4OTQ1OWZk
NDJhNmEyMzRmYWY4NjJlZjY2Li4wMDZkNWFkNTcxNzkwYTVlYjlkYzQ3NzRjMjBmNWU2MDMzOWUw
Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtODQwLDggKzg0MCw4IEBAIF9fWk43V2ViQ29y
ZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEzUmVuZGVy
RWxlbWVudEVSS04zCiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMXBhdXNlVHJh
bnNpdGlvbkF0VGltZUVQTlNfMTNSZW5kZXJFbGVtZW50RVJLTjNXVEY2U3RyaW5nRWQKIF9fWk43
V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjM2c2V0QWxsb3dzTmV3QW5pbWF0aW9uc1doaWxl
U3VzcGVuZGVkRWIKIF9fWk43V2ViQ29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDhzZXRWYWx1ZUVS
S04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVj
dEZyb250ZW5kRVBOOUluc3BlY3RvcjI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRWIKLV9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5kRU45SW5zcGVj
dG9yMjVJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JD
b250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45SW5zcGVjdG9yMTVGcm9udGVuZENoYW5uZWxF
YgorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRF
TjlJbnNwZWN0b3IxNkRpc2Nvbm5lY3RSZWFzb25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIxOHNldFByb2ZpbGVyRW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIyNWV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
RVBOU18yM0luc3BlY3RvckZyb250ZW5kQ2xpZW50RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMTZi
OWNkNTE3NjBjZjRlNTJlYmQyM2I3OWQyZjM1MzMzMDY3ZTJhYi4uZTYxMDM1NjkzZmVlZWNlNGMx
ZjIwZDBlODk1NGEwZjBhMmVlM2RjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC02MzM0LDcgKzYz
MzQsNyBAQCBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTByZW1vdmVQYWdlRVBOU180UGFnZUUKIF9f
Wk4zV1RGN0hhc2hTZXRJUE43V2ViQ29yZTRQYWdlRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBIYXNo
VHJhaXRzSVMzX0VFRTZyZW1vdmVFUktTM18KIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3Jl
NFBhZ2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvckVOU183UHRySGFzaElTM19FRU5TXzEwSGFz
aFRyYWl0c0lTM19FRVM4X0U2bG9va3VwSU5TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklTNl9F
RVMzX0VFUFMzX1JLVDBfCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyMmluc3Bl
Y3RlZFBhZ2VEZXN0cm95ZWRFdgotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThk
aXNjb25uZWN0RnJvbnRlbmRFdgorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3I6OkNvbnRyb2xsZXIx
OGRpc2Nvbm5lY3RGcm9udGVuZEV2CiBfX1pON1dlYkNvcmUyMUluamVjdGVkU2NyaXB0TWFuYWdl
cjEwZGlzY29ubmVjdEV2CiBfX1pON1dlYkNvcmUxOEluamVjdGVkU2NyaXB0SG9zdDEwZGlzY29u
bmVjdEV2CiBfX1pON1dlYkNvcmUxOEluamVjdGVkU2NyaXB0SG9zdEQxRXYKQEAgLTE3MzE5LDcg
KzE3MzE5LDcgQEAgX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5n
RXYKIF9fWk43V2ViQ29yZTMxY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hckV2CiBfX1pO
N1dlYkNvcmUyMWNvbnRleHRNZW51SXRlbVRhZ0N1dEV2CiBfX1pON1dlYkNvcmUyM2NvbnRleHRN
ZW51SXRlbVRhZ1Bhc3RlRXYKLV9fWk5LN1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNmhh
c0luc3BlY3RvckZyb250ZW5kQ2xpZW50RXYKK19fWk5LN1dlYkNvcmUxOUluc3BlY3Rvcjo6Q29u
dHJvbGxlcjI2aGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFdgogX19aTks3V2ViQ29yZTIxQmFj
a0ZvcndhcmRDb250cm9sbGVyMThjYW5Hb0JhY2tPckZvcndhcmRFaQogX19aTks3V2ViQ29yZTRQ
YWdlMThjYW5Hb0JhY2tPckZvcndhcmRFaQogX19aTks3V2ViQ29yZTIxQ29udGV4dE1lbnVDb250
cm9sbGVyMjFjaGVja09yRW5hYmxlSWZOZWVkZWRFUk5TXzE1Q29udGV4dE1lbnVJdGVtRQpAQCAt
MjQ0MzcsOSArMjQ0MzcsOSBAQCBfX1pON1dlYkNvcmU4UHJvdG9jb2w3TmV0d29yazhSZXNwb25z
ZThNaW1lVHlwZUUKIF9fWk43V2ViQ29yZThQcm90b2NvbDNDU1MxMUNTU1Byb3BlcnR5OFByaW9y
aXR5RQogX19aTjdXZWJDb3JlOFByb3RvY29sM0NTUzExQ1NTUHJvcGVydHk4UGFyc2VkT2tFCiBf
X1pON1dlYkNvcmU4UHJvdG9jb2wzQ1NTMTFDU1NQcm9wZXJ0eTZTdGF0dXNFCi1fX1pON1dlYkNv
cmUyMEluc3BlY3RvcldvcmtlckFnZW50MjFXb3JrZXJGcm9udGVuZENoYW5uZWw4c19uZXh0SWRF
CitfX1pON1dlYkNvcmUyMEluc3BlY3Rvcjo6V29ya2VyQWdlbnQyMVdvcmtlckZyb250ZW5kQ2hh
bm5lbDhzX25leHRJZEUKIF9fWlRWTjdXZWJDb3JlMThJbnNwZWN0b3JCYXNlQWdlbnRJTlNfMjBJ
bnNwZWN0b3JXb3JrZXJBZ2VudEVFRQotX19aVFZON1dlYkNvcmUyMEluc3BlY3RvcldvcmtlckFn
ZW50MjFXb3JrZXJGcm9udGVuZENoYW5uZWxFCitfX1pUVk43V2ViQ29yZTIwSW5zcGVjdG9yOjpX
b3JrZXJBZ2VudDIxV29ya2VyRnJvbnRlbmRDaGFubmVsRQogX19aTjdXZWJDb3JlTDMySlNBYnN0
cmFjdFdvcmtlckNvbnN0cnVjdG9yVGFibGVFCiBfX1pON1dlYkNvcmVMMzBKU0Fic3RyYWN0V29y
a2VyUHJvdG90eXBlVGFibGVFCiBfX1pON1dlYkNvcmVMMjFKU0Fic3RyYWN0V29ya2VyVGFibGVF
CkBAIC0yNTAwMiw4ICsyNTAwMiw4IEBAIF9fWkdWWk43V2ViQ29yZTEyd3JhcHBlck93bmVyRVBO
U18xNURPTVdyYXBwZXJXb3JsZEVQTlNfMThJbmplY3RlZFNjcmlwdEhvc3RFRTI1CiBfX1pON1dl
YkNvcmVMMzlKU0luc3BlY3RvckZyb250ZW5kSG9zdENvbnN0cnVjdG9yVGFibGVFCiBfX1pON1dl
YkNvcmVMMzdKU0luc3BlY3RvckZyb250ZW5kSG9zdFByb3RvdHlwZVRhYmxlRQogX19aTjdXZWJD
b3JlTDI4SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RUYWJsZUUKLV9fWlpON1dlYkNvcmUxMndyYXBw
ZXJPd25lckVQTlNfMTVET01XcmFwcGVyV29ybGRFUE5TXzIxSW5zcGVjdG9yRnJvbnRlbmRIb3N0
RUUyOGpzSW5zcGVjdG9yRnJvbnRlbmRIb3N0T3duZXIKLV9fWkdWWk43V2ViQ29yZTEyd3JhcHBl
ck93bmVyRVBOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RF
RTI4anNJbnNwZWN0b3JGcm9udGVuZEhvc3RPd25lcgorX19aWk43V2ViQ29yZTEyd3JhcHBlck93
bmVyRVBOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfMjFJbnNwZWN0b3I6OkZyb250ZW5kSG9zdEVF
Mjhqc0luc3BlY3RvckZyb250ZW5kSG9zdE93bmVyCitfX1pHVlpON1dlYkNvcmUxMndyYXBwZXJP
d25lckVQTlNfMTVET01XcmFwcGVyV29ybGRFUE5TXzIxSW5zcGVjdG9yOjpGcm9udGVuZEhvc3RF
RTI4anNJbnNwZWN0b3JGcm9udGVuZEhvc3RPd25lcgogX19aTjdXZWJDb3JlTDE3SlNJbnQxNkFy
cmF5VGFibGVFCiBfX1pON1dlYkNvcmVMMjZKU0ludDE2QXJyYXlQcm90b3R5cGVUYWJsZUUKIF9f
Wk43V2ViQ29yZUwyOEpTSW50MTZBcnJheUNvbnN0cnVjdG9yVGFibGVFCkBAIC0yNzE4Nyw4ICsy
NzE4Nyw4IEBAIF9fWlpON1dlYkNvcmUxM0lubGluZVRleHRCb3g1cGFpbnRFUk5TXzlQYWludElu
Zm9FUktOU18xMUxheW91dFBvaW50RU5TXzEwTGF5b3V0CiBfX1pHVlpON1dlYkNvcmUxM0lubGlu
ZVRleHRCb3g1cGFpbnRFUk5TXzlQYWludEluZm9FUktOU18xMUxheW91dFBvaW50RU5TXzEwTGF5
b3V0VW5pdEVTNl9FMzNvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4yLmIKIF9fWlpO
N1dlYkNvcmUzMEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbDhkaXNwYXRjaEVSS04zV1RG
NlN0cmluZ0VFMTFkaXNwYXRjaE1hcAogX19aR1ZaTjdXZWJDb3JlMzBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlckltcGw4ZGlzcGF0Y2hFUktOM1dURjZTdHJpbmdFRTExZGlzcGF0Y2hNYXAuYgot
X19aWk5LN1dlYkNvcmUzMEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1wbDE5cmVwb3J0UHJv
dG9jb2xFcnJvckVQS2xOU18yNkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyMTVDb21tb25FcnJv
ckNvZGVFUktOM1dURjZTdHJpbmdFTlM1XzEwUGFzc1JlZlB0cklOU18xNEluc3BlY3RvckFycmF5
RUVFRTE0c19jb21tb25FcnJvcnMKLV9fWkdWWk5LN1dlYkNvcmUzMEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVySW1wbDE5cmVwb3J0UHJvdG9jb2xFcnJvckVQS2xOU18yNkluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyMTVDb21tb25FcnJvckNvZGVFUktOM1dURjZTdHJpbmdFTlM1XzEwUGFzc1Jl
ZlB0cklOU18xNEluc3BlY3RvckFycmF5RUVFRTE0c19jb21tb25FcnJvcnMuYgorX19aWk5LN1dl
YkNvcmUzMEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXJJbXBsMTlyZXBvcnRQcm90b2NvbEVy
cm9yRVBLbE5TXzI2SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIxNUNvbW1vbkVycm9yQ29kZUVS
S04zV1RGNlN0cmluZ0VOUzVfMTBQYXNzUmVmUHRySU5TXzE0SW5zcGVjdG9yQXJyYXlFRUVFMTRz
X2NvbW1vbkVycm9ycworX19aR1ZaTks3V2ViQ29yZTMwSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlckltcGwxOXJlcG9ydFByb3RvY29sRXJyb3JFUEtsTlNfMjZJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjE1Q29tbW9uRXJyb3JDb2RlRVJLTjNXVEY2U3RyaW5nRU5TNV8xMFBhc3NSZWZQdHJJ
TlNfMTRJbnNwZWN0b3JBcnJheUVFRUUxNHNfY29tbW9uRXJyb3JzLmIKIF9fWlpON1dlYkNvcmVM
MjJjb21wdXRlUHNldWRvQ2xhc3NNYXNrRVBOU18xNEluc3BlY3RvckFycmF5RUU2YWN0aXZlCiBf
X1pHVlpON1dlYkNvcmVMMjJjb21wdXRlUHNldWRvQ2xhc3NNYXNrRVBOU18xNEluc3BlY3RvckFy
cmF5RUU2YWN0aXZlLmIKIF9fWlpON1dlYkNvcmVMMjJjb21wdXRlUHNldWRvQ2xhc3NNYXNrRVBO
U18xNEluc3BlY3RvckFycmF5RUU1aG92ZXIKQEAgLTI4NzUzLDcgKzI4NzUzLDcgQEAgX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzQ0c19kZWZlcnJlZFJlcGFpbnREZWxheUluY3JlbWVudER1cmluZ0xv
YWRpbmdFCiBfX1pON1dlYkNvcmUxOEhSVEZEYXRhYmFzZUxvYWRlcjhzX2xvYWRlckUKIF9fWk43
V2ViQ29yZTE4SWRlbnRpZmllcnNGYWN0b3J5MTFzX3Byb2Nlc3NJZEUKIF9fWk43V2ViQ29yZTIx
SW5zcGVjdG9yQ29uc29sZUFnZW50MTlzX2VuYWJsZWRBZ2VudENvdW50RQotX19aTjdXZWJDb3Jl
MjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xN3NfZnJvbnRlbmRDb3VudGVyRQorX19aTjdXZWJD
b3JlMjRJbnNwZWN0b3I6Okluc3RydW1lbnRhdGlvbjE3c19Gcm9udGVuZENvdW50ZXJFCiBfX1pO
N1dlYkNvcmUxNE9zY2lsbGF0b3JOb2RlMTVzX3dhdmVUYWJsZVNpbmVFCiBfX1pON1dlYkNvcmUx
NE9zY2lsbGF0b3JOb2RlMTdzX3dhdmVUYWJsZVNxdWFyZUUKIF9fWk43V2ViQ29yZTE0T3NjaWxs
YXRvck5vZGUxOXNfd2F2ZVRhYmxlU2F3dG9vdGhFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4
IGE3MDRjZDk4NGVhOGQzOGVmMGYxYzVlZTI5MGRjNTM4NmE4YjVmMGMuLjNlNmY2MzIxNjEzYjYz
ZGIwZGVlNzU0MGEyNGJkOWM1NmU2MDg1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC00
OSwxMyArNDksMTMgQEAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW4KIHsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpBcHBs
aWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25u
ZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggMGI4MTMz
NWY1MWNlMGE2YzhmNTBiNmNkMzc0NGFkNjdlMDNjOTMzZC4uZjA4YWNlMjBmNzE3MTgzYWQ5MGQ0
NmZmZGUwNmQzYTYzNGNmYTc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
LWNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7CitjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiB9CkBAIC00NywxNCArNDcsMTQgQEAgY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6
QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgdXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1
cyhGcmFtZSopOwogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpOwpAQCAtNzIsOCArNzIs
OCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50TG9hZGVyKiBhc3NlcnRGcmFtZVdpdGhEb2N1bWVu
dExvYWRlcihFcnJvclN0cmluZyYsIFN0cmluZyBmcmFtZUlkKTsKIAogICAgIEluc3BlY3RvclBh
Z2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3Bh
dGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCmluZGV4IGRlMTE3YzEwYmE0ZjM0NGJjNzMxYTFkOWY0NzkwMTBkOGQ4NTkwYmMuLjg1MzIx
ZGQ3ZGQyZjc4YmVhOTllNTJlMmY3NjBlMDdlMjk4ODA0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzUxLDEzICszNTEsMTMgQEAg
SW5zcGVjdG9yQ1NTQWdlbnQ6On5JbnNwZWN0b3JDU1NBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbikKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA4ODY2NGM4OTYw
ZTNmY2JmZmMyODZiY2M1OWY5NDIxYmViZTUwYWMzLi5lNGE2MDM3OTU0YzFhMjcwYzdiYzhkODU1
YWZjYmVmZTcwZmZiNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWNsYXNzIEluc3BlY3RvckNTU0Zyb250ZW5k
RGlzcGF0Y2hlcjsKK2NsYXNzIENTU0Zyb250ZW5kRGlzcGF0Y2hlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBDaGFuZ2VSZWdpb25PdmVyc2V0VGFz
azsKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50IGZpbmFsCiAgICAgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyCi0g
ICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIKKyAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcgog
ICAgICwgcHVibGljIEluc3BlY3RvclN0eWxlU2hlZXQ6Okxpc3RlbmVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JDU1NBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC05MSw4ICs5MSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBDU1NTdHlsZVJ1
bGUqIGFzQ1NTU3R5bGVSdWxlKENTU1J1bGUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC0xNjMsOCArMTYzLDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcmVzZXRQc2V1ZG9TdGF0ZXMoKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvckNTU0Zyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQ1NTQmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6Q1NTRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudDsKIAogICAgIElkVG9JbnNw
ZWN0b3JTdHlsZVNoZWV0IG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZWU3ZDhmYWM0NjVkMWU1Y2VkZTIw
ZTJjMThlZGU1ZDVmODEwNjExZS4uOTlkZmM2NThkZGZiMWU2ZTRkZDNjZGNhOGE5ZTc2MWEzMmFj
NWE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJv
eWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5J
bnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwg
SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0
b3JDb250cm9sbGVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250
ZW5kKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNzJm
Mjk0NjhjZWFkYjRlZDc1ZjNkZDZhZTMzODc4Yjk0M2M0ZWEzMC4uYTE5YmE0YTk5YTM5YjgxNWM5
ZDNiZjFlYWJiYjE0OTVkNGMwNGY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODYsNyArODYsNyBAQCBJbnNwZWN0b3JDb250
cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCog
aW5zcGVjdG9yQwogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2Vu
dHM6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1h
a2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2Ny
aXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKLSAgICAsIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCisgICAgLCBtX2Zyb250ZW5kQ2hhbm5lbChudWxscHRy
KQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAs
IG1fcGFnZShwYWdlKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50KQpA
QCAtMTg0LDcgKzE4NCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6On5JbnNwZWN0b3JDb250cm9s
bGVyKCkKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVk
KCkKIHsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6
SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKICAgICBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5pbnNwZWN0
b3JEZXN0cm95ZWQoKTsKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG51bGxwdHI7CkBAIC0yMzIs
MTkgKzIzMiwxOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXbwogICAgICAgICBtX2luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50LT53aW5kb3dPYmplY3RDbGVhcmVkKCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKK3ZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQogewogICAgIEFT
U0VSVChmcm9udGVuZENoYW5uZWwpOwogICAgIEFTU0VSVChtX2luc3BlY3RvckNsaWVudCk7Ci0g
ICAgQVNTRVJUKCFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgQVNTRVJUKCFtX2lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKTsKKyAgICBBU1NFUlQoIW1fZnJvbnRlbmRDaGFubmVs
KTsKKyAgICBBU1NFUlQoIW1fYmFja2VuZERpc3BhdGNoZXIpOwogCiAgICAgbV9pc0F1dG9tYXRp
Y0luc3BlY3Rpb24gPSBpc0F1dG9tYXRpY0luc3BlY3Rpb247CiAKLSAgICBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKLSAgICBtX2luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENo
YW5uZWwpOworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRDaGFubmVsOworICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250ZW5kQ2hh
bm5lbCk7CiAKLSAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRl
bmRDaGFubmVsLCBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBtX2Fn
ZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tl
bmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVn
aXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKCptX2luc3RydW1lbnRpbmdBZ2VudHMpOwogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVhdGVkKCk7CkBAIC0yNTUsMTYgKzI1
NSwxNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbgogI2VuZGlmCiB9CiAKLXZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b24gcmVhc29uKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQo
RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgaWYgKCFtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCkKKyAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2FnZW50cy53aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOwogCi0g
ICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci0+Y2xlYXJGcm9udGVuZCgpOwotICAgIG1f
aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKLSAgICBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCA9IG51bGxwdHI7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+Y2xlYXJGcm9u
dGVuZCgpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKKyAgICBtX2Zyb250ZW5k
Q2hhbm5lbCA9IG51bGxwdHI7CiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGZhbHNl
OwogCkBAIC0yODYsMTAgKzI4NiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3co
KQogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKG1fZnJvbnRlbmRDaGFubmVsKQogICAgICAg
ICBtX2luc3BlY3RvckNsaWVudC0+YnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKICAgICBlbHNlIHsK
LSAgICAgICAgaWYgKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0g
bV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkgeworICAgICAg
ICBpZiAoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5z
cGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcykpIHsKICAgICAgICAgICAg
IGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICBjb25uZWN0
RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwogICAgICAg
ICB9CkBAIC0yOTgsOSArMjk4LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkK
IAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiB7Ci0gICAgaWYgKCFtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCkKKyAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQogICAgICAg
ICByZXR1cm47Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKIH0KIApAQCAtMzUyLDggKzM1Miw4IEBAIFBhZ2UmIElu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2UoKSBjb25zdAogCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7Ci0gICAgaWYgKG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIpCi0gICAgICAg
IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2UpOworICAgIGlm
IChtX2JhY2tlbmREaXNwYXRjaGVyKQorICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5kaXNw
YXRjaChtZXNzYWdlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpoaWRlSGlnaGxp
Z2h0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CmluZGV4IGIyNjQyMmI3NzUzZTBjNDI2ZjUwOTk1MTU2Y2RmMDNkNTQ5ZjNlMjEuLjNjN2ZiOTll
ZjYyYWQ2NGNmYzJiNmU5OWU4ZWMwMmNmM2VkMzIwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDIsOSArNDIsOSBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNz
IEJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVj
dG9yQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIAogbmFtZXNwYWNl
IFByb3RvY29sIHsKQEAgLTk0LDEyICs5NCwxMiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpOwogCi0gICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7IH0KKyAgICBib29sIGhhc0Zyb250ZW5kKCkgY29uc3QgeyByZXR1
cm4gISFtX2Zyb250ZW5kQ2hhbm5lbDsgfQogICAgIGJvb2wgaGFzTG9jYWxGcm9udGVuZCgpIGNv
bnN0OwogICAgIGJvb2wgaGFzUmVtb3RlRnJvbnRlbmQoKSBjb25zdDsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uKTsKICAgICB2b2lkIHNldFByb2Nlc3NJZChsb25nKTsKIAogI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQpAQCAtMTUyLDEzICsxNTIsMTMgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50KiBtX2RvbURlYnVnZ2VyQWdlbnQ7CiAgICAgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogbV90aW1lbGluZUFnZW50OwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci0g
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOworICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX2Zyb250
ZW5kQ2hhbm5lbDsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNo
OwogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xp
ZW50OwogICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2luc3BlY3RvckZyb250ZW5kQ2xp
ZW50OwotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKKyAg
ICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CiAgICAgVmVjdG9yPEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSwgMj4gbV9pbmplY3RlZFNjcmlwdEluc3RydW1lbnRhdGlv
bkNvb2tpZXM7CiAgICAgYm9vbCBtX2lzVW5kZXJUZXN0OwogICAgIGJvb2wgbV9pc0F1dG9tYXRp
Y0luc3BlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAppbmRleCAxN2ViNjgxODE5MTAzMzg0ZjUwZjFmZTIyNTllMDAyZGM2MzI5YzhjLi4w
YjhmOTQxYjAyMGQyODg5YTY1YjlkOGQxNjcwN2NjZjljYTBmZmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTIyMSwxMCArMjIxLDEw
IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogICAgIEFTU0VSVCgh
bV9zZWFyY2hpbmdGb3JOb2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRl
bmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIg
PSBJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwogCiAgICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JI
aXN0b3J5PigpOwogICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxET01FZGl0b3I+
KG1faGlzdG9yeS5nZXQoKSk7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnIKICAgICAgICAgZm9jdXNOb2RlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24p
Cit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggZjgzOTc5MmJiMjVjOWE1
YjM3ZjcwNTQ3MmZjNDY4YTM3MTYxNjAxOC4uOWZjOTUyNWRiN2NmYzQyNWZhZTlmMTM5YjlmZGU3
YjE3OWFhNmZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmgKQEAgLTkxLDcgKzkxLDcgQEAgc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvIHsKICAgICBj
b25zdCBFdmVudExpc3RlbmVyVmVjdG9yIGV2ZW50TGlzdGVuZXJWZWN0b3I7CiB9OwogCi1jbGFz
cyBJbnNwZWN0b3JET01BZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7Citj
bGFzcyBJbnNwZWN0b3JET01BZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTA5LDggKzEwOSw4IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBTdHJpbmcgdG9FcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1
bWVudHMoKTsKICAgICB2b2lkIHJlc2V0KCk7CkBAIC0yNDYsOCArMjQ2LDggQEAgcHJpdmF0ZToK
ICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0
b3JPdmVybGF5KiBtX292ZXJsYXk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yRE9NRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01Gcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRP
TUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIERPTUxpc3RlbmVy
KiBtX2RvbUxpc3RlbmVyOwogICAgIE5vZGVUb0lkTWFwIG1fZG9jdW1lbnROb2RlVG9JZE1hcDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBCYWNrZW5kTm9kZUlkPiBOb2RlVG9C
YWNrZW5kSWRNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggM2QwYmJhYzU2MWI4ZWIxNDQ3NDcyODJlMDg4
NGQ3MDRhNWJjY2IyNy4uZjc3OGRkOTYyY2IyZGRjMTYwNjMxNzQ2YTk5NWJkZGEwYTliMjc4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmNwcApAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBjbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9p
ZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci5jbGVhcigpOwogCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUmIG5vZGUpCiAgICAgaWYgKGhhc0Jy
ZWFrcG9pbnQoJm5vZGUsIEF0dHJpYnV0ZU1vZGlmaWVkKSkgewogICAgICAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwg
ZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0o
SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1v
dmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKElu
c3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1v
dmUoZXZlbnREYXRhKSk7CiAgICAgfQogfQogCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpCiAg
ICAgaWYgKGhhc0JyZWFrcG9pbnQoJnBhcmVudCwgU3VidHJlZU1vZGlmaWVkKSkgewogICAgICAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KHBhcmVudCwgU3VidHJlZU1vZGlm
aWVkLCB0cnVlLCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpE
T00sIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpE
T00sIFdURjo6bW92ZShldmVudERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTI4MCwxMSArMjgwLDEx
IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUoTm9k
ZSYgbm9kZSkKICAgICBpZiAoaGFzQnJlYWtwb2ludCgmbm9kZSwgTm9kZVJlbW92ZWQpKSB7CiAg
ICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgTm9kZVJlbW92
ZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpE
T00sIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpE
T00sIFdURjo6bW92ZShldmVudERhdGEpKTsKICAgICB9IGVsc2UgaWYgKHBhcmVudE5vZGUgJiYg
aGFzQnJlYWtwb2ludChwYXJlbnROb2RlLCBTdWJ0cmVlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgU3VidHJlZU1vZGlmaWVkLCBm
YWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1By
b2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBX
VEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9n
cmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBX
VEY6Om1vdmUoZXZlbnREYXRhKSk7CiAgICAgfQogfQogCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBl
bGVtZW50KQogICAgIGlmIChoYXNCcmVha3BvaW50KCZlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmll
ZCkpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChlbGVtZW50
LCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1f
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBtX2Rl
YnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0KIApA
QCAtMzY3LDkgKzM2Nyw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VP
bk5hdGl2ZUV2ZW50SWZOZWVkZWQoYm9vbCBpc0RPTUV2ZW50LCBjb25zCiAgICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBl
dmVudERhdGEtPnNldFN0cmluZygiZXZlbnROYW1lIiwgZnVsbEV2ZW50TmFtZSk7CiAgICAgaWYg
KHN5bmNocm9ub3VzKQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNw
ZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFdmVudExpc3RlbmVyLCBX
VEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9n
cmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXZlbnRM
aXN0ZW5lciwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9kZWJ1
Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVu
dERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3Rh
dGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXZl
bnRMaXN0ZW5lciwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OnNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHVybCkKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFVSTCIsIGJyZWFrcG9pbnRVUkwpOwog
ICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwpOwotICAgIG1fZGVidWdnZXJBZ2Vu
dC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFz
b246OlhIUiwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6
WEhSLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6Y2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggNDY2ZjAzZTU3MWNmODY3MDQzZGJjYjViZTg0
YjY1ZmFjN2RhZDM5MS4uYWZlM2NmYjlkMzA5NTVkZmEzMzI5NWVmMDk5ZWJmZmNhMjQ3Y2U2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIE5vZGU7CiAKIHR5cGVkZWYgU3RyaW5n
IEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRPTURlYnVn
Z2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3Rvcjo6RE9N
RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgpAQCAtNzgsOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHBhdXNlT25OYXRp
dmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUs
IGJvb2wgc3luY2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKQEAg
LTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9t
QWdlbnQ7CiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2Vy
QWdlbnQ7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpE
T01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEhh
c2hNYXA8Tm9kZSosIHVpbnQzMl90PiBtX2RvbUJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV94
aHJCcmVha3BvaW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggZmIwODlhMzhmODMyMjZkNTljZTUyODZmYmUw
YTUyODhiOTA1NzkxOC4uOGU1MjNmZmI4Y2Q0ZmRmZmJkNGQ2YTY2ZTMzNGQzZjU4MGIwN2ZiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5jcHAKQEAgLTY2LDEzICs2NiwxMyBAQCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
On5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cyA9
IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RE9NU3RvcmFn
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQog
Ci12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCAzNjFiNjEzY2MxZDc1N2Q0NDY2
ZGYyODlmN2U5NmZhZWQwYTJhYzVkLi5iZWJkMWVmNDEyZjJkYmZiNjEzYTcxM2FiZDQ4YTcyNDQy
ZDM2YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5oCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgRE9NU3RvcmFnZUZyb250
ZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckFycmF5OwotY2xhc3MgSW5zcGVjdG9yRE9N
U3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTEsMTQgKzUxLDE0IEBAIGNsYXNzIFN0b3JhZ2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3Ry
aW5nOwogCi1jbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JET01TdG9yYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTVN0
b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTc4LDggKzc4LDggQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiwgRnJhbWUqJik7CiAKICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNw
YXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hl
cjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXgg
NDRkYWE4NjU3NjdlM2NiNzI0ZGE5NzRhMDI4Y2I5ZGUyNmRmODI1My4uOTEzNGRmZTQ3Yzc5YzZj
NmVmNDQxMzQ0NTIwYjcwNDZlMWQ1ZGMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKLXR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6RXhlY3V0ZVNRTENhbGxiYWNrIEV4ZWN1dGVTUUxDYWxsYmFjazsKK3R5cGVk
ZWYgSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNR
TENhbGxiYWNrIEV4ZWN1dGVTUUxDYWxsYmFjazsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIApAQCAtMjIyLDEzICsyMjIsMTMgQEAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6fkluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25u
ZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCAyZTg2ODk3NWYxNmZjYjE2NzhkYmRi
M2RhY2YyMWUxN2NlZDE4Y2NlLi4zZmRhYTJjYjc0MThlNTIzMGEyZmY5YmFhZDA0ZjZlNmYzZjJh
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmgKQEAgLTQ3LDE0ICs0NywxNCBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwog
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6
Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJs
aWMgSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
RGF0YWJhc2VBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBjbGVhclJlc291cmNlcygpOwogCkBAIC03Miw4ICs3Miw4IEBAIHByaXZhdGU6CiAg
ICAgRGF0YWJhc2UqIGRhdGFiYXNlRm9ySWQoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkKTsKICAg
ICBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKiBmaW5kQnlGaWxlTmFtZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRh
dGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkRhdGFiYXNlRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
Pj4gRGF0YWJhc2VSZXNvdXJjZXNNYXA7CiAgICAgRGF0YWJhc2VSZXNvdXJjZXNNYXAgbV9yZXNv
dXJjZXM7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXggNDZlZGYzMTNjNjg2
M2U2Y2FmMjdhZGIyZGY0YjYyM2Q4YTc2OGNlZS4uNmMzYzllMjNkNjZmMGRkMjIzYzQzYTc5MWJk
YzcxYTViNWNjYjQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtNTQsNyArNTQsNyBAQCBJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKFJlZlB0cjxEYXRhYmFz
ZT4mJiBkYXRhYmFzZQogewogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJp
bmQoSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqIGRhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKEluc3BlY3Rv
cjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqIGRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVy
KQogewogICAgIGF1dG8ganNvbk9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpEYXRhYmFzZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldElkKG1faWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaAppbmRleCAy
OTU2NzJjMTdhOTliMzVlOGI0Nzg4N2JhMmJjZmRjNzgwODgxNTI2Li42ZGI4NWM5YzQ4ZGE2OTkw
MWEzODc1NjNhNTAwYThmNDYwNmQ2NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xh
c3MgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2U+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RGF0YWJhc2U+JiYsIGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAKLSAg
ICB2b2lkIGJpbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
ciopOworICAgIHZvaWQgYmluZChJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVy
Kik7CiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsg
fQogICAgIHZvaWQgc2V0RGF0YWJhc2UoUmVmUHRyPERhdGFiYXNlPiYmIGRhdGFiYXNlKSB7IG1f
ZGF0YWJhc2UgPSBkYXRhYmFzZTsgfQogICAgIFN0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3
YXJkaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5o
CmluZGV4IDZjMjdkMjAwMzU0ZTc5YjdjOGI2ZGMwYjQxNmU3NjEzMzVjY2YxZWMuLjI1MDhiYjE5
MzI3MThkOGE5YTk4Zjg0ZDhiY2ZmMGE0NGVmZWJlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7Cit0eXBlZGVmIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIH0KIAogI2VuZGlmIC8vICFkZWZpbmVkKEluc3Bl
Y3RvckZvcndhcmRpbmdfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDdhNjQ5NWYxMzQ0MTc2ZjQxMTQ4MTExYWE0
YTA2ZWE2Zjg0M2JkOWUuLjk0OWNiZTcwZGUyZjdlNTM3YzhmNTc3NjQ2NWE0NGJhOTIxNjEwNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcApAQCAtNzcsMTEgKzc3LDExIEBAIHVzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkluZGV4ZWREQjo6S2V5UmFuZ2U7CiB1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVk
REI6Ok9iamVjdFN0b3JlOwogdXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpP
YmplY3RTdG9yZUluZGV4OwogCi10eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZSBSZXF1ZXN0Q2FsbGJhY2s7Ci10eXBlZGVmIEluc3BlY3Rv
cjo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0
YWJhc2VOYW1lc0NhbGxiYWNrIFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s7Ci10eXBlZGVm
IEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpS
ZXF1ZXN0RGF0YWJhc2VDYWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjazsKLXR5cGVkZWYg
SW5zcGVjdG9yOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJl
cXVlc3REYXRhQ2FsbGJhY2sgUmVxdWVzdERhdGFDYWxsYmFjazsKLXR5cGVkZWYgSW5zcGVjdG9y
OjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNsZWFyT2JqZWN0
U3RvcmVDYWxsYmFjayBDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s7Cit0eXBlZGVmIEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSBSZXF1ZXN0Q2FsbGJhY2s7Cit0eXBl
ZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0
RGF0YWJhc2VOYW1lc0NhbGxiYWNrIFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s7Cit0eXBl
ZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0
RGF0YWJhc2VDYWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjazsKK3R5cGVkZWYgSW5zcGVj
dG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhQ2FsbGJh
Y2sgUmVxdWVzdERhdGFDYWxsYmFjazsKK3R5cGVkZWYgSW5zcGVjdG9yOjpJbmRleGVkREJCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkNsZWFyT2JqZWN0U3RvcmVDYWxsYmFjayBDbGVhck9iamVj
dFN0b3JlQ2FsbGJhY2s7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAgLTU3NSwx
MiArNTc1LDEyIEBAIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp+SW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7Cisg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IDc3MjBiM2E5YWFlYzk5
ZGIyMDdlOWM5MzQ0OTVjNjlmNTc3ZjEzMjEuLjRkMmMxNjk4MjI4ZDYzM2QzOWRmMjk4OTViNzBi
ZGM5MDFjYTAyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oCkBAIC00NywxMyArNDcsMTMgQEAgY2xhc3MgSW5zcGVjdG9yUGFn
ZUFnZW50OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewor
Y2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgewogcHVibGljOgogICAgIEluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3RvclBhZ2VB
Z2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckluZGV4ZWREQkFnZW50KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJv
bnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsK
QEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JJ
bmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGM1OTAyYmE3
NzdiMDM2MGUxMDFiN2E1ZjAxZWJhMjgyODU1NmMzOWEuLmJlNjQ0OTZlNDYzOGQwMGMzZWMyODkw
ODY1NmFlNjc3YTczODk3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNTYsMTMgKzU2LDEzIEBAIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQogICAgIHJlc2V0KCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lk
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oCmluZGV4IDE2NmU5YTYxOGYxNWMzNTFhMDkyYTJmMGFjZmMzZDQwM2EwYjdj
Y2EuLjVhYmMxMzc1MzI1NmQ4NDQ1MjZlMmIzNTk4ZjRhYzEyYjNjZTU3NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC00
NCwxNCArNDQsMTQgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yTGF5
ZXJUcmVlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c2V0KCk7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgpAQCAt
ODEsOCArODEsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBiaW5kUHNldWRvRWxlbWVudChQc2V1
ZG9FbGVtZW50Kik7CiAgICAgdm9pZCB1bmJpbmRQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQq
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvckxheWVyVHJlZUZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yTGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpM
YXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIAogICAgIEhh
c2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBTdHJpbmc+IG1fZG9jdW1lbnRMYXllclRvSWRNYXA7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIGNvbnN0IFJlbmRlckxheWVyKj4gbV9pZFRvTGF5ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IDkxYzczODAyZjVlNzA0MDMwODRmMDNkNGYzZjkyYWEzOWY0YmU4YjYuLjZjMTZiMmNmZjI1MWZj
NGM4NjFiOThiYzhhODA3ZjljNGQ4MzdkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMzcsMTMgKzMzNywxMyBAQCBJbnNwZWN0
b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLAogewogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclBhZ2VGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24p
Cit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CkBAIC02NTcsNyAr
NjU3LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dQYWludFJlY3RzKEVycm9y
U3RyaW5nJiwgYm9vbCBzaG93KQogICAgIG1fb3ZlcmxheS0+c2V0U2hvd2luZ1BhaW50UmVjdHMo
c2hvdyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25T
dGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpSZXN1bHQqIHN0YXR1cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVj
dXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXI6OlJlc3VsdCogc3RhdHVzKQogewogICAgIGJvb2wgZGlzYWJsZWRCeVNjcmlwdENv
bnRyb2xsZXIgPSBmYWxzZTsKICAgICBib29sIGRpc2FibGVkSW5TZXR0aW5ncyA9IGZhbHNlOwpA
QCAtNjY4LDE0ICs2NjgsMTQgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4
ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyYsIEluc3BlY3RvclBhZ2VCYWMKICAgICB9CiAKICAg
ICBpZiAoIWRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVyKSB7Ci0gICAgICAgICpzdGF0dXMgPSBJ
bnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQ6OkFsbG93ZWQ7Cisg
ICAgICAgICpzdGF0dXMgPSBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OlJlc3VsdDo6QWxsb3dlZDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChkaXNh
YmxlZEluU2V0dGluZ3MpCi0gICAgICAgICpzdGF0dXMgPSBJbnNwZWN0b3JQYWdlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQ6OkRpc2FibGVkOworICAgICAgICAqc3RhdHVzID0gSW5z
cGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQ6OkRpc2FibGVkOwog
ICAgIGVsc2UKLSAgICAgICAgKnN0YXR1cyA9IEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXI6OlJlc3VsdDo6Rm9yYmlkZGVuOworICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9y
OjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQ6OkZvcmJpZGRlbjsKIH0KIAog
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKEVycm9y
U3RyaW5nJiwgYm9vbCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaAppbmRleCBiZmQ1Nzc1MTc3MGNlNzYwYmQ3Y2NkMzg5YWEyYmNkZDU0MDU3
ZTE4Li5jYzZlMTBmYWZjZWZlOGE4M2NlNDViZTUzOWIyMGYyNjQyYTMyNDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC02NCw3ICs2NCw3
IEBAIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3Ry
aW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMDcsNyArMTA3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlz
UmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXREb2N1bWVudENvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgaHRtbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQYWlu
dFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5z
cGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQqKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJyb3JTdHJpbmcm
LCBib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG91Y2hFbXVsYXRpb25FbmFi
bGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEVt
dWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTEz
OSw4ICsxMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JpcHRzRW5hYmxlZChib29sIGlzRW5h
YmxlZCk7CiAKICAgICAvLyBJbnNwZWN0b3IgQ29udHJvbGxlciBBUEkKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBDcm9zcy1hZ2VudHMgQVBJCiAgICAgUGFnZSog
cGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQpAQCAtMTY4LDggKzE2OCw4IEBAIHByaXZhdGU6CiAg
ICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBidWls
ZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSopOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNw
ZWN0b3JDbGllbnQqIG1fY2xpZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclBhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpQYWdlRnJvbnRl
bmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVj
dG9yT3ZlcmxheSogbV9vdmVybGF5OwogICAgIGxvbmcgbV9sYXN0U2NyaXB0SWRlbnRpZmllcjsK
ICAgICBTdHJpbmcgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAppbmRleCA2
ZWNkN2MwZmJlZmI1MmQ2MGJlYjEyZWQxYmMyMjliMDlmMGZmOWRmLi4yZjY4NzUzMjA1OTY5NzQ4
MThmNjJhNjVkMThlOTc2M2QzNDQ2N2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTE2NywxMCArMTY3LDEwIEBAIFdlYkNv
cmU6OlNlc3Npb25TdGF0ZSBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6c2Vzc2lvblN0YXRlKCkgY29u
c3QKICAgICByZXR1cm4gbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5zZXNzaW9uU3RhdGUoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclJlcGxh
eUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvclJlcGxheUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUmVwbGF5QmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UmVwbGF5RnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3I6OlJlcGxheUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JSZXBsYXlB
Z2VudCh0aGlzKTsKICAgICBBU1NFUlQoc2Vzc2lvblN0YXRlKCkgPT0gV2ViQ29yZTo6U2Vzc2lv
blN0YXRlOjpJbmFjdGl2ZSk7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXBs
YXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCoKICAgICAgICAgbV9zZWdtZW50c01hcC5hZGQoKCppdCktPmlkZW50aWZpZXIoKSwgKml0
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVwbGF5QWdlbnQuaAppbmRleCAzNjMyYzRmNDEzZTRjZjJkMGMzNDllMmZjMmUy
MzdiNTFkMGMxMjM1Li4zM2JmMjljMTFhNTEwY2JhOTMzZjg1YWU1YTJlNWYyMjQwNjU2MDRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaApA
QCAtNTgsMTQgKzU4LDE0IEBAIHR5cGVkZWYgaW50IFNlZ21lbnRJZGVudGlmaWVyOwogCiBjbGFz
cyBJbnNwZWN0b3JSZXBsYXlBZ2VudCBmaW5hbAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZQotICAgICwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUmVwbGF5QmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKKyAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OlJlcGxheUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUmVwbGF5
QWdlbnQpOwogcHVibGljOgogICAgIEluc3BlY3RvclJlcGxheUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSZXBs
YXlBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVh
c29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KICAgICB2b2lkIGZyYW1lTmF2aWdh
dGVkKERvY3VtZW50TG9hZGVyKik7CkBAIC0xMTQsOCArMTE0LDggQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IGZpbmRTZWdtZW50KEVycm9yU3RyaW5nJiwgU2Vn
bWVudElkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OlNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUo
KSBjb25zdDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclJlcGxh
eUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yUmVwbGF5QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6UmVwbGF5RnJvbnRlbmREaXNw
YXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpSZXBs
YXlCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBQYWdlJiBtX3Bh
Z2U7CiAKICAgICBIYXNoTWFwPGludCwgUmVmUHRyPFJlcGxheVNlc3Npb24+LCBXVEY6OkludEhh
c2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBtX3Nlc3Np
b25zTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCmluZGV4IDQ5MjJmMzE4OTk2YzU4ODQ2ZTZlZmRiNGQ0MTYxNjA4OGZmYWEy
ZDAuLmY5YmJmODA4ZTBiMjE2MmI2ZWM4MTgzYTYwNzk4YWU0MGI1MTkxNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotdHlwZWRlZiBJ
bnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkxvYWRS
ZXNvdXJjZUNhbGxiYWNrIExvYWRSZXNvdXJjZUNhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6
Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkxvYWRSZXNvdXJjZUNhbGxiYWNrIExv
YWRSZXNvdXJjZUNhbGxiYWNrOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3MywxMyAr
MTczLDEzIEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCBlODQ2NTkxYjFkNGY1Mjkx
MjMwMjdjMGNhYTVjNjc3OTU5N2QzZDE1Li44NGMzYmZkY2U0ZDgxMTRkZTUzNjcwOWRmMjE2MDU0
OTRjMGUwNDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgKQEAgLTczLDE0ICs3MywxNCBAQCBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xp
ZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIGNhbGxiYWNrcy4KICAgICB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7CkBAIC0xMzgs
OCArMTM4LDggQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdl
bnQ7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3JrQmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUmVzb3VyY2VzRGF0YT4g
bV9yZXNvdXJjZXNEYXRhOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9jYWNoZURp
c2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCmluZGV4IDZmODIzNzZjODFjZWZjOTc2NjUxMTNmYmViZDJkOTEwMmU5YTNlZmMuLjZl
NDcxYzQ0YWU1NGYwYTNhNjc2NzIyNDg5NzBlY2RmMDY5ODExZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTM5OSw3ICszOTks
NyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5
bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjbwogCiAgICAgICAgIC8vIFZpc3VhbCBTdHVkaW8g
ZGlzYWdyZWVzIHdpdGggb3RoZXIgY29tcGlsZXJzIGFzIHRvIHdoZXRoZXIgJ2NsYXNzJyBpcyBu
ZWVkZWQgaGVyZS4KICNpZiBDT01QSUxFUihNU1ZDKQotICAgICAgICBlbnVtIGNsYXNzIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXMgc3RhdHVzOworICAgICAgICBl
bnVtIGNsYXNzIFByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzIHN0YXR1czsKICNlbHNl
CiAgICAgICAgIGVudW0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1
cyBzdGF0dXM7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBiOTIyYzc4Y2ZmOTZlYTQzZmQzOTkwYmI2Yjhk
N2YwMjg1NTkyNmI5Li4xYTRkNmU3NzMyYjU2Yjg1NmExNTIwNjE0MDFmNDNlYjhjZTU4ZjVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCkBAIC02MiwxMCArNjIsMTAgQEAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6fkluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGlt
ZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6VGltZWxp
bmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIAog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5l
QWdlbnQodGhpcyk7CiAKQEAgLTczLDE0ICs3MywxNCBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
bwogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygp
OwogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
bnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KG51bGxw
dHIpOwogCi0gICAgaWYgKHJlYXNvbiAhPSBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0ZWRUYXJnZXREZXN0cm95ZWQpIHsKKyAgICBpZiAocmVhc29uICE9IEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKSB7CiAgICAgICAgIGlmICht
X3NjcmlwdERlYnVnU2VydmVyKQogICAgICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci0+cmVj
b21waWxlQWxsSlNGdW5jdGlvbnMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBlYTQ0ODViMzJkMzJjZDYzYTc5
ZTJhZmEzZmY3ODVmZDFhZDljNjM0Li40NWFmNjM1OTlmOGNlN2QzNWY3MTkxMWRhODkxNjI3ZDBj
ZjllYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBlbnVtIGNsYXNzIFRpbWVsaW5lUmVjb3Jk
VHlwZSB7CiAKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgZmluYWwKICAgICA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UKLSAgICAsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclRp
bWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpU
aW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgICwgcHVibGljIEluc3BlY3Rvcjo6
U2NyaXB0RGVidWdMaXN0ZW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMTcsOCAr
MTE3LDggQEAgcHVibGljOgogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclR5cGUsIEluc3BlY3RvckNs
aWVudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydChFcnJv
clN0cmluZyYsIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtMjI5
LDggKzIyOSw4IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2Vu
dDsKICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIqIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGluZUZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VGltZWxpbmVCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIAogICAgIFZlY3RvcjxUaW1lbGlu
ZVJlY29yZEVudHJ5PiBtX3JlY29yZFN0YWNrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCAzYmIxNDAzZWIwYmU2NzVmOTg5
NDJlNDBjODllNTUyOWE0N2IwMTcyLi5kODRiYjA1OWJmZGJjMDUzMjIzN2E0NGMyNjQ4YWE4YWI1
Mzk0ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OldvcmtlckZyb250ZW5kQ2hhbm5lbCA6IHB1YmxpYyBXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5zcGVjdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXb3JrZXJGcm9udGVuZENoYW5uZWwoSW5z
cGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBmcm9udGVuZERpc3BhdGNoZXIsIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHkqIHByb3h5KQorICAgIGV4cGxpY2l0IFdvcmtlckZyb250ZW5kQ2hh
bm5lbChJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlciogZnJvbnRlbmREaXNwYXRj
aGVyLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSkKICAgICAgICAgOiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihmcm9udGVuZERpc3BhdGNoZXIpCiAgICAgICAgICwgbV9wcm94eShwcm94eSkK
ICAgICAgICAgLCBtX2lkKHNfbmV4dElkKyspCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kaXNwYXRjaE1lc3NhZ2VGcm9tV29ya2VyKG1f
aWQsIG1lc3NhZ2VPYmplY3QpOwogICAgIH0KIAotICAgIEluc3BlY3RvcldvcmtlckZyb250ZW5k
RGlzcGF0Y2hlciogbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgSW5zcGVjdG9yOjpXb3JrZXJG
cm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFdvcmtlckdsb2Jh
bFNjb3BlUHJveHkqIG1fcHJveHk7CiAgICAgaW50IG1faWQ7CiAgICAgYm9vbCBtX2Nvbm5lY3Rl
ZDsKQEAgLTExNCwxMyArMTE0LDEzIEBAIEluc3BlY3RvcldvcmtlckFnZW50Ojp+SW5zcGVjdG9y
V29ya2VyQWdlbnQoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yV29y
a2VyQWdlbnQobnVsbHB0cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9m
cm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckZyb250
ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gSW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwor
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rv
cldvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fc2hv
dWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0ID0gZmFsc2U7CiAgICAgRXJyb3JTdHJpbmcg
dW51c2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuaAppbmRleCA2ODY5ZDVhNjgwNGY3Mjk4MGIwNjcyYjA5YjZjYTNjYjg4MDJmYWZiLi40ZTcz
Y2ZiOTE3MGYyMzQwYmIwNDg5YzZkOTFhZjNjOWYzOThhNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtMzgsNyArMzgsNyBAQAog
CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKLWNsYXNzIElu
c3BlY3RvcldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIFdvcmtlckZyb250ZW5kRGlz
cGF0Y2hlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMTQgKzQ4LDE0IEBAIGNs
YXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5n
OwogCi1jbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvcldvcmtlckJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgSW5zcGVjdG9yV29ya2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAg
IHZpcnR1YWwgfkluc3BlY3RvcldvcmtlckFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24KICAgICBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCgpIGNvbnN0OwpA
QCAtNzYsOCArNzYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlV29ya2VyRnJvbnRlbmRD
aGFubmVsKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBTdHJpbmcmIHVybCk7CiAgICAg
dm9pZCBkZXN0cm95V29ya2VyRnJvbnRlbmRDaGFubmVscygpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JXb3JrZXJCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OworICAgIFJlZlB0cjxJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9zaG91bGRQYXVz
ZURlZGljYXRlZFdvcmtlck9uU3RhcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmNwcAppbmRleCA3YTdiNzYyNDI1OWZiY2I2MjY5ZjEyNWU5NmFlNWUy
YTZkNmJlNjU0Li5lMTIzYzBiMzU5ZDY3ODJkYjI0NzAyZGYwN2Y4MjgyOGUxYzcxZTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC01OSwx
MyArNTksMTMgQEAgUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChJbmplY3RlZFNj
cmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwKIHsKIH0KIAotdm9pZCBQYWdlUnVu
dGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
CiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
clJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRp
bWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0K
IAotdm9pZCBQYWdlUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
IHJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50LmgKaW5kZXggZjgyY2ZjMDEwYzcyNjkyM2NkMzkzYzk2YjgwMzNmZjk3Mjg5
Mzg4Yi4uZTdiMmMyNGQ4ZDBlNTQ0OWNlNzJmMTE5NGM4ZDIzNGI3MzBmYWFmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC01Niw4ICs1Niw4IEBA
IHB1YmxpYzoKICAgICBQYWdlUnVudGltZUFnZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiwgUGFnZSosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgflBhZ2VS
dW50aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIApAQCAtNzQsOCArNzQsOCBA
QCBwcml2YXRlOgogCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvclBh
Z2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlJ1bnRp
bWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
ICAgICBib29sIG1fbWFpbldvcmxkQ29udGV4dENyZWF0ZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggNzc3Y2Y3MjMzYWQ3MmU0MjZmMThiNDgwZmZiZTdkMjk4ZDE0ZWNlYy4uZjFmZTQxMDA1YWRm
ZWE0YmMwMWUwYWQ1Yjc3ZjU4ZjBiOTZjMjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTA4LDE4ICsx
MDgsMTggQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6On5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkKIHsKICAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMtPnJlc2V0KCk7Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVk
KTsKIH0KIAogdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQo
KQogewogICAgIEFTU0VSVCghbV9mcm9udGVuZENoYW5uZWwpOwogICAgIG1fZnJvbnRlbmRDaGFu
bmVsID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlSW5zcGVjdG9yUHJveHk+KG1fd29ya2VyR2xvYmFs
U2NvcGUpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKKyAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kQ2hhbm5lbC5nZXQo
KSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRD
aGFubmVsLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0KIAotdm9pZCBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbiByZWFzb24pCit2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAg
IGlmICghbV9mcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGY4
Nzc5NDM3ODM5M2EzMWQzMjBiYTQ0ZTIyODliMzM1NjE0NWYyZmQuLjk2NzQwODNjZGVjYWRjOTFl
NTAzMDIyMjdmZGM0ZDFhOTE4YmVhMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDEsMTAgKzQxLDYgQEAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotfQotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKQEAg
LTYxLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIoKTsKIAogICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKCk7Ci0gICAgdm9pZCBkaXNjb25u
ZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKTsKKyAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pOwogICAg
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgcmVzdW1lKCk7CiAKQEAgLTgxLDEwICs3NywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
bnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CiAgICAgV29ya2VyUnVudGltZUFnZW50KiBtX3J1bnRpbWVBZ2VudDsKLSAgICBJbnNwZWN0b3I6
Okluc3BlY3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbD4gbV9mcm9udGVuZENoYW5uZWw7CisgICAgSW5zcGVjdG9y
OjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbD4gbV9mcm9udGVuZENoYW5uZWw7CiAgICAgUmVmPFdURjo6U3RvcHdh
dGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBWZWN0
b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5z
dHJ1bWVudGF0aW9uQ29va2llczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNzY5MDQ5ZTMyMmY1YTY1OTk0M2FhNjcwYjAy
YmQ5MjUzMmQzYjc4Yy4uOWVhMjg1YzZlZGUyZDNjZjI1YTViNjI4OGVhODM5ZmNiM2U3NmJiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAK
QEAgLTUyLDEyICs1MiwxMiBAQCBXb3JrZXJSdW50aW1lQWdlbnQ6OldvcmtlclJ1bnRpbWVBZ2Vu
dChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYQogewogfQogCi12b2lk
IFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
cjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwogfQogCi12b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIFdvcmtlclJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uIHJlYXNvbikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRl
eCA4MTRjNjZkNmJjOWQ0NjE4MzE5MTRhOWJmYjQxZTI4ODJlMWMwZDM3Li44NzhiZGQyNDhiMDhi
ZTFjOGFmNGVmNDU3MjczMzRlNzA4YTkwYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKICAgICBX
b3JrZXJSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBXb3Jr
ZXJHbG9iYWxTY29wZSopOwogICAgIHZpcnR1YWwgfldvcmtlclJ1bnRpbWVBZ2VudCgpIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHJ1
bihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAgICBXb3JrZXJHbG9iYWxTY29wZSogbV93b3Jr
ZXJHbG9iYWxTY29wZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJv
b2wgbV9wYXVzZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXgg
ZGNjMzRkZGMzZjE1OWU2MjhkNjU3OWZhNDRmM2YwYTYxYzlhZjQzYS4uMTRlYzYyZWJiNWY2ZGNk
MmNmZjIwZTU0ZGJhMjdmZDYxYzFkNjFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaApAQCAtNTk0LDcgKzU5NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNw
ZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xs
ZXIqKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSBv
dmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJv
bnQoKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
RGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcApp
bmRleCA1Y2Y4NDlhMmZhNTM3NTA2YTkxMWU5ZGJhNzM0ODZiMDZmZTI2YTBlLi42NzZjNGNhOTI0
ZDcxMjUyNGFjMjQ4ZWYyYzE1NTE5NzM3MTQ0MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VE
ZWJ1Z2dhYmxlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIFBhZ2VEZWJ1Z2dhYmxlOjpoYXNM
b2NhbERlYnVnZ2VyKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5oYXNMb2NhbEZyb250ZW5kKCk7CiB9CiAKLXZvaWQgUGFnZURlYnVnZ2FibGU6OmNvbm5l
Y3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwsIGJvb2wgaXNB
dXRvbWF0aWNJbnNwZWN0aW9uKQordm9pZCBQYWdlRGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24p
CiB7CiAgICAgaWYgKCFtX3BhZ2Uuc2V0dGluZ3MoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkp
IHsKICAgICAgICAgbV9mb3JjZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gdHJ1ZTsKQEAgLTc4
LDEzICs3OCwxMyBAQCB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sCiAKICAgICBJbnNwZWN0b3JDb250
cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIo
KTsKICAgICBpbnNwZWN0b3JDb250cm9sbGVyLnNldEhhc1JlbW90ZUZyb250ZW5kKHRydWUpOwot
ICAgIGluc3BlY3RvckNvbnRyb2xsZXIuY29ubmVjdEZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKj4oY2hhbm5lbCksIGlzQXV0b21hdGlj
SW5zcGVjdGlvbik7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQocmVp
bnRlcnByZXRfY2FzdDxJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCo+KGNoYW5uZWwpLCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24pOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0
KCkKIHsKICAgICBJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyID0gbV9w
YWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLmRpc2Nv
bm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95
ZWQpOworICAgIGluc3BlY3RvckNvbnRyb2xsZXIuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
cjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKICAgICBpbnNwZWN0b3JD
b250cm9sbGVyLnNldEhhc1JlbW90ZUZyb250ZW5kKGZhbHNlKTsKIAogICAgIGlmIChtX2ZvcmNl
ZERldmVsb3BlckV4dHJhc0VuYWJsZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZURlYnVnZ2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUu
aAppbmRleCA0MWVmYmM3MTdjZmMxYmU2ZWMyZDcxZTkxNTg4Y2E0NjI2MmNhMjAxLi43ZjdhYTli
ZmVmMGNhZjMwZWM0ODNjYTAzZWRjNThiMTlmMGU2ZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
RGVidWdnYWJsZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyB1cmwoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dl
cigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODY0NmUwNmYzZWE3OGE3NjRmNmU5MDJhODcy
ZDc3NWIzNzM4YTdhZC4uMTBiYTNjZGE2NjJlMzBlN2UxZDE3NWRkYjliOTdjODRiOTljMjliZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTU1OCw3ICsxNTU4LDcgQEAg
dm9pZCBJbnRlcm5hbHM6OmNsb3NlRHVtbXlJbnNwZWN0b3JGcm9udGVuZCgpCiAgICAgQVNTRVJU
KHBhZ2UpOwogICAgIEFTU0VSVChtX2Zyb250ZW5kV2luZG93KTsKIAotICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVj
dG9yRGVzdHJveWVkKTsKIAogICAgIG1fZnJvbnRlbmRDbGllbnQgPSBudWxscHRyOwogICAgIG1f
ZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggNDM3YzEwOGM5MzViZTVmMjEzYjVkY2VkMzVk
NmM5MzI1MTYzYTBlMC4uNzg0NWI2MWZhOGRjZmFmOWY2N2ZhYTBkOTQyNWQwZjliMmI1ZDYxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpkaXNjb25uZWN0
RnJvbUluc3BlY3RvcigpCiAgICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKICAgICAgICAgcmV0
dXJuOwogICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtdIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29u
bmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVj
dG9yRGVzdHJveWVkKTsKKyAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogICAgIH0sIFdvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyVGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBv
cnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2Vu
ZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCmluZGV4IGU4MjdiOWVmYjJjOGM3ODk4NTQ0MjU0
NDEyYTQ1OTEzMTE0MGZhMTguLmE3YmFlNWNiOGRlOWRmMzQ0NDA0Njc5MzE5ZGU5ODA4NmE5NjA3
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0
R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0y
MjksNyArMjI5LDcgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/d2luZG93
T2JqZWN0Q2xlYXJlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhY
WiwgP3dpbmRvd09iamVjdENsZWFyZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJD
b3JlQEBVRUFBWFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50QFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAQUJWMjNAMEBaLCA/cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50QFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAQUVCVjIzQDBAWikKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250
cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaLCA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUVBQVhfTkBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/
ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFc0SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbkBJbnNwZWN0b3JAQEBaLCA/ZGlzY29ubmVjdEZyb250ZW5k
QEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVBQVhXNEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb25ASW5zcGVjdG9yQEBAWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Rpc2Nvbm5l
Y3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhXNEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbkBJbnNwZWN0b3JAQEBaLCA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3Bl
Y3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVBQVhXNEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bkBJbnNwZWN0b3JAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXNBY3RpdmVJbnNl
cnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaLCA/aXNBY3RpdmVJbnNlcnRpb25Q
b2ludEBXZWJDb3JlQEBZQV9OUEVCVk5vZGVAMUBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3Ry
aW5nQFdURkBAQFosID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBR
RUJBX05BRUJWU3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9qc0Fy
cmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xv
YmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBA
WiwgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEVBVkV4ZWNTdGF0ZUAzQFBF
QVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29y
ZUBAQFdURkBAQFopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KaW5kZXggOThkY2FlZDMxOTBkMTg5ZDcwMWNl
MmY0MjgyMjI5YjdkMzBkZDhkZS4uZWM2NDlkOTk0ODg0ZTRjMzAwNzdkNTFlODUyOTM4Y2M0NzI5
OTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAot
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFu
bmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JD
b250cm9sbGVyKikKIHsKICAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3Rv
ciwgdGhpcyBzaG91bGQgbm90IGJlIHJlYWNoZWQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCmluZGV4IGU2ZWRlNDlmYzkyMGE5Y2E0ZjZhOWRkYjE2OTIxZTI3MTRlOTRmZGMu
LmVlMjI4ZjIxYmIzMTA4NWJhZDBkNDJlYzI5OGUzZDAxMWYyNWUzYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0
cm95ZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwq
IG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KaW5kZXggNzg5M2Y4YjIzYTg5NGY3MjVmOTE5NzQ5MmEwN2ZkZmI3ZTNi
NDQwZi4uYWZiNzNjOTYyMDkxODk4Y2NhYTQ1Y2ZiNWI1ZjhmNDE0NzI3MWVmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0
b3JEZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi1JbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCitJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKIHsKICAgICBSZXRhaW5QdHI8V2ViSW5z
cGVjdG9yV2luZG93Q29udHJvbGxlcj4gd2luZG93Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJJ
bnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6
bV93ZWJWaWV3IGlzVW5kZXJUZXN0Omluc3BlY3RvckNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCld
KTsKICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107
CkBAIC03MzAsNyArNzMwLDcgQEAgLSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClu
b3RpZnlJbnNwZWN0b3JDb250cm9sbGVyCiAKICAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29udHJv
bGxlcikgewogICAgICAgICBpZiAoUGFnZSogaW5zcGVjdGVkUGFnZSA9IFtfaW5zcGVjdGVkV2Vi
Vmlldy5nZXQoKSBwYWdlXSkKLSAgICAgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICAgICAgaW5zcGVjdGVkUGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAgICAgfQogCiAgICAgW193ZWJW
aWV3IGNsb3NlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlciBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgppbmRleCA3YTI3Yjc1OGMyMDdmZGZmODdk
MDFmOGEyYmIzMGU0MWUzY2JjYWU2Li44ZWNlYmE0MzdkYTQ0NTFhOTFlYzIyOTk2YjM3OWMwNGYz
NDJlOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCkBAIC0xNTU2LDcgKzE1NTYsNyBAQCBfX1ox
NENhbGxVSURlbGVnYXRlUDdXZWJWaWV3UDEzb2JqY19zZWxlY3RvclAxMW9iamNfb2JqZWN0UzNf
UzNfCiAtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHNldFF1b3RhOl0KIF9fWk4yNFdlYkRhdGFi
YXNlTWFuYWdlckNsaWVudDI1ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZUVQTjdXZWJDb3JlMTRT
ZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0UKIF9fWk4yNldlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50MTlsb2NhbGl6ZWRTdHJpbmdzVVJMRXYKLV9fWk4yNldlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50MTRmcm9udGVuZExvYWRlZEV2CitfX1pOMjZXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDE0RnJvbnRlbmRMb2FkZWRFdgogLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHNob3dX
aW5kb3c6XQogX19aTjE4V2ViSW5zcGVjdG9yQ2xpZW50MjNpbnNwZWN0b3JTdGFydHNBdHRhY2hl
ZEV2CiBfX1pMMTVwb3B1bGF0ZVNldHRpbmdSS04zV1RGNlN0cmluZ0VQUzBfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAppbmRleCA4MjI0ZDRlZThiNTVhODM1ZWI5NDQ0NmFlOTg1MjNiMDI3YTFlYWYzLi4yZDE1YTJh
NWI0ZDNhZWIwMmFjMDZlNTdjNjZlYzcwMDk1ZGZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgp
CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQogewogICAgIHJlZ2lzdGVyV2luZG93Q2xhc3Mo
KTsKIApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiAgICAgY2xv
c2VXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpOwogCiAgICAgaWYgKG5vdGlmeUluc3BlY3Rv
ckNvbnRyb2xsZXIpIHsKLSAgICAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBtX2luc3BlY3Rl
ZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT51cGRhdGVIaWdobGlnaHQoKTsKICAgICB9CiAgICAgOjpE
ZXN0cm95V2luZG93KG1fZnJvbnRlbmRId25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDdmYmVhMGE4MDc0
MWQ1Y2I5NzI4ZTgxN2NjNDk3YTJlOTJiYzlhNy4uMGIzYjc2MWQ1OTU5ZTRhNDhjYWI1ZjIzNTEx
ZDkyMmY4ZWM5OTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAg
IC8vIEluc3BlY3RvckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQo
KTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAgIHZp
cnR1YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5z
cGVjdG9yRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDVhN2YxNzAwYmQxOWFiY2Fh
N2Y3ODU2ZGEyYTAzZWI2Y2UyNmYxYjAuLjJjNzEyZDQwY2JiMzZmOTczZmM0ODk5ZGY1ZWU0MDdm
Y2ZiMDc5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKLVdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciog
Y29udHJvbGxlcikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVy
KQogewogICAgIG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2UoY29udHJv
bGxlci0+aXNVbmRlclRlc3QoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDlh
NDQwMGJlNWFiYTZiOTk1MTVmNmQ4OTFmNmU5YTgxNTY3OGE0MTUuLjQ2ZTg4N2M3ODNkYjFiNGM0
YTA0NWIyMWY0N2VlNWU4MmYyZGIxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAt
NTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudAog
ICAgIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDQ1NzBm
OTEzNDdjZmUwNTgxMzllMDc1OGM2MjBhOTM4NTA4NjA5OTUuLmJmMDQ3NjA1ZjEzMjUyZTNlZjkw
YjBhOTZmMjllMWIzYzI0NTcyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICAgICBtX3JlbW90ZUZyb250
ZW5kQ29ubmVjdGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9wYWdlLT5jb3JlUGFnZSgpKQotICAg
ICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JE
ZXN0cm95ZWQpOworICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L21hYy9XZWJLaXQyLm9yZGVyIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKaW5k
ZXggYWU2MjVmN2MxNmM2YmFmNTQwNzQ5YWNlYjQ2NWYyNzIzNzVmOWM1Yi4uZDRiYzg5MmE1ZmQz
ZTlkY2E4NWRjYjNiOWRjZTA1YWQ1NWM3YzFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
bWFjL1dlYktpdDIub3JkZXIKKysrIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIK
QEAgLTE2NzMsNyArMTY3Myw3IEBAIF9fWk4zV1RGOUhhc2hUYWJsZUlOU182U3RyaW5nRU5TXzEy
S2V5VmFsdWVQYWlySVMxX2RFRU5TXzI0S2V5VmFsdWVQYWlyS2V5RXh0cmFjCiBfX1pOM1dURjlI
YXNoVGFibGVJTlNfNlN0cmluZ0VOU18xMktleVZhbHVlUGFpcklTMV9kRUVOU18yNEtleVZhbHVl
UGFpcktleUV4dHJhY3RvcklTM19FRU5TXzEwU3RyaW5nSGFzaEVOU18xOEhhc2hNYXBWYWx1ZVRy
YWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOUzhfSWRFRUVFUzlfRWFTRVJLU0NfCiBfX1pONldl
YktpdDdXZWJQYWdlMjhwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlRVJLTlNfMTlXZWJQcmVm
ZXJlbmNlc1N0b3JlRQogX19aTjZXZWJLaXQ3V2ViUGFnZTlpbnNwZWN0b3JFdgotX19aTjZXZWJL
aXQxMldlYkluc3BlY3RvcjZjcmVhdGVFUE5TXzdXZWJQYWdlRVBON1dlYkNvcmUyNEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbEUKK19fWk42V2ViS2l0MTJXZWJJbnNwZWN0b3I2Y3JlYXRlRVBOU183
V2ViUGFnZUVQTjdXZWJDb3JlMTVGcm9udGVuZENoYW5uZWxFCiBfX1pONldlYktpdDEyV2ViSW5z
cGVjdG9yMzVzZXRJbnNwZWN0b3JVc2VzV2ViS2l0VXNlckludGVyZmFjZUViCiBfX1pONldlYktp
dDE1Y2xhc3NGcm9tUERGS2l0RVA4TlNTdHJpbmcKIF9fWk42V2ViS2l0MjlUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTE3dXBkYXRlUHJlZmVyZW5jZXNFUktOU18xOVdlYlByZWZlcmVuY2Vz
U3RvcmVFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246273</attachid>
            <date>2015-02-09 08:07:07 -0800</date>
            <delta_ts>2015-02-09 14:26:56 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-141372-20150209080708.patch</filename>
            <type>text/plain</type>
            <size>343810</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5ODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NDI2YTk2ZDQ4ZmRkMWIwMTc4Yjg1YWE1Y2ZmODhkMDNlYjFkMjNkLi43NjkzYWQ2MmJkNTczMTcw
M2NmMzU4ZDExOWI5ZjA4MDQyZTk2NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTYgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ2hh
bmdlTG9nLTIwMTQtMDItMjA6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29s
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeTo6
QWdlbnRSZWdpc3RyeSk6CisgICAgICAgIChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6OmFwcGVu
ZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6OmFwcGVuZEV4dHJhQWdlbnQp
OgorICAgICAgICAoSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6
OmRpc2NhcmRBZ2VudHMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5OjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kRXh0cmFBZ2VudCk6IERlbGV0
ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnk6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50UmVnaXN0cnk6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFn
ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0
cnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpD
YWxsYmFja0Jhc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2Fs
bGJhY2tCYXNlOjppc0FjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRGYWlsdXJlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZElmQWN0aXZlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyOjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4pOgorICAgICAg
ICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAoSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IpOgorICAgICAgICAo
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcik6CisgICAgICAgIChJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OmdldEJvb2xlYW4pOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OmdldEFycmF5KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OmdldFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKTogRGVsZXRlZC4KKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKTog
RGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OnNlbmRSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKTogRGVsZXRlZC4KKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIpOiBEZWxl
dGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RG91YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKTogRGVsZXRlZC4KKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdCk6IERlbGV0ZWQu
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJh
eSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpnZXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmg6CisgICAgICAgIChJbnNwZWN0b3I6OlN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6CisgICAgICAgIChJ
bnNwZWN0b3I6OlN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjp+U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNo
ZXIpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlcjo6fkluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
Lmg6CisgICAgICAgIChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6fkZyb250ZW5kQ2hhbm5l
bCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDo6fkluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpnbG9iYWxPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29u
bmVjdEZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEV4dHJhQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6aGFuZGxlQ29uc29sZUFzc2VydCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNT
UCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9n
cmFtKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJC
cmVha0RldGFpbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
IChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hdWdtZW50YWJsZS9B
dWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoQ3BwR2Vu
ZXJhdG9yLmNwcF90eXBlX2Zvcl9mb3JtYWxfb3V0X3BhcmFtZXRlcik6CisgICAgICAgIChDcHBH
ZW5lcmF0b3IuY3BwX3R5cGVfZm9yX3N0YWNrX291dF9wYXJhbWV0ZXIpOgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisgICAg
ICAgIChBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcik6CisgICAgICAgIChBbHRlcm5hdGUpOgor
ICAgICAgICAodm9pZCk6CisgICAgICAgIChBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcik6IERlbGV0ZWQuCisgICAgICAgIChBbHRlcm5hdGVJbnNwZWN0b3IpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2FsdGVybmF0
ZV9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoQ3BwQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNo
ZXJfaGVhZGVyLnB5OgorICAgICAgICAoQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0
b3IuX2dlbmVyYXRlX2FsdGVybmF0ZV9oYW5kbGVyX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9k
b21haW5zLkFsdGVybmF0ZSk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdl
bmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6Cisg
ICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0
ZXJuYXRlX2hhbmRsZXJfZm9yd2FyZF9kZWNsYXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRl
SW5zcGVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAg
ICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVyYXRl
X291dHB1dCk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9oYW5kbGVyX2NsYXNzX2Rlc3RydWN0b3JfZm9yX2RvbWFpbik6Cisg
ICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5l
cmF0ZV9sYXJnZV9kaXNwYXRjaGVyX3N3aXRjaF9pbXBsZW1lbnRhdGlvbl9mb3JfZG9tYWluKToK
KyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dl
bmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9yX2NvbW1hbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBGcm9udGVuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9m
b3JfZXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAgICAoT2JqQ0JhY2tlbmRE
aXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVt
ZW50YXRpb24ucHk6CisgICAgICAgIChPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5OgorICAgICAgICAoT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJh
dG9yLl9nZW5lcmF0ZV9ldmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQt
c2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0
ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21h
aW4uanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNl
ZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmlu
Zy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpjb25uZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpk
aXNjb25uZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
OgorCiAyMDE1LTAyLTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgYSBmZXcgZHVwbGljYXRlIHByb3BhZ2F0aW9uIHN0ZXBzIGZyb20g
dGhlIERGRydzIFByZWRpY3Rpb25Qcm9wYWdhdGlvbiBwaGFzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc5YThl
Nzc2Yjk1YTMzZDZlNmJlYTcyODg1MzI1YjFjNDcyNDFiMjUuLmM3ZDdhMzU4OWYwMjRlYmJmYmIx
NjNjZTBiMWE2NDRhNDEwNzk2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTEgQEAKKzIwMTUt
MDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhl
cyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpk
aWRJbnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVFdmVu
dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVy
VHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxh
eUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVw
bGF5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OldvcmtlckZyb250ZW5kQ2hhbm5lbDo6V29ya2VyRnJv
bnRlbmRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
V29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRp
bWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6fldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAgICogcGFnZS9Q
YWdlRGVidWdnYWJsZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpkaXNjb25uZWN0RnJvbUluc3BlY3Rvcik6CisKIDIw
MTUtMDItMDYgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24gPD0gcmVzb2x2
ZWRGaW5hbFBvc2l0aW9uIGluIFdlYkNvcmU6OkdyaWRTcGFuOjpHcmlkU3BhbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBiZGY4YWZmYTA4NTYzNzhmZWE0ZWU5MTU0NDYwMGUzZjY4ZWRkZGFlLi5jZDhkYzcyNzExNWM2
ODUzNTEyNDhmNTM2MGI0OGUyOGU0NzdkYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDE1LTAyLTA5ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBJbnNwZWN0b3IgcHJl
Zml4ZXMgZnJvbSBjbGFzcyBuYW1lcyBpbiBJbnNwZWN0b3IgbmFtZXNwYWNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEzNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dl
YktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxNS0wMi0wNSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSA2NC1i
aXQgYnVpbGQgZml4IGFmdGVyIHIxNzk3MDIgYW5kIHIxNzk3MDkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRl
eCAzZWY1ZjE2OGZiMDE4ODI2YWRkZTM0MTU4YmQxYjEyNjc3NWQwYzliLi45M2Q4NjViOTYxZjU5
NzhkYzY4ZWQwM2JkNzhlZTk4MDgzZjgyNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3Bl
Y3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorCiAyMDE1LTAyLTAzICBFbnJpY2EgQ2FzdWNj
aSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIHN1cHBvcnQgZm9yIGRl
bGV0ZUZyb21JbnB1dFdpdGhGbGFncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiOGEyNjZjZDVmYmYy
MDJmZGE5YTBjZjRjMTgyNjI2ZWQzMjExNGQ2Li5jYmM1M2RkZjEyNjc1Y2JlOGY5YTAyMmVhMDJk
ZmJiYmNhMTkzZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDIt
MDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBm
cm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQp
OgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGRlc3Ryb3lJbnNwZWN0
b3JWaWV3Ol0pOgorICAgICAgICAqIFdlYktpdC5vcmRlcjoKKwogMjAxNS0wMi0wNSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPiBhbmQgWGFiaWVyIFJvZHJpZ3Vl
eiBDYWx2YXIgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBJ
bXBsZW1lbnQgYSBiYXJlYm9uZSBSZWFkYWJsZVN0cmVhbSBpbnRlcmZhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwppbmRleCA4N2I1MzlmZWIxOTIyN2FkZGFhZTY4MzMwN2ZkOWRiN2UwOWExM2E5Li42NWE4MDQy
MjVkZjE5NDhiYTJmZjM5N2ZhZDY0ZGVmNzdmMzU2YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yVmlldyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2Vi
S2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOgorCiAyMDE1LTAyLTA3ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFZlY3Rvcjo6cmVt
b3ZlRmlyc3RNYXRjaGluZygpIC8gcmVtb3ZlQWxsTWF0Y2hpbmcoKSBtZXRob2RzIHRha2luZyBs
YW1iZGEgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGVjMWRhZWU3YjVmODU1NjdkYzRmZjcyMTAz
NzQ4N2JhY2FjNjhjOC4uMDZiYTA3N2RjMDFlZmMzOTgwNzI2NjJlNjAxYzk1OGRjOGRmODcwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTAyLTA5ICBCcmlhbiBKLiBCdXJnICA8
YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUg
c29tZSB1bm5lY2Vzc2FyeSBJbnNwZWN0b3IgcHJlZml4ZXMgZnJvbSBjbGFzcyBuYW1lcyBpbiBJ
bnNwZWN0b3IgbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDEzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25u
ZWN0ZWQpOgorCiAyMDE1LTAyLTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBNZWFzdXJlIGNhY2hlIHNpemUgbW9yZSBhY2N1cmF0ZWx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IDUw
ZTExNDg3NGQxNjc5NGFhMDU2N2FjYjI1MTEwYzYxY2JmMDRiYTguLjVmNzY5MGU2NzdiNGVlNWJm
NmIxNTA3MmNiZTRkZGE3NDg0ODVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGlj
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlOjpMZXZlbCBtZXNz
YWdlTGV2ZWxWYWx1ZShNZXMKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAKLXZvaWQgQ29uc29sZU1lc3NhZ2U6
OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29s
ZUZyb250ZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCisgICAgdm9pZCBDb25z
b2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25z
b2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2Ny
aXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpCiB7CiAgICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNvbGVNZXNzYWdlPiBqc29uT2JqID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRT
b3VyY2UobWVzc2FnZVNvdXJjZVZhbHVlKG1fc291cmNlKSkKQEAgLTIzMCw3ICsyMzAsNyBAQCB2
b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKEluc3BlY3RvckNvbnNvbGVGcm9udGVu
ZERpc3BhdGNoZXIqIGNvbnNvbGVGcgogICAgIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXItPm1l
c3NhZ2VBZGRlZChXVEY6Om1vdmUoanNvbk9iaikpOwogfQogCi12b2lkIENvbnNvbGVNZXNzYWdl
Ojp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNw
YXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKQordm9pZCBDb25zb2xlTWVzc2FnZTo6
dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yOjpDb25zb2xlRnJvbnRlbmREaXNw
YXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKQogewogICAgIGNvbnNvbGVGcm9udGVu
ZERpc3BhdGNoZXItPm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQobV9yZXBlYXRDb3VudCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgK
aW5kZXggZWYxYzc5ZDE1YzdjZTg3M2Y3MGFlYTE1ZDEyZDk5MzdjZWRiZjdmYS4uODQ3NmYxYzZk
OGJkNDdlOWQxNDVmYzFhMzMxNzZiYTllN2Q1YTliMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJs
aWM6CiAgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50
cz4sIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDAp
OwogICAgIH5Db25zb2xlTWVzc2FnZSgpOwogCi0gICAgdm9pZCBhZGRUb0Zyb250ZW5kKEluc3Bl
Y3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBi
b29sIGdlbmVyYXRlUHJldmlldyk7Ci0gICAgdm9pZCB1cGRhdGVSZXBlYXRDb3VudEluQ29uc29s
ZShJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCBhZGRUb0Zy
b250ZW5kKEluc3BlY3Rvcjo6Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciosIEluamVjdGVkU2Ny
aXB0TWFuYWdlciosIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICB2b2lkIHVwZGF0ZVJlcGVh
dENvdW50SW5Db25zb2xlKEluc3BlY3Rvcjo6Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciopOwog
CiAgICAgTWVzc2FnZVNvdXJjZSBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dEJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRC
YXNlLmgKaW5kZXggNjM5ZDA0OGIyN2FlZjk3ZWQzZmMyZDJlMDg4ZjVlYjYzMzA5YTVhNi4uNGFh
YjRlODYyNWMzOTkzNDhlNmYzOWQ3Y2U2ZjRhM2YxYzkwMDVhYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCkBAIC0zMSwx
MCArMzEsMTAgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3Mg
QmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiAKLWVudW0gY2xhc3Mg
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiB7CitlbnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFzb24g
ewogICAgIEluc3BlY3RlZFRhcmdldERlc3Ryb3llZCwKICAgICBJbnNwZWN0b3JEZXN0cm95ZWQK
IH07CkBAIC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkb21haW5OYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgeyB9CiAKIHBy
b3RlY3RlZDoKQEAgLTU3LDcgKzU3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgU3RyaW5nIG1fbmFt
ZTsKIH07Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCiAjZW5kaWYgLy8gIWRl
ZmluZWQoSW5zcGVjdG9yQWdlbnRCYXNlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcAppbmRleCA0MDEw
OGViNDliNGU5YmRkNDgzM2Y1YThmYWQzNTM3ZWJiZGJhYjRjLi5iY2MwOTg4MjE0YTYxZGYxZWE2
NzM0M2Q1MzIyNjE1MjVlN2VmNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKQEAgLTMxLDE3ICsz
MSwxNyBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eTo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSgpCitBZ2VudFJlZ2lzdHJ5OjpBZ2VudFJlZ2lzdHJ5
KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmQoc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4gYWdlbnQpCit2b2lkIEFnZW50UmVnaXN0cnk6OmFw
cGVuZChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2VudCkKIHsKICAgICBt
X2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGFnZW50KSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6
YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2Vu
dCkKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2VudCkKIHsKICAgICBtX2V4dHJhRG9tYWlucy5hcHBlbmQo
YWdlbnQtPmRvbWFpbk5hbWUoKSk7CiAKQEAgLTQ5LDE5ICs0OSwxOSBAQCB2b2lkIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnk6OmFwcGVuZEV4dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckFnZW50QmFzZQogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIp
Cit2b2lkIEFnZW50UmVnaXN0cnk6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2VudHMuc2l6ZSgpOyBp
KyspCiAgICAgICAgIG1fYWdlbnRzW2ldLT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoZnJv
bnRlbmRDaGFubmVsLCBiYWNrZW5kRGlzcGF0Y2hlcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEFnZW50UmVnaXN0cnk6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hZ2VudHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIG1fYWdlbnRzW2ldLT53
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChyZWFzb24pOwogfQogCi12b2lkIEluc3BlY3Rv
ckFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2VudHMoKQordm9pZCBBZ2VudFJlZ2lzdHJ5OjpkaXNj
YXJkQWdlbnRzKCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWdlbnRzLnNpemUo
KTsgaSsrKQogICAgICAgICBtX2FnZW50c1tpXS0+ZGlzY2FyZEFnZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eS5oCmluZGV4IDhiNzc1N2Y4Y2E1NWI5MjMzZjVlZGNjYzhjM2JiMjlmN2RmNjZjZWUuLmJlYWIy
N2RmYzNkZTg5NGZiYmRkZmFkMWE5ODlhZWFkYmRkOWVjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oCkBA
IC0zMiwxOSArMzIsMjAgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKK2NsYXNzIEJhY2tl
bmREaXNwYXRjaGVyOworY2xhc3MgRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yQWdl
bnRCYXNlOwotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7Ci1lbnVtIGNsYXNzIEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb247
CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50UmVnaXN0cnkgeworZW51
bSBjbGFzcyBEaXNjb25uZWN0UmVhc29uOworCitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBBZ2Vu
dFJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KCk7CisgICAg
QWdlbnRSZWdpc3RyeSgpOwogCiAgICAgdm9pZCBhcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3RvckFnZW50QmFzZT4pOwogCi0gICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKTsK
LSAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
KTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbik7CiAgICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKQEAgLTU1LDggKzU2LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICAvLyBUaGVzZSBhcmUgZGVjbGFyZWQgaGVyZSB0byBhdm9pZCBNU1ZD
IGZyb20gdHJ5aW5nIHRvIGNyZWF0ZSBkZWZhdWx0IGlwbGVtZW50YXRpb25zIHdoaWNoIHdvdWxk
CiAgICAgLy8gaW52b2x2ZSBnZW5lcmF0aW5nIGEgY29weSBjb25zdHJ1Y3RvciBhbmQgY29weSBh
c3NpZ25tZW50IG9wZXJhdG9yIGZvciB0aGUgVmVjdG9yIG9mIHN0ZDo6dW5pcXVlX3B0cnMuCi0g
ICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeShjb25zdCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Jikg
PSBkZWxldGU7Ci0gICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSYgb3BlcmF0b3I9KGNvbnN0IElu
c3BlY3RvckFnZW50UmVnaXN0cnkmKSA9IGRlbGV0ZTsKKyAgICBBZ2VudFJlZ2lzdHJ5KGNvbnN0
IEFnZW50UmVnaXN0cnkmKSA9IGRlbGV0ZTsKKyAgICBBZ2VudFJlZ2lzdHJ5JiBvcGVyYXRvcj0o
Y29uc3QgQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRlOwogCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+PiBtX2FnZW50czsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXgg
MzE1NjRkODc0NTRlZTU1MWVlNjkyNTAyM2E3NWJjNTdhMTk0ZTMwZS4uZjg4Y2ZiZGFiYzFkYzlj
ZWFmOGY1MDMwYzY3NWQ0OTRkNzYwMzgxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAK
QEAgLTM0LDI1ICszNCwyNSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKFJlZjxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKQorQmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKFJlZjxCYWNrZW5kRGlzcGF0
Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKQogICAgIDogbV9iYWNrZW5kRGlzcGF0
Y2hlcihXVEY6Om1vdmUoYmFja2VuZERpc3BhdGNoZXIpKQogICAgICwgbV9pZChpZCkKICAgICAs
IG1fYWxyZWFkeVNlbnQoZmFsc2UpCiB7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUoKSBjb25zdAorYm9vbCBCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlOjppc0FjdGl2ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX2Fs
cmVhZHlTZW50ICYmIG1fYmFja2VuZERpc3BhdGNoZXItPmlzQWN0aXZlKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZEZhaWx1cmUoY29u
c3QgRXJyb3JTdHJpbmcmIGVycm9yKQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlOjpzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYgZXJyb3IpCiB7CiAgICAgQVNTRVJU
KGVycm9yLmxlbmd0aCgpKTsKICAgICBzZW5kSWZBY3RpdmUobnVsbHB0ciwgZXJyb3IpOwogfQog
Ci12b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFj
dGl2ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBhcnRpYWxNZXNzYWdlLCBjb25zdCBFcnJv
clN0cmluZyYgaW52b2NhdGlvbkVycm9yKQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlOjpzZW5kSWZBY3RpdmUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBwYXJ0aWFsTWVz
c2FnZSwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcikKIHsKICAgICBpZiAobV9h
bHJlYWR5U2VudCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjEsMjAgKzYxLDIwIEBAIHZvaWQgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZElmQWN0aXZlKFJlZlB0
cjxJbnNwZWN0b3JPYmplCiAgICAgbV9hbHJlYWR5U2VudCA9IHRydWU7CiB9CiAKLVJlZjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKK1Jl
ZjxCYWNrZW5kRGlzcGF0Y2hlcj4gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCYWNrZW5kRGlzcGF0Y2hlcihmcm9udGVuZENoYW5uZWwpKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJEaXNwYXRjaGVy
Rm9yRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluLCBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlZ2lz
dGVyRGlzcGF0Y2hlckZvckRvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbiwgU3VwcGxlbWVudGFs
QmFja2VuZERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2Rp
c3BhdGNoZXJzLmFkZChkb21haW4sIGRpc3BhdGNoZXIpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgQmFja2VuZERpc3Bh
dGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCYWNrZW5kRGlz
cGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBh
cnNlZE1lc3NhZ2U7CiAgICAgaWYgKCFJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2Us
IHBhcnNlZE1lc3NhZ2UpKSB7CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0KIAog
ICAgIFN0cmluZyBkb21haW4gPSBtZXRob2Quc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKLSAgICBJ
bnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZG9tYWluRGlzcGF0Y2hlciA9
IG1fZGlzcGF0Y2hlcnMuZ2V0KGRvbWFpbik7CisgICAgU3VwcGxlbWVudGFsQmFja2VuZERpc3Bh
dGNoZXIqIGRvbWFpbkRpc3BhdGNoZXIgPSBtX2Rpc3BhdGNoZXJzLmdldChkb21haW4pOwogICAg
IGlmICghZG9tYWluRGlzcGF0Y2hlcikgewogICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKCZj
YWxsSWQsIE1ldGhvZE5vdEZvdW5kLCAiJyIgKyBkb21haW4gKyAiJyBkb21haW4gd2FzIG5vdCBm
b3VuZCIpOwogICAgICAgICByZXR1cm47CkBAIC0xMjksOSArMTI5LDkgQEAgdm9pZCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAg
IGRvbWFpbkRpc3BhdGNoZXItPmRpc3BhdGNoKGNhbGxJZCwgZG9tYWluTWV0aG9kLCBtZXNzYWdl
T2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiYgcmVzdWx0LCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKQordm9pZCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYmIHJlc3VsdCwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcikKIHsK
LSAgICBpZiAoIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAgIGlmICghbV9mcm9udGVu
ZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpbnZvY2F0aW9uRXJyb3IubGVu
Z3RoKCkpIHsKQEAgLTE0MiwxNSArMTQyLDE1IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjCiAg
ICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICByZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
InJlc3VsdCIpLCByZXN1bHQpOwogICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcihBU0NJ
SUxpdGVyYWwoImlkIiksIGNhbGxJZCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwt
PnNlbmRNZXNzYWdlVG9Gcm9udGVuZChyZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsK
KyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJlc3BvbnNlTWVz
c2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9u
RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIGNvbnN0Cit2
b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNv
bnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIGNvbnN0CiB7CiAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihjYWxsSWQsIGVycm9y
Q29kZSwgZXJyb3JNZXNzYWdlLCBudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQs
IENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBkYXRhKSBjb25zdAor
dm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBj
b25zdCBjYWxsSWQsIENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBk
YXRhKSBjb25zdAogewogICAgIHN0YXRpYyBjb25zdCBpbnQgZXJyb3JDb2Rlc1tdID0gewogICAg
ICAgICAtMzI3MDAsIC8vIFBhcnNlRXJyb3IKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNv
bnN0IGNhbGxJZCwgQwogICAgIEFTU0VSVF9BUkcoZXJyb3JDb2RlLCAodW5zaWduZWQpZXJyb3JD
b2RlIDwgV1RGX0FSUkFZX0xFTkdUSChlcnJvckNvZGVzKSk7CiAgICAgQVNTRVJUX0FSRyhlcnJv
ckNvZGUsIGVycm9yQ29kZXNbZXJyb3JDb2RlXSk7CiAKLSAgICBpZiAoIW1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKQorICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGVycm9yID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQwogICAg
IGVsc2UKICAgICAgICAgbWVzc2FnZS0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJpZCIpLCBJbnNw
ZWN0b3JWYWx1ZTo6bnVsbCgpKTsKIAotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLT5z
ZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJv
bnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZS0+dG9KU09OU3RyaW5n
KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5WYWx1ZVR5cGUsIHR5cGVuYW1lIFZh
bHVlVHlwZSwgdHlwZW5hbWUgRGVmYXVsdFZhbHVlVHlwZT4KQEAgLTIyNywzNyArMjI3LDM3IEBA
IHN0cnVjdCBBc01ldGhvZEJyaWRnZXMgewogICAgIHN0YXRpYyBib29sIGFzVmFsdWUoSW5zcGVj
dG9yVmFsdWUmIHZhbHVlLCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+JiBvdXRwdXQpIHsgcmV0dXJu
IHZhbHVlLmFzVmFsdWUob3V0cHV0KTsgfQogfTsKIAotaW50IEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpnZXRJbnRlZ2VyKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4mIHByb3RvY29sRXJyb3JzKQoraW50IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKElu
c3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91
bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQog
ewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPGludCwgaW50LCBpbnQ+KG9iamVjdCwgbmFt
ZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIDAsIEFzTWV0aG9kQnJpZGdlczo6YXNJbnRl
Z2VyLCAiSW50ZWdlciIpOwogfQogCi1kb3VibGUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OmdldERvdWJsZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90
b2NvbEVycm9ycykKK2RvdWJsZSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKEluc3BlY3Rv
ck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAg
IHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPGRvdWJsZSwgZG91YmxlLCBkb3VibGU+KG9iamVjdCwg
bmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIDAsIEFzTWV0aG9kQnJpZGdlczo6YXNE
b3VibGUsICJOdW1iZXIiKTsKIH0KIAotU3RyaW5nIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpnZXRTdHJpbmcoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJv
dG9jb2xFcnJvcnMpCitTdHJpbmcgQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhJbnNwZWN0
b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKIHsKICAg
ICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxTdHJpbmcsIFN0cmluZywgU3RyaW5nPihvYmplY3Qs
IG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCAiIiwgQXNNZXRob2RCcmlkZ2VzOjph
c1N0cmluZywgIlN0cmluZyIpOwogfQogCi1ib29sIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpnZXRCb29sZWFuKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHBy
b3RvY29sRXJyb3JzKQorYm9vbCBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Qm9vbGVhbihJbnNwZWN0
b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKIHsKICAg
ICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxib29sLCBib29sLCBib29sPihvYmplY3QsIG5hbWUs
IHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBmYWxzZSwgQXNNZXRob2RCcmlkZ2VzOjphc0Jv
b2xlYW4sICJCb29sZWFuIik7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCitSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZh
bHVlPFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiwgSW5z
cGVjdG9yT2JqZWN0Kj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywg
bnVsbHB0ciwgQXNNZXRob2RCcmlkZ2VzOjphc09iamVjdCwgIk9iamVjdCIpOwogfQogCi1SZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShJ
bnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZv
dW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykK
K1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KEluc3Bl
Y3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewog
ICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFJlZlB0cjxJbnNwZWN0b3JBcnJheT4sIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4sIEluc3BlY3RvckFycmF5Kj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZv
dW5kLCBwcm90b2NvbEVycm9ycywgbnVsbHB0ciwgQXNNZXRob2RCcmlkZ2VzOjphc0FycmF5LCAi
QXJyYXkiKTsKIH0KIAotUmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0VmFsdWUoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
PiYgcHJvdG9jb2xFcnJvcnMpCitSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEJhY2tlbmREaXNwYXRj
aGVyOjpnZXRWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBw
cm90b2NvbEVycm9ycykKIHsKICAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZTxSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+LCBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+LCBJbnNwZWN0b3JWYWx1ZSo+KG9i
amVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIG51bGxwdHIsIEFzTWV0aG9k
QnJpZGdlczo6YXNWYWx1ZSwgIlZhbHVlIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKaW5k
ZXggMGYwYTI0NTlhMTljZjFlN2Q0NmNiNDJkNTY3Y2JjN2QwMmY0YzZhZC4uYjMwMzcwMGEyMDli
YjIyMjY2YmFlOGY0ZTRkZThkZDMyNmZiOTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApA
QCAtMzMsMjcgKzMzLDI4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsK
K2NsYXNzIEJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlcj4geworY2xhc3MgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcj4gewogcHVi
bGljOgotICAgIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKKyAgICBTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCiAg
ICAgICAgIDogbV9iYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikgeyB9Ci0gICAg
dmlydHVhbCB+SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAg
ICB2aXJ0dWFsIH5TdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgPSAwOwogcHJvdGVjdGVkOgotICAgIFJlZjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWY8QmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCi1jbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBC
YWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEJhY2tlbmREaXNwYXRjaGVyPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gY3Jl
YXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOworICAgIHN0YXRpYyBSZWY8QmFja2VuZERp
c3BhdGNoZXI+IGNyZWF0ZShGcm9udGVuZENoYW5uZWwqKTsKIAogICAgIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIENhbGxiYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrQmFzZT4g
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FsbGJhY2tCYXNlKFJlZjxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKKyAgICAgICAgQ2FsbGJhY2tCYXNlKFJlZjxCYWNrZW5k
RGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKIAogICAgICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgc2VuZEZhaWx1cmUoY29uc3QgRXJyb3JTdHJpbmcmKTsKQEAgLTYzLDEz
ICs2NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgc2VuZElmQWN0aXZlKFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiYgcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0
aW9uRXJyb3IpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgICAgICBSZWY8QmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgICAgIGludCBtX2lkOwogICAgICAgICBi
b29sIG1fYWxyZWFkeVNlbnQ7CiAgICAgfTsKIAotICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsg
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRyOyB9Ci0gICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKyAgICB2
b2lkIGNsZWFyRnJvbnRlbmQoKSB7IG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsgfQorICAg
IGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiAhIW1fZnJvbnRlbmRDaGFubmVsOyB9CiAK
ICAgICBlbnVtIENvbW1vbkVycm9yQ29kZSB7CiAgICAgICAgIFBhcnNlRXJyb3IgPSAwLApAQCAt
ODAsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNlcnZlckVycm9yCiAgICAgfTsKIAotICAg
IHZvaWQgcmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluLCBJ
bnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciopOworICAgIHZvaWQgcmVnaXN0
ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluLCBTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlciopOwogICAgIHZvaWQgZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKICAgICB2b2lkIHNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mJiByZXN1bHQsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpOwog
ICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihjb25zdCBsb25nKiBjb25zdCBjYWxsSWQsIENv
bW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIGNvbnN0OwpAQCAtOTUs
MTAgKzk2LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEluc3BlY3RvckFycmF5PiBn
ZXRBcnJheShJbnNwZWN0b3JPYmplY3QqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVl
Rm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3Jz
KTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQorICAgIEJhY2tlbmRE
aXNwYXRjaGVyKEZyb250ZW5kQ2hhbm5lbCogRnJvbnRlbmRDaGFubmVsKQorICAgICAgICA6IG1f
ZnJvbnRlbmRDaGFubmVsKEZyb250ZW5kQ2hhbm5lbCkgeyB9CiAKLSAgICBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotICAgIEhhc2hNYXA8U3Ry
aW5nLCBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hl
cnM7CisgICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBIYXNoTWFw
PFN0cmluZywgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIqPiBtX2Rpc3BhdGNoZXJzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaAppbmRleCBm
YTBhOGVhZTgzOWY1ZmU0NzE3NGU0Y2JiYzlkZTU3NDMyYTZiOTYxLi5hMmJmNmYzYzI0ZmU5YTMz
MGRhM2NmZGFlYTdiMmNjZjY4YzM4MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKQEAgLTMwLDkg
KzMwLDkgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCB7CitjbGFzcyBGcm9udGVuZENoYW5uZWwgewogcHVibGljOgotICAgIHZpcnR1
YWwgfkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCgpIHsgfQorICAgIHZpcnR1YWwgfkZyb250ZW5k
Q2hhbm5lbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggNjU1M2Q1NmFjZmViNjU5NjMwMmFlZjYzYzYxY2E0NWZhOWMy
NTVhMC4uNWI0MzUwNDQ5YmE4MTQ4MzlkZjg4NGE5NjYyYWRkYjk5ZmUxODMwNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTksNyArNTksNyBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRo
aXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQotICAgICwgbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwobnVsbHB0cikKKyAgICAsIG1fZnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAg
ICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9p
bmNsdWRlTmF0aXZlQ2FsbFN0YWNrV2l0aEV4Y2VwdGlvbnModHJ1ZSkKICAgICAsIG1faXNBdXRv
bWF0aWNJbnNwZWN0aW9uKGZhbHNlKQpAQCAtOTQsMjIgKzk0LDIyIEBAIEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6fkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcigp
CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpnbG9iYWxPYmplY3RE
ZXN0cm95ZWQoKQogewotICAgIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RGcm9udGVu
ZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOwogCiAgICAgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCit2
b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
bikKIHsKLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKLSAgICBBU1NF
UlQoIW1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIpOworICAgIEFTU0VSVCghbV9mcm9udGVu
ZENoYW5uZWwpOworICAgIEFTU0VSVCghbV9iYWNrZW5kRGlzcGF0Y2hlcik7CiAKICAgICBtX2lz
QXV0b21hdGljSW5zcGVjdGlvbiA9IGlzQXV0b21hdGljSW5zcGVjdGlvbjsKIAotICAgIG1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRDaGFubmVsOwotICAgIG1faW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZy
b250ZW5kQ2hhbm5lbCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5uZWw7
CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJv
bnRlbmRDaGFubmVsKTsKIAotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChmcm9udGVuZENoYW5uZWwsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwor
ICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWws
IG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgbV9pbnNwZWN0b3JBZ2VudC0+YWN0aXZhdGVFeHRyYURv
bWFpbnMobV9hZ2VudHMuZXh0cmFEb21haW5zKCkpOwpAQCAtMTE5LDE2ICsxMTksMTYgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwKICNlbmRpZgogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24gcmVhc29uKQordm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRp
c2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKHJlYXNvbik7CiAKLSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZy
b250ZW5kKCk7Ci0gICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwotICAg
IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsKKyAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5jbGVhckZyb250ZW5kKCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigp
OworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsKIAogICAgIG1faXNBdXRvbWF0aWNJ
bnNwZWN0aW9uID0gZmFsc2U7CiAKQEAgLTE0MCw4ICsxNDAsOCBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nv
bm5lY3RSZQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAo
bV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgbV9pbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgaWYgKG1fYmFja2VuZERpc3BhdGNo
ZXIpCisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2UpOwogfQog
CiB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6YXBwZW5kQVBJQmFja3Ry
YWNlKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQpAQCAtMjMxLDEyICsyMzEsMTIgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEV4dHJhQWdlbnQoc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3QKIHsKICAgICBTdHJpbmcgZG9tYWluTmFtZSA9IGFnZW50LT5k
b21haW5OYW1lKCk7CiAKLSAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCi0gICAg
ICAgIGFnZW50LT5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIGlmICht
X2Zyb250ZW5kQ2hhbm5lbCkKKyAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChtX2Zyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAg
ICBtX2FnZW50cy5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhZ2VudCkpOwogCi0gICAgaWYg
KG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAgIGlmIChtX2Zyb250ZW5kQ2hhbm5lbCkK
ICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+YWN0aXZhdGVFeHRyYURvbWFpbihkb21haW5OYW1l
KTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXgg
NzYwZjcwZmEyOGQwZDY1ZWM0NzZkNTJlYjNlZGRmOGI5YmZlZmZkZi4uODU1MDg0NDQ3ZjY3YjNj
Mzk3N2FjYzhkODdiOWUzYTc2NDVkYjljNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC01MCwxMiArNTAsMTIgQEAgY2xhc3MgSlNWYWx1ZTsKIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKK2NsYXNzIEJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgRnJvbnRlbmRD
aGFubmVsOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQWdl
bnQ7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckNv
bnNvbGVBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ7CiBj
bGFzcyBTY3JpcHRDYWxsU3RhY2s7CiAKQEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIEpT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAg
ICAgfkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcigpOwogCi0gICAgdm9pZCBjb25u
ZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0lu
c3BlY3Rpb24pOwotICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKTsKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAgICB2b2lkIGRp
c2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pOwogICAgIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBn
bG9iYWxPYmplY3REZXN0cm95ZWQoKTsKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBhdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXJDbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F1Z21l
bnRpbmdDbGllbnQ7IH0gCiAgICAgdmlydHVhbCB2b2lkIHNldEF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlckNsaWVudChBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGNs
aWVudCkgb3ZlcnJpZGUgeyBtX2F1Z21lbnRpbmdDbGllbnQgPSBjbGllbnQ7IH0KIAotICAgIHZp
cnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQorICAgIHZpcnR1
YWwgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2Zyb250ZW5kQ2hhbm5lbDsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRFeHRyYUFn
ZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KSBvdmVycmlkZTsKICNlbmRp
ZgogCkBAIC0xMTAsOSArMTEwLDkgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBZ2VudCogbV9p
bnNwZWN0b3JBZ2VudDsKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFnZW50
OwogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKLSAgICBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOworICAgIEFnZW50UmVn
aXN0cnkgbV9hZ2VudHM7CisgICAgRnJvbnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsK
KyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAg
UmVmPFdURjo6U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBib29sIG1faW5j
bHVkZU5hdGl2ZUNhbGxTdGFja1dpdGhFeGNlcHRpb25zOwogICAgIGJvb2wgbV9pc0F1dG9tYXRp
Y0luc3BlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggZTYyZWMyZWMwNGIwYThiM2I2YWNh
ZjIxMGQ5ODg2ODdlZmU0MThhMC4uMmJhOGMyYWRlM2Y5NzlmYzc0MzU2NDgwZWEwMTgzNjUxYTJm
MzBlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIEluc3BlY3RvckFn
ZW50Ojp+SW5zcGVjdG9yQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
K3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lk
IEluc3BlY3RvckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuaAppbmRleCAzOGM5ZWVmMjc3MzFhNjhkZjAwODk1YTc1ZDc1ZTZmNTg1YjFk
MzRjLi5lYmEyMmExMjBiNGQ1ZTQ1NzIwNzE1NDFiY2QxNTU0MTJjMzYyZjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmgKQEAgLTM4LDIyICszOCwyMiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xh
c3MgQmFja2VuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JFbnZpcm9ubWVudDsKLWNsYXNz
IEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9ySW5z
cGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyczsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcnM7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3Ry
aW5nOwogCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudCBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQWdl
bnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBJbnNwZWN0b3JBZ2VudChJbnNwZWN0b3JFbnZpcm9ubWVudCYpOwogICAgIHZpcnR1
YWwgfkluc3BlY3RvckFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7CkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBJbnNwZWN0b3JFbnZpcm9ubWVudCYgbV9lbnZpcm9ubWVudDsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kczsK
ICAgICBzdGQ6OnBhaXI8UmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pj4gbV9wZW5kaW5nSW5zcGVjdERhdGE7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcAppbmRleCAwNTA1MTE5MzE3ZTNhMjE0ZGI4ODkxZTk5MjdiNzZkMTc0MjU3YWZlLi43
Yjc4OWE2OTdlNmIwZDQ4ZWJhMjliMmI0ZTE1ZTM3ZTVmZGZjYjJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKQEAgLTU1LDEzICs1NSwxMyBAQCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6On5JbnNwZWN0b3JDb25zb2xlQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckNvbnNv
bGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkNv
bnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4
IDcyNjJjMDc1YWQyMDIxMjFiNTNjMGI1YjYzODJhYmY4YWMxNmZmMWQuLjQyYjM0MzliMzE2MTdj
ZTJhNjQ5OWRlZTcyZGRlMjJjY2VmZGVlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5o
CkBAIC00OCwxNSArNDgsMTUgQEAgY2xhc3MgU2NyaXB0QXJndW1lbnRzOwogY2xhc3MgU2NyaXB0
Q2FsbFN0YWNrOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJh
c2UsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2Ns
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9y
Q29uc29sZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogICAgIHZpcnR1YWwgfkluc3Bl
Y3RvckNvbnNvbGVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CkBAIC04MSw4ICs4MSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZENvbnNv
bGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4pOwogCiAgICAgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3Bh
dGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xl
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpDb25zb2xlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAg
ICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOwogICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+PiBtX2NvbnNvbGVNZXNzYWdlczsKICAgICBpbnQgbV9l
eHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggM2FlNzYwOWNhZTIwYjdhZjBhZjM2MzczNjliN2Y0MmM3NDgyZmQyMC4uYmY2ODU0
M2ZjNDhmOWQwM2Q2MDBhNDM4M2RiYzQ3ZjlkODY5MTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKQEAgLTY4LDE4ICs2OCwxOCBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
Ojp+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RGVidWdnZXJC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiBy
ZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAotICAgIGJvb2wgc2tpcFJlY29tcGlsZSA9IHJlYXNv
biA9PSBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQ7
CisgICAgYm9vbCBza2lwUmVjb21waWxlID0gcmVhc29uID09IERpc2Nvbm5lY3RSZWFzb246Oklu
c3BlY3RlZFRhcmdldERlc3Ryb3llZDsKICAgICBkaXNhYmxlKHNraXBSZWNvbXBpbGUpOwogfQog
CkBAIC0xODEsNyArMTgxLDcgQEAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YnVpbGRFeGNlcHRpb25QYXVzZVJlYXNvbihjb25zdAogdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVDb25zb2xlQXNzZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKICAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KCkgIT0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKQotICAgICAgICBicmVh
a1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QXNz
ZXJ0LCBidWlsZEFzc2VydFBhdXNlUmVhc29uKG1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWtQcm9n
cmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QXNzZXJ0
LCBidWlsZEFzc2VydFBhdXNlUmVhc29uKG1lc3NhZ2UpKTsKIH0KIAogc3RhdGljIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2ludENvb2tpZShjb25zdCBTdHJpbmcm
IHVybCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29u
ZGl0aW9uLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhY3Rpb25zLCBib29sIGlzUmVnZXgsIGJv
b2wgYXV0b0NvbnRpbnVlKQpAQCAtNDcxLDcgKzQ3MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QKICAgICBpbmplY3RlZFNjcmlwdC5nZXRGdW5jdGlvbkRldGFpbHMoZXJyb3JTdHJpbmcsIGZ1
bmN0aW9uSWQsICZkZXRhaWxzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZGF0
YSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRl
bWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtS
ZWFzb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZGF0YSkKIHsKICAgICBpZiAobV9qYXZh
U2NyaXB0UGF1c2VTY2hlZHVsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5Miw3ICs0OTIsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50
KCkKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShFcnJvclN0cmluZyYpCiB7
Ci0gICAgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpQYXVzZU9uTmV4dFN0YXRlbWVudCwgbnVsbHB0cik7Cisg
ICAgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OlBhdXNlT25OZXh0U3RhdGVtZW50LCBudWxscHRyKTsKIAog
ICAgIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkID0gdHJ1ZTsKIH0KQEAgLTU4Miw3ICs1ODIs
NyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldE92ZXJsYXlNZXNzYWdlKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nKikKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2Ny
aXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkKIHsK
ICAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0g
SlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKQotICAgICAgICBicmVha1Byb2dy
YW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6Q1NQVmlvbGF0
aW9uLCBidWlsZENTUFZpb2xhdGlvblBhdXNlUmVhc29uKGRpcmVjdGl2ZVRleHQpKTsKKyAgICAg
ICAgYnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6Q1NQVmlvbGF0aW9uLCBidWlsZENTUFZpb2xhdGlvblBhdXNlUmVhc29uKGRpcmVjdGl2
ZVRleHQpKTsKIH0KIAogUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpj
dXJyZW50Q2FsbEZyYW1lcyhJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCkKQEAgLTY2NCwy
MiArNjY0LDIyIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpF
eGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBEZXByZWNhCiAgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRG
b3Ioc2NyaXB0U3RhdGUpOwogCiAgICAgLy8gSWYgYSBoaWdoIGxldmVsIHBhdXNlIHBhdXNlIHJl
YXNvbiBpcyBub3QgYWxyZWFkeSBzZXQsIHRyeSB0byBpbmZlciBhIHJlYXNvbiBmcm9tIHRoZSBk
ZWJ1Z2dlci4KLSAgICBpZiAobV9icmVha1JlYXNvbiA9PSBJbnNwZWN0b3JEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpPdGhlcikgeworICAgIGlmIChtX2JyZWFrUmVhc29uID09
IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXIpIHsK
ICAgICAgICAgc3dpdGNoIChzY3JpcHREZWJ1Z1NlcnZlcigpLnJlYXNvbkZvclBhdXNlKCkpIHsK
ICAgICAgICAgY2FzZSBKU0M6OkRlYnVnZ2VyOjpQYXVzZWRGb3JCcmVha3BvaW50OiB7CiAgICAg
ICAgICAgICBKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9pbnRJZCA9IHNjcmlwdERl
YnVnU2VydmVyKCkucGF1c2luZ0JyZWFrcG9pbnRJRCgpOwogICAgICAgICAgICAgaWYgKGRlYnVn
Z2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKSB7Ci0g
ICAgICAgICAgICAgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQ7CisgICAgICAgICAgICAgICAgbV9icmVha1Jl
YXNvbiA9IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QnJl
YWtwb2ludDsKICAgICAgICAgICAgICAgICBtX2JyZWFrQXV4RGF0YSA9IGJ1aWxkQnJlYWtwb2lu
dFBhdXNlUmVhc29uKGRlYnVnZ2VyQnJlYWtwb2ludElkKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSlNDOjpEZWJ1Z2dlcjo6UGF1
c2VkRm9yRGVidWdnZXJTdGF0ZW1lbnQ6Ci0gICAgICAgICAgICBtX2JyZWFrUmVhc29uID0gSW5z
cGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RGVidWdnZXJTdGF0ZW1l
bnQ7CisgICAgICAgICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpEZWJ1Z2dlclN0YXRlbWVudDsKICAgICAgICAgICAgIG1f
YnJlYWtBdXhEYXRhID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEpTQzo6RGVidWdnZXI6OlBhdXNlZEZvckV4Y2VwdGlvbjoKLSAgICAgICAgICAgIG1fYnJlYWtS
ZWFzb24gPSBJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFeGNl
cHRpb247CisgICAgICAgICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yOjpEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFeGNlcHRpb247CiAgICAgICAgICAgICBtX2JyZWFr
QXV4RGF0YSA9IGJ1aWxkRXhjZXB0aW9uUGF1c2VSZWFzb24oZXhjZXB0aW9uT3JDYXVnaHRWYWx1
ZSwgaW5qZWN0ZWRTY3JpcHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSlND
OjpEZWJ1Z2dlcjo6UGF1c2VkQXRTdGF0ZW1lbnQ6CkBAIC03NTUsNyArNzU1LDcgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250aW51ZSgpCiAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnJlc3VtZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVh
a1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVh
a1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKQordm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRh
dGEpCiB7CiAgICAgbV9icmVha1JlYXNvbiA9IGJyZWFrUmVhc29uOwogICAgIG1fYnJlYWtBdXhE
YXRhID0gV1RGOjptb3ZlKGRhdGEpOwpAQCAtODE0LDcgKzgxNCw3IEBAIGJvb2wgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIAog
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckJyZWFrRGV0YWlscygpCiB7Ci0gICAg
bV9icmVha1JlYXNvbiA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFz
b246Ok90aGVyOworICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246Ok90aGVyOwogICAgIG1fYnJlYWtBdXhEYXRhID0gbnVsbHB0
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDliZTMyMzMxNTEwOTQ1
NTg3OGIwMWMzNGIwNjE4YzU2MzgxNDQ1MmMuLjNiZTUwOWVmOGQ4N2M3ZjNkN2Y1OWI0YjZmNTAw
NDZlYTI4YzU2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTU3LDcgKzU3
LDcgQEAgY2xhc3MgSW5zcGVjdG9yVmFsdWU7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIFNj
cmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVu
ZXIsIHB1YmxpYyBJbnNwZWN0b3I6OkRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTY1LDggKzY1LDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVh
c29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC05MSw5ICs5MSw5IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGhhbmRsZUNvbnNvbGVBc3NlcnQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYmIGRhdGEpOworICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRl
bWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtS
ZWFzb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZGF0YSk7CiAgICAgdm9pZCBjYW5jZWxQ
YXVzZU9uTmV4dFN0YXRlbWVudCgpOwotICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24sIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiYgZGF0YSk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oSW5zcGVjdG9yOjpE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYmIGRhdGEpOwogICAgIHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5
Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCk7CiAKICAgICBjbGFzcyBMaXN0ZW5lciB7
CkBAIC0xNTUsOCArMTU1LDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8SlNDOjpC
cmVha3BvaW50SUQsIFN0cmluZz4gRGVidWdTZXJ2ZXJCcmVha3BvaW50SURUb0JyZWFrcG9pbnRJ
ZGVudGlmaWVyOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JEZWJ1
Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpEZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIExpc3RlbmVyKiBtX2xpc3RlbmVyIHtudWxs
cHRyfTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9wYXVzZWRTY3JpcHRTdGF0ZSB7bnVsbHB0cn07
CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9jdXJyZW50Q2FsbFN0YWNrOwpAQCAtMTY1
LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFrcG9p
bnRNYXAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7CiAgICAgRGVidWdTZXJ2ZXJCcmVha3BvaW50
SURUb0JyZWFrcG9pbnRJZGVudGlmaWVyIG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRv
SW5zcGVjdG9yQnJlYWtwb2ludElkZW50aWZpZXI7CiAgICAgSlNDOjpCcmVha3BvaW50SUQgbV9j
b250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQ7Ci0gICAgSW5zcGVjdG9yRGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbiBtX2JyZWFrUmVhc29uOworICAgIEluc3BlY3Rvcjo6RGVi
dWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBtX2JyZWFrUmVhc29uOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOwogICAgIGJvb2wgbV9lbmFibGVkIHtm
YWxzZX07CiAgICAgYm9vbCBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCB7ZmFsc2V9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggOWM5NzI1YTVmYjA4Nzc4MTMzOGYzZWU1
N2JkMTUzZGRmYTU0MzYxOS4uZjQ1MzkzNWViMDg3ZWQ2MzI0MGEwZDk4Mzc5MjMyYmU5NDhhOGJi
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0yOTYsOSArMjk2LDkgQEAg
c3RhdGljIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNGb3JUeXBlUHJvZmlsaW5nKFZNJiB2
bSwgYm9vbCBzaG91bGRFbmFibGVUeXAKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uIHJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAocmVh
c29uICE9IEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3ll
ZCAmJiBtX2lzVHlwZVByb2ZpbGluZ0VuYWJsZWQpCisgICAgaWYgKHJlYXNvbiAhPSBEaXNjb25u
ZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQgJiYgbV9pc1R5cGVQcm9maWxpbmdF
bmFibGVkKQogICAgICAgICBzZXRUeXBlUHJvZmlsZXJFbmFibGVkU3RhdGUoZmFsc2UpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDA3ZTRmZWNmOTcwY2Q5NzAyYTRiZjll
YjUwM2E2ZWY5ODY2ZDI1ZTQuLjY2ZWUxNWM5NGViOWZmYTQxY2EwNjU1NWI4YTFkZjM3ZDFiODE2
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC01MCwxMiArNTAsMTIgQEAgY2xh
c3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JSdW50
aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yUnVu
dGltZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdlbnQpOwogcHVibGljOgogICAgIHZpcnR1
YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9lbmFibGVkID0gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxz
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IGRjNDRj
YzdmZjYxMjExYjY3NzI2YjMwY2JiNGY0YTBjYjM4ODE3ZjEuLjUxM2RmNWJjMTczZDUwZjIzMzhh
MWFmMTA4OTdmYTljNGQ1NTA2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudC5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbgogewog
fQogCi12b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGlt
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRp
bWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVh
c29uIHJlYXNvbikKK3ZvaWQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaAppbmRleCBjNjUwNjhlNjg5
ZWM0NTNhM2MyNTQzYTZmOGQ0ODU3ZWUwOGNmNzk3Li45NjQwMGUzZTk5YmNkNjhiZTc1OWUxMTYx
OGE0MDczZDA2OTIwN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgK
QEAgLTM4LDggKzM4LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1YmxpYzoKICAgICBKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIEpTQzo6Vk0mIGdsb2JhbFZNKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJp
bmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CkBAIC01MCw4ICs1
MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRl
IHsgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JSdW50aW1lRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBt
X2dsb2JhbE9iamVjdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQuaAppbmRleCA4ZjdiNDcwNDFhZDgyMDg2ZWQ0YmZhZWM3MjBjNDMyYTY4NGRlMzE1
Li40MWZkZWZhMGMyN2YxNmJkYzc3NzkxNzc5ODc0NDkwNjE1MmU4YzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdt
ZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAotI2luY2x1ZGUg
Ikluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3Bl
Y3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QWdlbnRCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ1LDE0ICs0NSwxNCBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKSBvdmVycmlkZQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCBudWxscHRyKTsKICAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+c2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihtX2FsdGVybmF0ZURpc3BhdGNoZXIu
Z2V0KCkpOwogICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPnNldEJhY2tlbmREaXNwYXRj
aGVyKGJhY2tlbmREaXNwYXRjaGVyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJp
ZGUKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+c2V0
QmFja2VuZERpc3BhdGNoZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA4YThlN2FkMTAyYzQ0ZDUyOThlZmFiZDU2
Y2NlZDAyOTMyYjgyZTFlLi40NjBkNWVkODM0ZmNjZmM3YTk1NzIwNmVjNGYyNjA2N2JiYzRmM2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxl
L0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQXVnbWVudGFibGVJbnNw
ZWN0b3JDb250cm9sbGVyQ2xpZW50KiBhdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGll
bnQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEF1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlckNsaWVudChBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqKSA9
IDA7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0
cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgPSAwOwogCiAgICAg
Ym9vbCBjb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhIWZyb250ZW5kQ2hhbm5lbCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKaW5kZXggZGQ2YWE0NzhjOGQ0OGUyNzk2
MzRjYzAwZWMwNWM5YmI1MjU1N2I4My4uY2JkZTk5YzliMTMyMjQwZmUzMjk4NzBjOGJjNGE5OTg5
OWQ4NDYyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtMzQsNyAr
MzQsOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworCiBzdHJ1Y3QgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUluZm87CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUgewpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gV2ViCiAgICAgdmlydHVh
bCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVj
dGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzY29ubmVjdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJv
bVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRJbmRpY2F0aW5nKGJvb2wpIHsgfSAvLyBEZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaApp
bmRleCA1NDI1MTExNGU2M2FjNTRhODM1NDM4NjZhZGI1NDIzN2VjOTQxYmViLi4xZDc0OGEwYTY5
NzFmMWE2MWQzOGU2ZWQ2MjhlMmI3YjE4MGE3M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKIAogdHlwZWRlZiBWZWN0b3I8UmVtb3RlSW5zcGVjdG9yQmxvY2s+IFJlbW90ZUluc3BlY3Rv
clF1ZXVlOwogCi1jbGFzcyBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbj4sIHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeworY2xhc3MgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+LCBwdWJsaWMg
SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewogcHVibGljOgogICAgIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uKFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqLCBOU1N0cmlu
ZyAqY29ubmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5nICpkZXN0aW5hdGlvbiwgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUpOwogICAgIHZpcnR1YWwgflJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRv
ci5weQppbmRleCAwMjExNWFlMWJmZjMzNjBkMjI2NGYwYTQwMWRlY2IxNGY4ZWM0NTVjLi5kZjkw
YmU5MmQ1YjRmNTM0YWVmMGMzZTA2ZmVjYWY1MzE5NWQ2M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2Nw
cF9nZW5lcmF0b3IucHkKQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3I6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuICclcyonICUgY3BwX25hbWUKICAgICAgICAgaWYgaXNpbnN0
YW5jZShfdHlwZSwgRW51bVR5cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUuaXNfYW5vbnltb3Vz
OgotICAgICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yJXNCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OiVzKicgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgdWNmaXJzdChw
YXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpKQorICAgICAgICAgICAgICAgIHJldHVybiAnJXNCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiVzKicgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5f
bmFtZSwgdWNmaXJzdChwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpKQogICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OiVzOjolcyon
ICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIF90eXBlLnJhd19uYW1lKCkpCiAK
QEAgLTI3MCw3ICsyNzAsNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3I6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNwcF9uYW1lCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKToK
ICAgICAgICAgICAgIGlmIF90eXBlLmlzX2Fub255bW91czoKLSAgICAgICAgICAgICAgICByZXR1
cm4gJ0luc3BlY3RvciVzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolcycgJSAoX3R5cGUudHlw
ZV9kb21haW4oKS5kb21haW5fbmFtZSwgdWNmaXJzdChwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUp
KQorICAgICAgICAgICAgICAgIHJldHVybiAnJXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiVz
JyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0KHBhcmFtZXRlci5w
YXJhbWV0ZXJfbmFtZSkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVy
biAnSW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRv
bWFpbl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRl
cy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2Nw
cF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDAwMjg2YWE4ZTNlZDI2ODQzMDBmOGVhN2M2
MGM2NDI5N2ZhOWRkYmYuLjA1ZjM1MzA5NzRlMDU5ZDdmOWM2NGY5ZmU4OTYwZTQ1MzJjYWZmOGUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBA
IC02NiwxMiArNjYsMTIgQEAgJHtpbmNsdWRlc30KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNw
YXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0
Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hl
ci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogfTsKICIiIikKIApAQCAtODMsNjEgKzgzLDYxIEBAIHByaXZh
dGU6CiAjZW5kaWYgLy8gIWRlZmluZWQoJHtoZWFkZXJHdWFyZFN0cmluZ30pIiIiKQogCiAgICAg
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJEb21haW5IYW5kbGVySW50ZXJmYWNlRGVj
bGFyYXRpb24gPSAoCi0gICAgIiIiY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1l
fUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyIHsKKyAgICAiIiJjbGFzcyBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAg
IHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlcigpIHsgfQogJHtjb21tYW5kRGVjbGFyYXRpb25zfQogfTsiIiIpCiAKICAgICBCYWNrZW5k
RGlzcGF0Y2hlckhlYWRlckRvbWFpbkhhbmRsZXJEZWNsYXJhdGlvbiA9ICgKLSAgICAiIiIke2Ns
YXNzQW5kRXhwb3J0TWFjcm99IEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgeworICAgICIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAke2NvbW1hbmREZWNsYXJhdGlvbnN9
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfiR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIoKTsKIH07IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJE
b21haW5EaXNwYXRjaGVyRGVjbGFyYXRpb24gPSAoCi0gICAgIiIiJHtjbGFzc0FuZEV4cG9ydE1h
Y3JvfSBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7Cisg
ICAgIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVy
PiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJl
Zjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hl
ciosICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5z
cGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogJHtjb21tYW5kRGVjbGFyYXRpb25z
fQogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3RvciR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3Ike2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworICAgICR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYsICR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVJ
bnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNo
ZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQorICAg
IHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVy
ID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJbnNwZWN0
b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsK
KyAgICBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsKICNlbmRpZgogfTsiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRl
ckFzeW5jQ29tbWFuZERlY2xhcmF0aW9uID0gKAotICAgICIiIiAgICAke2NsYXNzQW5kRXhwb3J0
TWFjcm99ICR7Y2FsbGJhY2tOYW1lfSA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgeworICAgICIiIiAgICAke2NsYXNzQW5kRXhwb3J0
TWFjcm99ICR7Y2FsbGJhY2tOYW1lfSA6IHB1YmxpYyBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgICR7Y2FsbGJhY2tOYW1lfShSZWY8SW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKKyAgICAgICAgJHtj
YWxsYmFja05hbWV9KFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKICAgICAgICAg
dm9pZCBzZW5kU3VjY2Vzcygke291dFBhcmFtZXRlcnN9KTsKICAgICB9OwogICAgIHZpcnR1YWwg
dm9pZCAke2NvbW1hbmROYW1lfSgke2luUGFyYW1ldGVyc30pID0gMDsiIiIpCiAKICAgICBCYWNr
ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uU21hbGxTd2l0Y2ggPSAoCi0gICAgIiIidm9pZCBJ
bnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdl
KQorICAgICIiInZvaWQgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChs
b25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYg
bWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogJHtkaXNwYXRjaENhc2VzfQogICAgIGVsc2UKLSAgICAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycs
ICIke2RvbWFpbk5hbWV9IiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFj
a2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcXCcnLCAiJHtkb21h
aW5OYW1lfSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwogfSIiIikKIAogICAg
IEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25MYXJnZVN3aXRjaCA9ICgKLSIiInZvaWQg
SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNh
bGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2Fn
ZSkKKyIiInZvaWQgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVz
c2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVy
PiBwcm90ZWN0KCp0aGlzKTsKIAotICAgIHR5cGVkZWYgdm9pZCAoSW5zcGVjdG9yJHtkb21haW5O
YW1lfUJhY2tlbmREaXNwYXRjaGVyOjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdHlwZWRlZiB2b2lkICgk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgQ2FsbEhhbmRsZXI+IERpc3BhdGNoTWFwOwogICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChEaXNwYXRjaE1hcCwgZGlzcGF0Y2hNYXAsICgpKTsKICAgICBpZiAoZGlzcGF0
Y2hNYXAuaXNFbXB0eSgpKSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgJHtkaXNwYXRjaENhc2VzfQog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPjo6aXRlcmF0b3IgaXQgPSBkaXNwYXRj
aE1hcC5maW5kKG1ldGhvZCk7CiAgICAgaWYgKGl0ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Ci0g
ICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdc
XCcnLCAiJHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwor
ICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQs
IEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXFwnJywgIiR7
ZG9tYWluTmFtZX0iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTYyLDEzICsxNjIsMTMgQEAgJHtkaXNwYXRjaENhc2VzfQog
fSIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25Eb21haW5Db25zdHJ1
Y3RvciA9ICgKLSAgICAiIiJSZWY8SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyPiBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvciR7ZG9t
YWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQorICAgICIiIlJlZjwke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgJHtkb21haW5O
YW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5k
RGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1J
bnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3RvciR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2Vu
ZERpc3BhdGNoZXIsIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIo
YmFja2VuZERpc3BhdGNoZXIpCiske2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OiR7ZG9t
YWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3Bh
dGNoZXIsICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQorICAg
IDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCiAgICAg
LCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0xODQsMTUgKzE4
NCwxNSBAQCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcgogJHtpblBhcmFtZXRlckRlY2xhcmF0aW9u
c30KICAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0aCgpKSB7CiAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kIFwn
JXNcJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiJHtkb21haW5OYW1lfS4ke2NvbW1hbmROYW1lfSIp
OwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3Nh
Z2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpJbnZh
bGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogIiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkFzeW5jQ29tbWFuZCA9ICgKLSIiIkluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFja05hbWV9KFJlZjxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEY6
Om1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CisiIiIke2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjoke2NhbGxiYWNrTmFtZX06OiR7Y2FsbGJhY2tOYW1lfShSZWY8
QmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlk
KSB7IH0KIAotdm9pZCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjoke2NhbGxiYWNrTmFtZX06OnNlbmRTdWNjZXNzKCR7Zm9ybWFsUGFyYW1ldGVyc30pCit2
b2lkICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiR7Y2FsbGJhY2tOYW1l
fTo6c2VuZFN1Y2Nlc3MoJHtmb3JtYWxQYXJhbWV0ZXJzfSkKIHsKICAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAke291dFBh
cmFtZXRlckFzc2lnbm1lbnRzfQpAQCAtMjAwLDI2ICsyMDAsMjYgQEAgJHtvdXRQYXJhbWV0ZXJB
c3NpZ25tZW50c30KIH0iIiIpCiAKICAgICBGcm9udGVuZERpc3BhdGNoZXJEb21haW5EaXNwYXRj
aGVyRGVjbGFyYXRpb24gPSAoCi0iIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99IEluc3BlY3RvciR7
ZG9tYWluTmFtZX1Gcm9udGVuZERpc3BhdGNoZXIgeworIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3Jv
fSAke2RvbWFpbk5hbWV9RnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBJbnNwZWN0
b3Ike2RvbWFpbk5hbWV9RnJvbnRlbmREaXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CisgICAgJHtkb21haW5OYW1lfUZyb250ZW5k
RGlzcGF0Y2hlcihGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkgOiBtX2Zyb250ZW5k
Q2hhbm5lbChmcm9udGVuZENoYW5uZWwpIHsgfQogJHtldmVudERlY2xhcmF0aW9uc30KIHByaXZh
dGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwogfTsiIiIpCiAK
ICAgICBQcm90b2NvbE9iamVjdEJ1aWxkZXJEZWNsYXJhdGlvblByZWx1ZGUgPSAoCiAiIiIgICAg
dGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRl
PGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RF
UD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qJHtvYmplY3RU
eXBlfSovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWls
ZGVyKFJlZjwvKiR7b2JqZWN0VHlwZX0qL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAg
ICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVk
X2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTIzMiw5ICsyMzIsOSBAQCBwcml2YXRlOgogICAgICAg
ICBSZWY8JHtvYmplY3RUeXBlfT4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7
Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJHtvYmplY3RUeXBlfSkgPT0gc2l6
ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCR7b2JqZWN0VHlwZX0pID09IHNpemVvZihJbnNwZWN0
b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAg
ICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25O
dWxsKCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJl
Zjwke29iamVjdFR5cGV9Pio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC0yNDUs
MTkgKzI0NSwxOSBAQCAke2NvbnN0cnVjdG9yRXhhbXBsZX0KICAgICAgKi8KICAgICBzdGF0aWMg
QnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWls
ZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwor
ICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKSk7CiAgICAgfSIiIikKIAogICAgIFByb3RvY29sT2JqZWN0UnVudGltZUNhc3QgPSAoCi0i
IiJSZWZQdHI8JHtvYmplY3RUeXBlfT4gQmluZGluZ1RyYWl0czwke29iamVjdFR5cGV9Pjo6cnVu
dGltZUNhc3QoUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+JiYgdmFsdWUpCisiIiJS
ZWZQdHI8JHtvYmplY3RUeXBlfT4gQmluZGluZ1RyYWl0czwke29iamVjdFR5cGV9Pjo6cnVudGlt
ZUNhc3QoUmVmUHRyPEluc3BlY3RvclZhbHVlPiYmIHZhbHVlKQogewotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0OworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3VsdDsKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3QocmVz
dWx0KTsKICAgICBBU1NFUlRfVU5VU0VEKGNhc3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBCaW5kaW5nVHJhaXRzPCR7b2JqZWN0VHlwZX0+Ojph
c3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShyZXN1bHQuZ2V0KCkpOwogI2VuZGlmICAvLyAhQVNT
RVJUX0RJU0FCTEVECi0gICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCR7b2JqZWN0VHlwZX0pID09
IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxl
bSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7b2JqZWN0VHlwZX0qPihzdGF0aWNfY2FzdDxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UqPihyZXN1bHQuZ2V0KCkpKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChzaXplb2YoJHtvYmplY3RUeXBlfSkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVj
dEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7b2Jq
ZWN0VHlwZX0qPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3RCYXNlKj4ocmVzdWx0LmdldCgp
KSk7CiB9CiAiIiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CmluZGV4IGEyNDFjNTMwNmE0MjEy
NzMzNTNiMDA1Yzg1MDZmODQ4ZjU5Mjk0MzguLjIzZTdkOTk3M2M2ZjIwN2RiOTQyODM1M2Y3N2U0
MDJjM2RkZDE3MTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CkBAIC04Miw3ICs4Miw3IEBA
IGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAg
ICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBwZW5kKCcjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpJykKICAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21h
aW5zOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYud3JhcF93aXRoX2d1YXJkX2Zvcl9k
b21haW4oZG9tYWluLCAnY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yJXNCYWNrZW5kRGlzcGF0Y2hl
cjsnICUgZG9tYWluLmRvbWFpbl9uYW1lKSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxm
LndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ2NsYXNzIEFsdGVybmF0ZSVzQmFj
a2VuZERpc3BhdGNoZXI7JyAlIGRvbWFpbi5kb21haW5fbmFtZSkpCiAgICAgICAgIGxpbmVzLmFw
cGVuZCgnI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKScp
CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKQEAgLTE5Nyw0ICsxOTcsNCBAQCBj
bGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAg
ICAgICByZXR1cm4gc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sIFRlbXBs
YXRlKENwcFRlbXBsYXRlcy5CYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkRpc3BhdGNoZXJE
ZWNsYXJhdGlvbikuc3Vic3RpdHV0ZShOb25lLCAqKmhhbmRsZXJfYXJncykpCiAKICAgICBkZWYg
X2dlbmVyYXRlX2Rpc3BhdGNoZXJfZGVjbGFyYXRpb25fZm9yX2NvbW1hbmQoc2VsZiwgY29tbWFu
ZCk6Ci0gICAgICAgIHJldHVybiAiICAgIHZvaWQgJXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsiICUgY29tbWFuZC5jb21tYW5kX25hbWUK
KyAgICAgICAgcmV0dXJuICIgICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiBtZXNzYWdlKTsiICUgY29tbWFuZC5jb21tYW5kX25hbWUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDU4MmRlNGI0YTRjYWRiYWNhYmZmOTJkMGZj
MzFjOTBlOTMxNjQxYTEuLjY2YWFiZTQ0ZGQyNGZjZDZlMGQ2MTg3NzdkN2E0NGFiN2UwODczNWIg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtNTYsNyArNTYs
NyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgIHNlY29uZGFyeV9pbmNsdWRlcyA9IFsnI2luY2x1ZGUgJXMnICUg
aGVhZGVyIGZvciBoZWFkZXIgaW4gc2Vjb25kYXJ5X2hlYWRlcnNdCiAgICAgICAgIHNlY29uZGFy
eV9pbmNsdWRlcy5hcHBlbmQoJycpCiAgICAgICAgIHNlY29uZGFyeV9pbmNsdWRlcy5hcHBlbmQo
JyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyknKQotICAgICAgICBz
ZWNvbmRhcnlfaW5jbHVkZXMuYXBwZW5kKCcjaW5jbHVkZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgiJykKKyAgICAgICAgc2Vjb25kYXJ5X2luY2x1ZGVzLmFwcGVuZCgn
I2luY2x1ZGUgIkluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiJykKICAg
ICAgICAgc2Vjb25kYXJ5X2luY2x1ZGVzLmFwcGVuZCgnI2VuZGlmJykKIAogICAgICAgICBoZWFk
ZXJfYXJncyA9IHsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBkZXN0cnVjdG9yX2Fy
Z3MgPSB7CiAgICAgICAgICAgICAnZG9tYWluTmFtZSc6IGRvbWFpbi5kb21haW5fbmFtZQogICAg
ICAgICB9Ci0gICAgICAgIGRlc3RydWN0b3IgPSAnSW5zcGVjdG9yJShkb21haW5OYW1lKXNCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNw
YXRjaGVySGFuZGxlcigpIHsgfScgJSBkZXN0cnVjdG9yX2FyZ3MKKyAgICAgICAgZGVzdHJ1Y3Rv
ciA9ICclKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fiUoZG9tYWluTmFt
ZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9JyAlIGRlc3RydWN0b3JfYXJncwogICAg
ICAgICByZXR1cm4gc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sIGRlc3Ry
dWN0b3IpCiAKICAgICBkZWYgX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25zX2Zv
cl9kb21haW4oc2VsZiwgZG9tYWluKToKQEAgLTEyMyw3ICsxMjMsNyBAQCBjbGFzcyBDcHBCYWNr
ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAg
ICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCiAgICAgICAgICAgICAg
ICAgJ2NvbW1hbmROYW1lJzogY29tbWFuZC5jb21tYW5kX25hbWUKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNhc2VzLmFwcGVuZCgnICAgICAgICAgICAgeyAiJShjb21tYW5kTmFtZSlzIiwg
Jkluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUp
cyB9LCcgJSBhcmdzKQorICAgICAgICAgICAgY2FzZXMuYXBwZW5kKCcgICAgICAgICAgICB7ICIl
KGNvbW1hbmROYW1lKXMiLCAmJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShjb21t
YW5kTmFtZSlzIH0sJyAlIGFyZ3MpCiAKICAgICAgICAgc3dpdGNoX2FyZ3MgPSB7CiAgICAgICAg
ICAgICAnZG9tYWluTmFtZSc6IGRvbWFpbi5kb21haW5fbmFtZSwKQEAgLTE5Miw3ICsxOTIsNyBA
QCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVy
YXRvcik6CiAgICAgICAgICAgICAgICAgJ3N1Y2Nlc3NPdXRQYXJhbSc6IG91dF9zdWNjZXNzX2Fy
Z3VtZW50CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGluX3BhcmFtZXRlcl9kZWNsYXJh
dGlvbnMuYXBwZW5kKCcgICAgJShwYXJhbWV0ZXJUeXBlKXMgaW5fJShwYXJhbWV0ZXJOYW1lKXMg
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6JShrZXllZEdldE1ldGhvZClzKHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCAlKHN1Y2Nl
c3NPdXRQYXJhbSlzLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7JyAlIHBhcmFtX2FyZ3MpCisgICAg
ICAgICAgICBpbl9wYXJhbWV0ZXJfZGVjbGFyYXRpb25zLmFwcGVuZCgnICAgICUocGFyYW1ldGVy
VHlwZSlzIGluXyUocGFyYW1ldGVyTmFtZSlzID0gQmFja2VuZERpc3BhdGNoZXI6OiUoa2V5ZWRH
ZXRNZXRob2QpcyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0
ZXJOYW1lKXMiKSwgJShzdWNjZXNzT3V0UGFyYW0pcywgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOycg
JSBwYXJhbV9hcmdzKQogCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CiAg
ICAgICAgICAgICAgICAgb3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZyA9ICclKHBhcmFtZXRl
ck5hbWUpc192YWx1ZUZvdW5kID8gJShwYXJhbWV0ZXJFeHByZXNzaW9uKXMgOiBudWxscHRyJyAl
IHBhcmFtX2FyZ3MKQEAgLTIwOSw3ICsyMDksNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hl
ckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGNhbGxi
YWNrLT5kaXNhYmxlKCk7JykKLSAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMu
YXBwZW5kKCcgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3Io
JmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJy
b3IsIGVycm9yKTsnKQorICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBl
bmQoJyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2Fs
bElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTsnKQogICAgICAgICAg
ICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgcmV0dXJuOycpCiAg
ICAgICAgICAgICBtZXRob2RfcGFyYW1ldGVycy5hcHBlbmQoJ2NhbGxiYWNrLmNvcHlSZWYoKScp
CiAKQEAgLTI1MSw5ICsyNTEsOSBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAgICAgICAgbGluZXMgPSBbXQogICAgICAg
ICBpZiBsZW4oY29tbWFuZC5jYWxsX3BhcmFtZXRlcnMpID09IDA6Ci0gICAgICAgICAgICBsaW5l
cy5hcHBlbmQoJ3ZvaWQgSW5zcGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6
JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKScgJSBj
b21tYW5kX2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJShkb21haW5OYW1l
KXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmKScgJSBjb21tYW5kX2FyZ3MpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgSW5zcGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5kRGlz
cGF0Y2hlcjo6JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmpl
Y3QmIG1lc3NhZ2UpJyAlIGNvbW1hbmRfYXJncykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
dm9pZCAlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVyOjolKGNvbW1hbmROYW1lKXMobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSknICUgY29tbWFuZF9hcmdz
KQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQogCiAgICAgICAgIGlmIGxlbihjb21tYW5kLmNh
bGxfcGFyYW1ldGVycykgPiAwOgpAQCAtMjcwLDcgKzI3MCw3IEBAIGNsYXNzIENwcEJhY2tlbmRE
aXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgRXJyb3JTdHJpbmcgZXJyb3I7JykKICAgICAgICAgbGluZXMuYXBwZW5k
KCcgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsnKQogICAgICAgICBpZiBjb21tYW5kLmlzX2FzeW5jOgotICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgUmVmPEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjolKGNhbGxiYWNrTmFtZSlzPiBjYWxsYmFjayA9IGFkb3B0UmVmKCpuZXcgSW5zcGVj
dG9yJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiUoY2FsbGJhY2tOYW1l
KXMobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOycgJSBjb21tYW5kX2Fy
Z3MpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBSZWY8JShkb21haW5OYW1lKXNCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiUoY2FsbGJhY2tOYW1lKXM+IGNhbGxiYWNrID0gYWRvcHRS
ZWYoKm5ldyAlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JShjYWxsYmFj
a05hbWUpcyhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7JyAlIGNvbW1h
bmRfYXJncykKICAgICAgICAgaWYgbGVuKGNvbW1hbmQucmV0dXJuX3BhcmFtZXRlcnMpID4gMDoK
ICAgICAgICAgICAgIGxpbmVzLmV4dGVuZChvdXRfcGFyYW1ldGVyX2RlY2xhcmF0aW9ucykKICAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgbV9hZ2VudC0+JShjb21tYW5kTmFtZSlzKCUoaW52b2Nh
dGlvblBhcmFtZXRlcnMpcyk7JyAlIGNvbW1hbmRfYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9u
dGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggYmRiOGRiYzI3YzM4MTQ3MDVjYzBkMGZmMjQ0Yjc5
YWRiMzVjMmU1MS4uNzk4MTU3YTA2MDg5ZTUyMzI4NWMzZDRiZjFmYTBhZDcxMTE2ZWIzZSAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEwNSw3ICsxMDUs
NyBAQCBjbGFzcyBDcHBGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICAgICAgICAgJ2Zvcm1hbFBhcmFtZXRlcnMnOiAiLCAiLmpvaW4oZm9y
bWFsX3BhcmFtZXRlcnMpCiAgICAgICAgIH0KIAotICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQg
SW5zcGVjdG9yJShkb21haW5OYW1lKXNGcm9udGVuZERpc3BhdGNoZXI6OiUoZXZlbnROYW1lKXMo
JShmb3JtYWxQYXJhbWV0ZXJzKXMpJyAlIGV2ZW50X2FyZ3MpCisgICAgICAgIGxpbmVzLmFwcGVu
ZCgndm9pZCAlKGRvbWFpbk5hbWUpc0Zyb250ZW5kRGlzcGF0Y2hlcjo6JShldmVudE5hbWUpcygl
KGZvcm1hbFBhcmFtZXRlcnMpcyknICUgZXZlbnRfYXJncykKICAgICAgICAgbGluZXMuYXBwZW5k
KCd7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgUmVmPEluc3BlY3Rvck9iamVjdD4ganNv
bk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOycpCiAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwg
QVNDSUlMaXRlcmFsKCIlKGRvbWFpbk5hbWUpcy4lKGV2ZW50TmFtZSlzIikpOycgJSBldmVudF9h
cmdzKQpAQCAtMTE2LDYgKzExNiw2IEBAIGNsYXNzIENwcEZyb250ZW5kRGlzcGF0Y2hlckltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURjo6
bW92ZShwYXJhbXNPYmplY3QpKTsnKQogCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNz
YWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOycpCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQo
anNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ30n
KQogICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNr
ZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVy
LnB5CmluZGV4IDI5YjM4ZTg4NzE4ZDlmNTg4YjIyMjRmNjVmMGUyNWY2ZTA0OWVmMDUuLjZlYTky
ODJhOGU4YTBjZjc0ZDgwMmI0NzBkMmY4YjliOWQ4NWY2YjAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFj
a2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9o
ZWFkZXIucHkKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgT2JqQ0JhY2tlbmREaXNwYXRjaGVySGVh
ZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYp
OgogICAgICAgICBoZWFkZXJzID0gWwotICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4nLAorICAgICAgICAgICAgJzxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPicsCiAg
ICAgICAgICAgICAnPHd0Zi9SZXRhaW5QdHIuaD4nLAogICAgICAgICBdCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X29iamNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmlndXJhdGlv
bl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCA1MzIwNWNiOWRjZTczODdjOTRlNWFjMjZkYWE1MWJi
MDY4NDM4OWYwLi40NzM1YTBhM2QyODg0MGMwZWZhYjQwZWIwOTk1ZGJlMDY3ZmQ3YmJmIDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19j
b25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5CkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIE9i
akNCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAg
ICAgICAgICAgICAnIiVzQmFja2VuZERpc3BhdGNoZXJzLmgiJyAlIE9iakNHZW5lcmF0b3IuT0JK
Q19QUkVGSVgsCiAgICAgICAgICAgICAnPEphdmFTY3JpcHRDb3JlL0FsdGVybmF0ZURpc3BhdGNo
YWJsZUFnZW50Lmg+JywKICAgICAgICAgICAgICc8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyLmg+JywKLSAgICAgICAgICAgICc8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+JywKKyAgICAgICAgICAgICc8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4nLAog
ICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMu
aD4nLAogICAgICAgICBdCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9p
bXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlv
bi5weQppbmRleCA2ZDUyMDFmMDcyN2NiMzRiYjY0NDc3NjRjY2YwMjhhOTRmMzZjNTAyLi43ODI2
MTU3MWM1M2Y1ZmY0MzFhYjk3OWU2N2Y2YjI4ZmY2N2NiMGVhIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zy
b250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIE9iakNG
cm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAg
ICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9ldmVu
dF9zaWduYXR1cmUoZG9tYWluLCBldmVudCkpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCi0g
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOycpCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7JykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgICAgIHJldHVybjsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJycpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3lu
Yy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggY2ZmOTg5ZTE2MTg4YWE0NDA3M2I5YjViOWEz
ZmIzNjRkNjViMzRlZi4uYjBiYjZiNGRlY2IzNDZkMzVmZTRmODFkMTM4MmIwY2ViN2FlZTllMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMSw0ICsxLDQgQEAK
LSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAor
IyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCkBAIC0yOSw4ICsyOSw4IEBACiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1
dGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZu
ZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5lIEluc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjaWZuZGVmIEluc3BlY3Rvcl9BbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQogCkBAIC0zOSwxOCArMzksMTggQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNw
YXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0
Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hl
ci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgOiBw
dWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZpcnR1YWwg
fkFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2
aXJ0dWFsIH5BbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQs
IGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElk
LCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgaW50IGluX2RhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpID0gMDsKQEAgLTYxLDggKzYxLDggQEAgcHVibGljOgog
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLSNl
bmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkK
LSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyNl
bmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gp
CisjIyMgRW5kIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgK
IAogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKQEAgLTE0
OCwxMCArMTQ4LDEwIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
LWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7CitjbGFz
cyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1ldGVyICdzY3Jl
ZW5Db2xvcicgd2hpbGUgZ2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGV4ZWN1dGVTUUxTeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXMuCiAgICAgZW51bSBjbGFzcyBTY3JlZW5Db2xvciB7CkBAIC0xNjYs
NDEgKzE2Niw0MSBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJsYWNr
ID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFs
dWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGlu
dD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciog
b3B0X291dF9wcmludENvbG9yKSA9IDA7Ci0gICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5jT3B0aW9u
YWxSZXR1cm5WYWx1ZXNDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgeworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FM
U3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQs
IGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0
T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0
X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291
dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1h
cnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3Ip
ID0gMDsKKyAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxi
YWNrIDogcHVibGljIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhS
ZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKKyAg
ICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8QmFj
a2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7CiAgICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBheWxv
YWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9y
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3IpOwog
ICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVl
cnksIFJlZjxFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiYmIGNh
bGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3RyaW5n
JiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcq
IG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQs
IGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9y
KSA9IDA7Ci0gICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsKKyAgICB2aXJ0
dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91
dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNw
ZWN0b3I6Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRf
YWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNv
bG9ycyogb3V0X3NjcmVlbkNvbG9yLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICBjbGFzcyBFeGVjdXRlU1FMQXN5
bmNDYWxsYmFjayA6IHB1YmxpYyBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICBFeGVjdXRl
U1FMQXN5bmNDYWxsYmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7CiAgICAg
ICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4+JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3Rh
bXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IHZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xv
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0
ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpOwogICAgIH07CiAgICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luYyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlk
LCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWY8RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVu
dGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBm
aW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUo
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxv
bmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
IG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBt
ZXNzYWdlKTsKLSAgICB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0g
ICAgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9p
ZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgZXhlY3V0ZVNRTEFzeW5jT3B0aW9u
YWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2Fn
ZSk7CisgICAgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVTUUxBc3luYyhsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyJiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAg
ICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKKyAg
ICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRl
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikg
eyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CisgICAgdm9p
ZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgQWx0ZXJuYXRl
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwogI2VuZGlm
CiB9OwogCkBAIC0yNDgsMjAgKzI0OCwyMCBAQCBwcml2YXRlOgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQotI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2lu
Y2x1ZGUgIkluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjZW5kaWYK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIo
KSB7IH0KK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+RGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KIAotUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI+IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyPiBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNo
ZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6Oklu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OkRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVy
LCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQo
YWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAg
LCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTI3MCw5ICsyNzAsOSBAQCBJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3RvcgogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyRGlz
cGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksIHRoaXMpOwogfQogCi12
b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdl
KQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKIHsK
LSAgICBSZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOwog
CiAgICAgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIp
CiAgICAgICAgIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoY2FsbElkLCBtZXNz
YWdlKTsKQEAgLTI4MywxOSArMjgzLDE5IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0CiAgICAg
ZWxzZSBpZiAobWV0aG9kID09ICJleGVjdXRlU1FMQXN5bmMiKQogICAgICAgICBleGVjdXRlU1FM
QXN5bmMoY2FsbElkLCBtZXNzYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJEYXRhYmFzZSIsICcuJywg
bWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2RO
b3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2Fz
IG5vdCBmb3VuZCIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3RvY29sRXJyb3JzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3NhZ2UuZ2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtc0NvbnRhaW5lcik7Ci0gICAgaW50IGluX2Rh
dGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXND
b250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGludCBpbl9k
YXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVy
LmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9xdWVyeSA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRT
dHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxw
dHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0
aCgpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiU29t
ZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIkRhdGFiYXNl
LmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMiKTsKLSAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9j
b2xFcnJvcnMpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xF
cnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNz
YWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nCiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5D
b2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKKyAgICBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKICAgICBt
X2FnZW50LT5leGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGVycm9yLCBpbl9kYXRh
YmFzZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVz
dGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxF
cnJvciwgJm91dF9zY3JlZW5Db2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgJm91dF9wcmludENv
bG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKQEAgLTM0NSw5ICszNDUsOSBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXMobG9uZwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNw
b25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLUluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJl
dHVyblZhbHVlc0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0Nh
bGxiYWNrKFJlZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hl
ciwgaW50IGlkKSA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZShXVEY6Om1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CitEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhS
ZWY8QmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlciks
IGlkKSB7IH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nl
c3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFt
ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4q
IHBheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9y
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0
ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29s
b3IpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcGF5bG9hZCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKIHsKICAgICBSZWY8
SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgaWYgKGNvbHVtbk5hbWVzKQpAQCAtMzczLDE2ICszNzMsMTYgQEAgdm9pZCBJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9u
YWxSZXR1cm5WYWwKICAgICBzZW5kSWZBY3RpdmUoV1RGOjptb3ZlKGpzb25NZXNzYWdlKSwgRXJy
b3JTdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3RvY29sRXJyb3JzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3NhZ2UuZ2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtc0NvbnRhaW5lcik7Ci0gICAgaW50IGluX2Rh
dGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXND
b250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGludCBpbl9k
YXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVy
LmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9xdWVyeSA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRT
dHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxw
dHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0
aCgpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiU29t
ZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIkRhdGFiYXNl
LmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzIik7Ci0gICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3Rv
Y29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVz
c2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTM5NSwyNiArMzk1LDI2IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uCiAKICAgICBF
cnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxs
YmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxi
YWNrKG1fYmFja2VuZERpc3BhdGNoZXIuY29weVJlZigpLCBjYWxsSWQpKTsKKyAgICBSZWY8RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzQ2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoKm5ldyBEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXND
YWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7CiAgICAgbV9h
Z2VudC0+ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoZXJyb3IsIGluX2RhdGFi
YXNlSWQsIGluX3F1ZXJ5LCBjYWxsYmFjay5jb3B5UmVmKCkpOwogCiAgICAgaWYgKGVycm9yLmxl
bmd0aCgpKSB7CiAgICAgICAgIGNhbGxiYWNrLT5kaXNhYmxlKCk7Ci0gICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTsKKyAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlz
cGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0K
IAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3lu
Yyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQordm9pZCBEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQogewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3Qo
QVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgcGFyYW1zQ29udGFpbmVyKTsKLSAgICBpbnQgaW5fZGF0
YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKLSAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFs
KCJxdWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2Rh
dGFiYXNlSWQgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIu
Z2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9y
cy5nZXQoKSk7CisgICAgU3RyaW5nIGluX3F1ZXJ5ID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0
cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0
ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3Ro
KCkpIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21l
IGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2Uu
ZXhlY3V0ZVNRTFN5bmMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJv
dG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBh
cmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKKyAgICAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5k
RGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9j
b2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDM2LDcgKzQzNiw3IEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xv
cjsKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRD
b2xvciBvdXRfcHJpbnRDb2xvcjsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKICAgICBtX2FnZW50LT5leGVjdXRlU1FMU3lu
YyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5OYW1lcywgJm91dF9u
b3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRh
YmFzZUlkLCBvdXRfc3FsRXJyb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMsICZvdXRfc2NyZWVuQ29s
b3IsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CkBAIC00
NTQsOSArNDU0LDkgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpl
eGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGUKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwog
fQogCi1JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNR
TEFzeW5jQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEY6Om1vdmUoYmFja2Vu
ZERpc3BhdGNoZXIpLCBpZCkgeyB9CitEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxCYWNr
ZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsg
fQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVj
dXRlU1FMQXN5bmNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRv
dWJsZSB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IHZhbHVlcywgSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5n
JiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCit2b2lk
IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFj
azo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+
JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IHZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5Db2xvciwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRl
Q29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCiB7CiAgICAgUmVmPEluc3BlY3Rvck9i
amVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGpzb25N
ZXNzYWdlLT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIGNvbHVtbk5hbWVz
KTsKQEAgLTQ3MiwxNiArNDcyLDE2IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpzZW5kU3VjCiAgICAgc2Vu
ZElmQWN0aXZlKFdURjo6bW92ZShqc29uTWVzc2FnZSksIEVycm9yU3RyaW5nKCkpOwogfQogCi12
b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQordm9pZCBEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IElu
c3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3RvY29sRXJyb3JzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3NhZ2UuZ2V0T2JqZWN0KEFT
Q0lJTGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtc0NvbnRhaW5lcik7Ci0gICAgaW50IGluX2RhdGFi
YXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2Nv
bEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgi
cXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGludCBpbl9kYXRh
YmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMu
Z2V0KCkpOworICAgIFN0cmluZyBpbl9xdWVyeSA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJp
bmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0aCgp
KSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiU29tZSBh
cmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIkRhdGFiYXNlLmV4
ZWN1dGVTUUxBc3luYyIpOwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90
b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFy
YW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmRE
aXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2Nv
bEVycm9ycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00OTQsMTIgKzQ5NCwxMiBA
QCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3lu
Yyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcAogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAg
UmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
LSAgICBSZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1
dGVTUUxBc3luY0NhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKG1f
YmFja2VuZERpc3BhdGNoZXIuY29weVJlZigpLCBjYWxsSWQpKTsKKyAgICBSZWY8RGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrPiBjYWxsYmFj
ayA9IGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1
dGVTUUxBc3luY0NhbGxiYWNrKG1fYmFja2VuZERpc3BhdGNoZXIuY29weVJlZigpLCBjYWxsSWQp
KTsKICAgICBtX2FnZW50LT5leGVjdXRlU1FMQXN5bmMoZXJyb3IsIGluX2RhdGFiYXNlSWQsIGlu
X3F1ZXJ5LCBjYWxsYmFjay5jb3B5UmVmKCkpOwogCiAgICAgaWYgKGVycm9yLmxlbmd0aCgpKSB7
CiAgICAgICAgIGNhbGxiYWNrLT5kaXNhYmxlKCk7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTsKKyAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6
U2VydmVyRXJyb3IsIGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTY4NCwx
NCArNjg0LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3Mg
QnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9y
ZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQ
PiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAg
ICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2Jq
ZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2Jq
ZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAg
ewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxk
ZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC03MTYsOSArNzE2LDkgQEAgcHVibGlj
OgogICAgICAgICBSZWY8RXJyb3I+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkp
OwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01Q
SUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5u
b3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxFcnJvcj4qPigmcmVz
dWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNzMyLDcgKzczMiw3IEBAIHB1YmxpYzoKICAg
ICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtODQwLDcgKzg0MCw3IEBA
IFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdp
dGgtYXN5bmMtYXR0cmlidXRlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBAcHJvdG9jb2wgUldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI7CkBAIC05MDEs
NyArOTAxLDcgQEAgcHJpdmF0ZToKICNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNo
ZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNv
bi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CmluZGV4IDkwNTg3MTA5OGU0NzVhMzljYTZmOTA2ZDU1NTYwZjgwOTk0ZDcxMTQu
LmVkZGFiMmE1N2JjYzBkOTUyZjI1Y2FhZjNkNTJlY2YyZjkxMmNhNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dApAQCAtMSw0ICsxLDQgQEAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSw4ICsyOSw4IEBACiAvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMt
d2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
X2gKKyNkZWZpbmUgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIApAQCAtMzksMTggKzM5
LDE4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7
CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0g
V1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNw
YXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShk
aXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07
CiAKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciA6
IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRl
cm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29u
c3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGlu
X3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVl
bkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRl
cm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVu
Q29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVy
bmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSA9IDA7CiB9OwpAQCAtNTks
OCArNTksOCBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvcl9BbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENv
bW1hbmRzLmpzCiAvKgpAQCAtMTQzLDEwICsxNDMsMTAgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLWNs
YXNzIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICAvLyBOYW1lZCBh
ZnRlciBwYXJhbWV0ZXIgJ3NjcmVlbkNvbG9yJyB3aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZl
bnQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycy4KICAgICBlbnVtIGNsYXNzIFNjcmVlbkNv
bG9yIHsKQEAgLTE2MSwyNyArMTYxLDI3IEBAIHB1YmxpYzoKICAgICAgICAgWWVsbG93ID0gNSwK
ICAgICAgICAgQmxhY2sgPSA2LAogICAgIH07IC8vIGVudW0gY2xhc3MgUHJpbnRDb2xvcgotICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFi
YXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxF
cnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGlu
X3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYg
b3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmlu
Zz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+
KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2Fk
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9z
cWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9w
dF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3Ry
aW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1u
TmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3Ry
aW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVz
LCBTdHJpbmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0
X3BheWxvYWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9w
cmludENvbG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFt
ZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91Ymxl
KiBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
JiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxvYWQs
IGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xv
cnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRfb3V0X3ZhbHVl
cywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+
KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywg
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJp
bnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnMoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4m
JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVz
dGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVl
cywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9y
LCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJp
bnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvdXRf
Y29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRl
Q29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0
X3ByaW50Q29sb3IpID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVh
dGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8RGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFt
ZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNz
YWdlKTsKLSAgICB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgZXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2Jq
ZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZhdGU6Ci0gICAg
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIqKTsKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9h
Z2VudDsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwg
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIo
QWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlz
cGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9
CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZURhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVy
ID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAg
QWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVy
OwogI2VuZGlmCiB9OwogCkBAIC0yMjksMjAgKzIyOSwyMCBAQCBwcml2YXRlOgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQotI2luY2x1ZGUgIkluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
cy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgi
CiAjZW5kaWYKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIoKSB7IH0KK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+RGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KIAotUmVmPEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyPiBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2Vu
ZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK0RhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmRE
aXNwYXRjaGVyLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAg
OiBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAs
IG1fYWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlMpCiAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTI1MSw0NiArMjUx
LDQ2IEBAIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+
cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgdGhp
cyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0
Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0
PiYmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxv
bmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBt
ZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVj
dCgqdGhpcyk7CiAKICAgICBpZiAobWV0aG9kID09ICJleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzIikKICAgICAgICAgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIG1lc3Nh
Z2UpOwogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
IikKICAgICAgICAgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGNhbGxJZCwgbWVzc2FnZSk7
CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVy
cm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwg
bWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3Vu
ZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigm
Y2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wn
JywgIkRhdGFiYXNlIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQor
dm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAg
YXV0byBwcm90b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46
OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsK
ICAgICBtZXNzYWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250
YWluZXIpOwogICAgIGJvb2wgY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJ
TGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgJmNvbHVtbk5hbWVzX3ZhbHVlRm91bmQsIHByb3RvY29s
RXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5f
Y29sdW1uTmFtZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVy
LmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksICZjb2x1bW5OYW1lc192YWx1ZUZv
dW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBub3Rlc192YWx1ZUZvdW5kID0g
ZmFsc2U7Ci0gICAgU3RyaW5nIGluX25vdGVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwg
Jm5vdGVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5f
bm90ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAmbm90ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOwogICAgIGJvb2wgdGltZXN0YW1wX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBpbl90aW1lc3RhbXAgPSBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgJnRpbWVzdGFtcF92YWx1ZUZvdW5kLCBwcm90b2Nv
bEVycm9ycy5nZXQoKSk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJs
ZT4gaW5fdGltZXN0YW1wID0gQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZ0aW1lc3RhbXBfdmFsdWVG
b3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgdmFsdWVzX3ZhbHVlRm91bmQg
PSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3ZhbHVl
cyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVy
LmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmdmFsdWVzX3ZhbHVlRm91bmQsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IGluX3ZhbHVlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVy
LmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmdmFsdWVzX3ZhbHVlRm91bmQsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHBheWxvYWRfdmFsdWVGb3VuZCA9IGZhbHNlOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBpbl9wYXlsb2FkID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVND
SUlMaXRlcmFsKCJwYXlsb2FkIiksICZwYXlsb2FkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3Jz
LmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5bG9h
ZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFT
Q0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAmcGF5bG9hZF92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9y
cy5nZXQoKSk7CiAgICAgYm9vbCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBp
bnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2Vy
KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZkYXRh
YmFzZUlkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBpbnQgaW5fZGF0
YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5n
ZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZkYXRhYmFzZUlkX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHNxbEVycm9yX3ZhbHVlRm91bmQgPSBm
YWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVycm9y
ID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIu
Z2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGluX3NxbEVycm9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVlRm91
bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHNjcmVlbkNvbG9yX3ZhbHVlRm91
bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFs
KCJzY3JlZW5Db2xvciIpLCAmc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMu
Z2V0KCkpOworICAgIFN0cmluZyBpbl9zY3JlZW5Db2xvciA9IEJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9y
IiksICZzY3JlZW5Db2xvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAg
Ym9vbCBhbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVy
YWwoImFsdGVybmF0ZUNvbG9ycyIpLCAmYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4g
aW5fYWx0ZXJuYXRlQ29sb3JzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgJmFsdGVybmF0
ZUNvbG9yc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBwcmlu
dENvbG9yX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fcHJpbnRDb2xvciA9IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgp
LCBBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgJnByaW50Q29sb3JfdmFsdWVGb3VuZCwgcHJv
dG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9wcmludENvbG9yID0gQmFja2VuZERp
c3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgi
cHJpbnRDb2xvciIpLCAmcHJpbnRDb2xvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQo
KSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAn
JXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzIik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJy
b3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVy
cm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNo
ZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3Jz
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIElu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFt
ZXRlcnMobG9uZyBjYWxsSQogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0gICAg
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0
X3ByaW50Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50
Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVycyhlcnJvciwgY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA/IGluX2NvbHVtbk5hbWVzLmNv
cHlSZWYoKSA6IG51bGxwdHIsIG5vdGVzX3ZhbHVlRm91bmQgPyAmaW5fbm90ZXMgOiBudWxscHRy
LCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA/ICZpbl90aW1lc3RhbXAgOiBudWxscHRyLCB2YWx1ZXNf
dmFsdWVGb3VuZCA/IGluX3ZhbHVlcy5jb3B5UmVmKCkgOiBudWxscHRyLCBwYXlsb2FkX3ZhbHVl
Rm91bmQgPyBpbl9wYXlsb2FkLmNvcHlSZWYoKSA6IG51bGxwdHIsIGRhdGFiYXNlSWRfdmFsdWVG
b3VuZCA/ICZpbl9kYXRhYmFzZUlkIDogbnVsbHB0ciwgc3FsRXJyb3JfdmFsdWVGb3VuZCA/IGlu
X3NxbEVycm9yLmNvcHlSZWYoKSA6IG51bGxwdHIsIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPyAm
aW5fc2NyZWVuQ29sb3IgOiBudWxscHRyLCBhbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA/IGlu
X2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCkgOiBudWxscHRyLCBwcmludENvbG9yX3ZhbHVlRm91
bmQgPyAmaW5fcHJpbnRDb2xvciA6IG51bGxwdHIsIG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3Rl
cywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFz
ZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMs
ICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CkBAIC0zNDAs
MjQgKzM0MCwyNCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSQogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQogewog
ICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNDb250YWlu
ZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgcGFyYW1z
Q29udGFpbmVyKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fY29s
dW1uTmFtZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29u
dGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIG51bGxwdHIsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKLSAgICBTdHJpbmcgaW5fbm90ZXMgPSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFs
KCJub3RlcyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgZG91YmxlIGlu
X3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBudWxscHRyLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBpbl92YWx1ZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgbnVsbHB0ciwgcHJvdG9j
b2xFcnJvcnMuZ2V0KCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBp
bl9wYXlsb2FkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG51bGxwdHIsIHByb3RvY29s
RXJyb3JzLmdldCgpKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFs
KCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVycm9yID0gSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0
ZXJhbCgic3FsRXJyb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0
cmluZyBpbl9zY3JlZW5Db2xvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJp
bmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIG51
bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRlcm5h
dGVDb2xvcnMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBp
bl9wcmludENvbG9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJh
bXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBudWxscHRyLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+IGluX2NvbHVtbk5hbWVzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBudWxscHRyLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3RyaW5nIGluX25vdGVzID0gQmFja2VuZERpc3BhdGNo
ZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgibm90ZXMi
KSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGRvdWJsZSBpbl90aW1lc3Rh
bXAgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0gQmFj
a2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0
ZXJhbCgidmFsdWVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5bG9hZCA9IEJhY2tlbmREaXNwYXRj
aGVyOjpnZXRWYWx1ZShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicGF5bG9h
ZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFiYXNl
SWQgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQo
KSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBpbl9zcWxFcnJvciA9
IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJ
SUxpdGVyYWwoInNxbEVycm9yIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAg
ICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXk+IGluX2FsdGVybmF0ZUNvbG9ycyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShw
YXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIG51
bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcHJpbnRDb2xvciA9
IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJ
SUxpdGVyYWwoInByaW50Q29sb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwog
ICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVzJyBj
YW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
Iik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNh
bGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVz
c2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6Oklu
dmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhs
b25nIGNhbGxJZAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJy
b3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0gICAgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50
Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Ig
b3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
KGVycm9yLCBpbl9jb2x1bW5OYW1lcy5jb3B5UmVmKCksIGluX25vdGVzLCBpbl90aW1lc3RhbXAs
IGluX3ZhbHVlcy5jb3B5UmVmKCksIGluX3BheWxvYWQuY29weVJlZigpLCBpbl9kYXRhYmFzZUlk
LCBpbl9zcWxFcnJvci5jb3B5UmVmKCksIGluX3NjcmVlbkNvbG9yLCBpbl9hbHRlcm5hdGVDb2xv
cnMuY29weVJlZigpLCBpbl9wcmludENvbG9yLCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMs
ICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJ
ZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAm
b3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewpAQCAtNTc3LDE0
ICs1NzcsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBC
dWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jl
c3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+
JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0
X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAg
ICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmpl
Y3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBvYmpl
Y3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7
CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRl
cl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTYwOSw5ICs2MDksOSBAQCBwdWJsaWM6
CiAgICAgICAgIFJlZjxFcnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7
Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5v
dF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZyZXN1
bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC02MjUsNyArNjI1LDcgQEAgcHVibGljOgogICAg
ICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC03MzMsNyArNzMzLDcgQEAg
U3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAvLyBETyBOT1QgRURJVCBU
SElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0
aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCiBAcHJvdG9jb2wgUldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkhh
bmRsZXI7CkBAIC03OTIsNyArNzkyLDcgQEAgcHJpdmF0ZToKICNpbXBvcnQgIlJXSVByb3RvY29s
QmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVz
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1
bHQKaW5kZXggYWVkMDNhMWFmYTU0YjgyM2FkODVhYTk5MGZmNTc1N2M3ZWZjYzliOC4uMzRjOTc2
NjU3N2UyMWZjOTE4MDI0OGZhYzY1ZDBjY2EyYTNkNDVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0
aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5
aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTEsNCArMSw0IEBACi0jIyMgQmVnaW4g
RmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBG
aWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAt
MjksOCArMjksOCBAQAogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIGRvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5lIEluc3BlY3RvckFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjaWZuZGVmIEluc3BlY3Rvcl9BbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzX2gKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQogCkBAIC0zOSwyMyArMzksMjMgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNz
IEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVy
KFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihS
ZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRj
aGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogfTsKIAogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyIHsKK2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMg
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgfkFsdGVy
bmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFs
IH5BbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQpID0gMDsKIH07Ci1jbGFzcyBBbHRlcm5hdGVJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgot
ICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIo
KSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMihsb25nIGNhbGxJZCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBsb2FkUmVzb3VyY2UzKGxvbmcgY2FsbElkKSA9IDA7CkBAIC02OSw4ICs2OSw4IEBA
IHB1YmxpYzoKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oCiAKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMK
IC8qCkBAIC0xNjEsMTggKzE2MSwxOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyOwotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjsK
K2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5h
dGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEoRXJyb3JTdHJpbmcm
KSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgeworY2xhc3MgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKEVycm9yU3RyaW5nJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UyKEVycm9yU3RyaW5nJikgPSAwOwpAQCAt
MTgyLDQ2ICsxODIsNDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U2
KEVycm9yU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U3KEVycm9y
U3RyaW5nJikgPSAwOwogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkluc3BlY3Rvck5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmlydHVhbCB+TmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CiAKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZp
bmFsIDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9u
ZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCBOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJ
ZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkg
b3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9h
ZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciogbV9hZ2VudDsKKyAgICBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEJhY2tl
bmREaXNwYXRjaGVyJiwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVy
bmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5h
dGVEaXNwYXRjaGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0
ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRl
cm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBB
bHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURp
c3BhdGNoZXI7CisgICAgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRl
cm5hdGVEaXNwYXRjaGVyOwogI2VuZGlmCiB9OwogCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPiBjcmVh
dGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8TmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxs
SWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lk
IGxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNv
dXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNz
YWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTYobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAg
ICB2b2lkIGxvYWRSZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2Uy
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQg
bG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdl
KTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9i
amVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlNihsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRS
ZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiBw
cml2YXRlOgotICAgIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5k
RGlzcGF0Y2hlciYsIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIq
IGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6Ci0gICAgQWx0
ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNw
YXRjaGVyOworICAgIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjY5LDIxICsyNjksMjEgQEAgcHJpdmF0
ZToKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLSNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3Rvck5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9Ci1JbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6fkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KCkgeyB9CitOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fk5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CitOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6fk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAKLVJlZjxJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCitS
ZWY8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBh
Z2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyOjpOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVy
JiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFn
ZW50KQorICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNo
ZXIpCiAgICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRF
X0RJU1BBVENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0y
OTIsMTcgKzI5MiwxNyBAQCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpJbnNw
ZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvcgogICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIk5ldHdv
cmsxIiksIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3Bl
Y3Rvck9iamVjdD4mJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpk
aXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JP
YmplY3Q+JiYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI+IHByb3RlY3QoKnRoaXMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJlc291cmNlMSIp
CiAgICAgICAgIGxvYWRSZXNvdXJjZTEoY2FsbElkLCBtZXNzYWdlKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycs
ICJOZXR3b3JrMSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmRE
aXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAn
LicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURp
c3BhdGNoZXIpIHsKQEAgLTMxOCwxMyArMzE4LDEzIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3Zl
KHJlc3VsdCksIGVycm9yKTsKIH0KIAotUmVmPEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI+IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rvck5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyPiBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciog
YWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIs
IGFnZW50KSk7CiB9CiAKLUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6Okluc3Bl
Y3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIm
IGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hl
cihiYWNrZW5kRGlzcGF0Y2hlcikKK05ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6Ok5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQoYWdl
bnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgLCBt
X2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTMzMywxMSArMzMzLDExIEBAIEluc3Bl
Y3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXIoSW5zcGVjdG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJEaXNw
YXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0ZXJhbCgiTmV0d29yazMiKSwgdGhpcyk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
Cit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewot
ICAgIFJlZjxJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAK
LSAgICB0eXBlZGVmIHZvaWQgKEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OipD
YWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKTsKKyAgICB0eXBlZGVmIHZvaWQgKE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2Fn
ZSk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+IERpc3BhdGNoTWFw
OwogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChEaXNwYXRjaE1hcCwgZGlzcGF0
Y2hNYXAsICgpKTsKICAgICBpZiAoZGlzcGF0Y2hNYXAuaXNFbXB0eSgpKSB7CkBAIC0zNDUsMTMg
KzM0NSwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAogICAgICAgICAgICAgY29uc3QgY2hh
ciogbmFtZTsKICAgICAgICAgICAgIENhbGxIYW5kbGVyIGhhbmRsZXI7CiAgICAgICAgIH0gY29t
bWFuZHNbXSA9IHsKLSAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTEiLCAmSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMSB9LAotICAgICAgICAgICAgeyAi
bG9hZFJlc291cmNlMiIsICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2Fk
UmVzb3VyY2UyIH0sCi0gICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UzIiwgJkluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMgfSwKLSAgICAgICAgICAgIHsg
ImxvYWRSZXNvdXJjZTQiLCAmSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlNCB9LAotICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNSIsICZJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1IH0sCi0gICAgICAgICAgICB7
ICJsb2FkUmVzb3VyY2U2IiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6Omxv
YWRSZXNvdXJjZTYgfSwKLSAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTciLCAmSW5zcGVjdG9y
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyB9LAorICAgICAgICAgICAg
eyAibG9hZFJlc291cmNlMSIsICZOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3Vy
Y2UxIH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UyIiwgJk5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTMi
LCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMyB9LAorICAgICAgICAg
ICAgeyAibG9hZFJlc291cmNlNCIsICZOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2U0IH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U1IiwgJk5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTUgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJj
ZTYiLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNiB9LAorICAgICAg
ICAgICAgeyAibG9hZFJlc291cmNlNyIsICZOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2Fk
UmVzb3VyY2U3IH0sCiAgICAgICAgIH07CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBXVEZfQVJS
QVlfTEVOR1RIKGNvbW1hbmRzKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkKQEAgLTM2MCwxNCArMzYwLDE0IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0CiAK
ICAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3BhdGNo
TWFwLmZpbmQobWV0aG9kKTsKICAgICBpZiAoaXQgPT0gZGlzcGF0Y2hNYXAuZW5kKCkpIHsKLSAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wn
JywgIk5ldHdvcmszIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2Vu
ZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMyIs
ICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgKCgqdGhpcykuKml0LT52YWx1ZSkoY2FsbElkLCBtZXNzYWdlLmdldCgpKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2Ux
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQog
ICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBj
YWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25z
ZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMihsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlMihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5h
dGVEaXNwYXRjaGVyKSB7CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UyKGxvbmcgY2FsbElkLCBjb25zdCBJbnNw
ZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1v
dmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMobG9uZyBj
YWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpA
QCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
cjo6bG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdCksIGVycm9y
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2U0KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkLCBjb25zdCBJbnNw
ZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAgLTQzMSw3ICs0MzEsNyBA
QCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRS
ZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNShsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
cjo6bG9hZFJlc291cmNlNShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9h
bHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBX
VEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTYobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
ck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTYo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgewpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcjo6bG9hZFJlc291cmNlNihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdCks
IGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2U3KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U3KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAgLTcyNyw3ICs3
MjcsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIC8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBkb21h
aW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiBAcHJvdG9jb2wgUldJUHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRs
ZXI7CkBAIC04MDIsNyArODAyLDcgQEAgcHJpdmF0ZToKICNpbXBvcnQgIlJXSVByb3RvY29sQmFj
a2VuZERpc3BhdGNoZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNw
ZWN0b3JDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5q
c29uLXJlc3VsdAppbmRleCAxZmFiMjM2M2Y5NzBlYTg2N2IyMTdiYTJhNGFlYjJkODAyMGMxZWMy
Li4yNmU0NDU0ZTcwNjQyOGU5Mzc5ZTEwOTBlMmFjM2ZjYjg3YzhjODVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51
bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CkBAIC0xLDQg
KzEsNCBAQAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KQEAgLTI5LDggKzI5LDggQEAKIC8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBlbnVtLXZhbHVlcy5qc29uCiAv
LyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAK
QEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0
ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2Vu
ZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0
cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIg
PSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9
CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgOiBw
dWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZpcnR1YWwg
fkFsdGVybmF0ZUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQor
ICAgIHZpcnR1YWwgfkFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcigpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25nIGNhbGxJ
ZCkgPSAwOwogfTsKIApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAotI2VuZGlmIC8vICFkZWZpbmVk
KEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVk
KEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTog
SW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAjIyMgQmVnaW4gRmls
ZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgpAQCAtMTQ5LDEwICsxNDksMTAgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotY2xhc3MgQWx0ZXJuYXRl
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgQWx0ZXJuYXRl
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIENvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIC8vIE5hbWVkIGFmdGVyIHBhcmFtZXRlciAn
cmV0dXJuVmFsdWUnIHdoaWxlIGdlbmVyYXRpbmcgY29tbWFuZC9ldmVudCBjb21tYW5kV2l0aEVu
dW1SZXR1cm5WYWx1ZS4KICAgICBlbnVtIGNsYXNzIFJldHVyblZhbHVlIHsKQEAgLTE2MSwyNSAr
MTYxLDI1IEBAIHB1YmxpYzoKICAgICAgICAgTWFnZW50YSA9IDcsCiAgICAgICAgIFllbGxvdyA9
IDgsCiAgICAgfTsgLy8gZW51bSBjbGFzcyBSZXR1cm5WYWx1ZQotICAgIHZpcnR1YWwgdm9pZCBj
b21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShFcnJvclN0cmluZyYsIEluc3BlY3RvckNvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlKiBvdXRfcmV0dXJuVmFs
dWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUoRXJy
b3JTdHJpbmcmLCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5W
YWx1ZSogb3V0X3JldHVyblZhbHVlKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5z
cGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1
YWwgfkNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CiAKLWNsYXNz
IEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNz
IENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29u
c3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNz
YWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMgUmVmPENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0
Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3Zl
cnJpZGU7CiBwcml2YXRlOgotICAgIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAg
ICB2b2lkIGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNw
ZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciYsIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAg
ICBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50
OworICAgIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYs
IENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0QWx0ZXJuYXRl
RGlzcGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5h
dGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsg
bV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToK
LSAgICBBbHRlcm5hdGVJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIqIG1f
YWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyAgICBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERp
c3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjI3LDIw
ICsyMjcsMjAgQEAgcHJpdmF0ZToKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLSNpbmNsdWRlICJJbnNw
ZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3I6
OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCi1JbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
Ojp+SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQor
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KIAotUmVmPEluc3BlY3RvckNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJ
bnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1Jl
ZjxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IENvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKCpi
YWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwog
fQogCi1JbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3RvckNv
bW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYg
YmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3Bh
dGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6
OkNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2Vu
ZERpc3BhdGNoZXIsIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50
KQorICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIp
CiAgICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0yNDks
MTcgKzI0OSwxNyBAQCBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6Oklu
c3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcgogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIkNvbW1hbmRE
b21haW4iKSwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQgQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yQ29tbWFu
ZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Q29tbWFu
ZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIGlmIChtZXRo
b2QgPT0gImNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlIikKICAgICAgICAgY29tbWFuZFdpdGhF
bnVtUmV0dXJuVmFsdWUoY2FsbElkLCBtZXNzYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJDb21tYW5k
RG9tYWluIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3Bh
dGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJDb21tYW5kRG9tYWluIiwg
Jy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyOjpjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC0yNzAs
NyArMjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6
OmNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGxvbmcgY2EKIAogICAgIEVycm9yU3RyaW5nIGVy
cm9yOwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UmV0dXJuVmFsdWUgb3V0X3JldHVyblZhbHVlOworICAgIENvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlIG91dF9yZXR1cm5WYWx1ZTsKICAgICBt
X2FnZW50LT5jb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShlcnJvciwgJm91dF9yZXR1cm5WYWx1
ZSk7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKQpAQCAtMzI2LDkgKzMyNiw5IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiAKIAotY2xhc3MgSW5zcGVjdG9yRXZlbnREb21haW5Gcm9udGVu
ZERpc3BhdGNoZXIgeworY2xhc3MgRXZlbnREb21haW5Gcm9udGVuZERpc3BhdGNoZXIgewogcHVi
bGljOgotICAgIEluc3BlY3RvckV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CisgICAgRXZlbnRE
b21haW5Gcm9udGVuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwp
IDogbV9mcm9udGVuZENoYW5uZWwoZnJvbnRlbmRDaGFubmVsKSB7IH0KICAgICAgICAgLy8gTmFt
ZWQgYWZ0ZXIgcGFyYW1ldGVyICdwYXJhbWV0ZXInIHdoaWxlIGdlbmVyYXRpbmcgY29tbWFuZC9l
dmVudCBldmVudFdpdGhFbnVtUGFyYW1ldGVyLgogICAgICAgICBlbnVtIGNsYXNzIFBhcmFtZXRl
ciB7CiAgICAgICAgICAgICBTaGFyZWQgPSAwLApAQCAtMzM3LDcgKzMzNyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfTsgLy8gZW51bSBjbGFzcyBQYXJhbWV0ZXIKICAgICB2b2lkIGV2ZW50V2l0aEVu
dW1QYXJhbWV0ZXIoUGFyYW1ldGVyIHBhcmFtZXRlcik7CiBwcml2YXRlOgotICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgRnJvbnRl
bmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpAQCAtMzgzLDcgKzM4Myw3IEBAIHByaXZhdGU6CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCi12b2lkIEluc3BlY3RvckV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyOjpldmVudFdp
dGhFbnVtUGFyYW1ldGVyKFBhcmFtZXRlciBwYXJhbWV0ZXIpCit2b2lkIEV2ZW50RG9tYWluRnJv
bnRlbmREaXNwYXRjaGVyOjpldmVudFdpdGhFbnVtUGFyYW1ldGVyKFBhcmFtZXRlciBwYXJhbWV0
ZXIpCiB7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJtZXRob2QiKSwgQVNDSUlMaXRlcmFsKCJFdmVudERvbWFpbi5ldmVudFdpdGhFbnVtUGFyYW1l
dGVyIikpOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgSW5zcGVjdG9yRXZlbnREb21haW5Gcm9u
dGVuZERpc3BhdGNoZXI6OmV2ZW50V2l0aEVudW1QYXJhbWV0ZXIoUGFyYW1ldGVyIHBhCiAgICAg
cGFyYW1zT2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwYXJhbWV0ZXIiKSwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUocGFyYW1ldGVyKSk7CiAgICAganNv
bk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBXVEY6Om1vdmUocGFy
YW1zT2JqZWN0KSk7CiAKLSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVu
ZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5n
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTU3MSw3ICs1NzEsNyBAQCBT
dHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIC8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBlbnVtLXZhbHVlcy5q
c29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQHByb3RvY29sIFJXSVBy
b3RvY29sQ29tbWFuZERvbWFpbkRvbWFpbkhhbmRsZXI7CkBAIC02MzMsNyArNjMzLDcgQEAgcHJp
dmF0ZToKICNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oPgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4K
KyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTk4OCw3ICs5ODgsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKWV2ZW50V2l0aEVudW1QYXJh
bWV0ZXJXaXRoUGFyYW1ldGVyOihSV0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51bVBh
cmFtZXRlclBhcmFtZXRlcilwYXJhbWV0ZXIKIHsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsKKyAg
ICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xs
ZXItPmZyb250ZW5kQ2hhbm5lbCgpOwogICAgIGlmICghZnJvbnRlbmRDaGFubmVsKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5k
ZXggY2IxMDMzNGI5YzgyMTVkN2Q3ZDg1YjJhZmI0ZDRmODU4MjRiMzE3OS4uMjE0YzFiYmRjNjAx
ZjcyOWYxMjMwOTUzYTAxNzNhN2NmM2UyZWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlv
bmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEsNCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0
b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjksOCArMjksOCBA
QAogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIGV2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbgogLy8gYnkgdGhlIHNj
cmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWlu
c3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVyc19oCisjaWZuZGVmIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnNfaAorI2RlZmluZSBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCkBAIC0zOSwxMiAr
MzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
IHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIg
PSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVy
LmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERp
c3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3Zl
KGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToK
LSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwog
fTsKIAogCkBAIC01NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAotI2VuZGlmIC8vICFkZWZpbmVkKEluc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKEluc3Bl
Y3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5zcGVj
dG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAjIyMgQmVnaW4gRmlsZTogSW5z
cGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgpAQCAtMTgzLDcgKzE4Myw3IEBAIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotI2luY2x1ZGUgIkluc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcjo6
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CkBAIC0yMzcsMTMgKzIzNywxMyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAK
LWNsYXNzIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyIHsKK2NsYXNzIERhdGFi
YXNlRnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUZy
b250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwpIHsgfQorICAgIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyKEZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5l
bCkgeyB9CiAgICAgdm9pZCBkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5n
KiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25z
dCBwcmludENvbG9yKTsKICAgICB2b2lkIGRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4g
cGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3Fs
RXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
JiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKTsKIHByaXZh
dGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0yODksNyArMjg5LDcgQEAgcHJpdmF0ZToKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3Bh
dGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGNvbnN0IG5v
dGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBw
YXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBzcWxF
cnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMq
IGNvbnN0IHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGNvbnN0IHByaW50Q29s
b3IpCit2b2lkIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQ
YXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0
aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9y
cywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKQogewogICAgIFJlZjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29u
TWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgi
RGF0YWJhc2UuZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyIpKTsKQEAgLTMxNCwxMCArMzE0
LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1
dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluCiAgICAgICAgIHBhcmFtc09iamVjdC0+c2V0
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAqcHJpbnRDb2xvcik7CiAgICAganNv
bk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBXVEY6Om1vdmUocGFy
YW1zT2JqZWN0KSk7CiAKLSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVu
ZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5n
KCkpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRF
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGlt
ZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0
IFN0cmluZyYgcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRp
ZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0
aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29u
c3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25N
ZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0
U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UuZGlk
RXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVycyhSZWZQdHI8CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRl
cmFsKCJwcmludENvbG9yIiksIHByaW50Q29sb3IpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmpl
Y3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgV1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOwogCi0g
ICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29u
TWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVz
c2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCkBAIC00MjAsMTQgKzQyMCwxNCBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGlu
dCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4q
Pih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypF
cnJvciovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQo
V1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJU
KFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUp
OwpAQCAtNDUyLDkgKzQ1Miw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPEVycm9yPiByZWxlYXNl
KCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmll
bGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJU
KHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fu
bm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBz
aXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRl
cnByZXRfY2FzdDxSZWY8RXJyb3I+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAg
LTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxk
c1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAg
IH0KIH07CiAKQEAgLTU2OSw3ICs1NjksNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUo
aW50IGNvZGUpIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24KIC8v
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAKQEAgLTYyMSw3ICs2MjEsNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKICNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNo
ZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAg
LTg0OSw3ICs4NDksNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKWRp
ZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1w
Oihkb3VibGUgKil0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopdmFs
dWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKilwYXlsb2FkIHNxbEVycm9yOihS
V0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5n
ICoqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoq
KWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKilwcmludENvbG9yCiB7Ci0g
ICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxl
ci0+ZnJvbnRlbmRDaGFubmVsKCk7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsKICAgICBpZiAo
IWZyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCkBAIC04ODksNyArODg5LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClkaWRFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVt
bk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFt
cCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIHNxbEVycm9yOihSV0lQcm90b2NvbERhdGFiYXNlRXJy
b3IgKilzcWxFcnJvciBzY3JlZW5Db2xvcjooTlNTdHJpbmcgKilzY3JlZW5Db2xvciBhbHRlcm5h
dGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWFsdGVybmF0ZUNvbG9ycyBwcmludENv
bG9yOihOU1N0cmluZyAqKXByaW50Q29sb3IKIHsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsKKyAg
ICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xs
ZXItPmZyb250ZW5kQ2hhbm5lbCgpOwogICAgIGlmICghZnJvbnRlbmRDaGFubmVsKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFy
ZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24t
cmVzdWx0CmluZGV4IGQ5YTJiMWViODlmYzg4YjIxOTU0N2UyZjI2NWNlNmQ4OWY1ODgyMDcuLjU5
ZGZhMGJjZWU1N2M1M2I0MTI4YmFkYzdiNGRkMWI1ZDNmZmQxYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0
ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRv
bWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAtMSw0ICsxLDQgQEAKLSMj
IyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMj
IEJlZ2luIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC0yOSw4ICsyOSw4IEBACiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUt
Z3VhcmRzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAot
I2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAotI2RlZmluZSBJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3Jf
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yX0FsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUykKIApAQCAtMzksMTkgKzM5LDE5IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5k
RGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hl
cikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERp
c3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5E
UykKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgOiBw
dWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJu
YXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZU5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKGxv
bmcgY2FsbElkKSA9IDA7CiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKQEAg
LTYwLDggKzYwLDggQEAgcHVibGljOgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JfQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIAogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tl
bmRDb21tYW5kcy5qcwogLyoKQEAgLTE0OCwzNCArMTQ4LDM0IEBAIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXI7CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRTKQogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCiAjaWYgUExBVEZPUk0oV0VC
X0NPTU1BTkRTKQotY2xhc3MgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgeworY2xhc3MgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRXJyb3JTdHJpbmcmKSA9IDA7CiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIoKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwog
fTsKICNlbmRpZiAvLyBQTEFURk9STShXRUJfQ09NTUFORFMpCiAKICNpZiBQTEFURk9STShXRUJf
Q09NTUFORFMpCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZpbmFs
IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNo
ZXIgeworY2xhc3MgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNw
ZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
IG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gY3Jl
YXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogcHJpdmF0
ZToKLSAgICB2b2lkIGxvYWRSZXNvdXJjZShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwogcHJpdmF0ZToKLSAgICBJbnNw
ZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXImLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciop
OwotICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50
OworICAgIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImLCBOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgIE5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRl
cm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRj
aGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KKyAg
ICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBh
bHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRlOgotICAgIEFsdGVybmF0ZUluc3BlY3Rvck5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyAgICBBbHRl
cm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CiAj
ZW5kaWYKIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRTKQpAQCAtMjI0LDIzICsy
MjQsMjMgQEAgcHJpdmF0ZToKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLSNpbmNsdWRlICJJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3I6OkFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcigpIHsgfQorTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5OZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9D
T01NQU5EUykKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLVJlZjxJbnNwZWN0b3JOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJ
bnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCitSZWY8TmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoKmJh
Y2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxlbWVudGFs
QmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyOjpOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNr
ZW5kRGlzcGF0Y2hlciwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQor
ICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCiAg
ICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0yNDksMTcg
KzI0OSwxNyBAQCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvcgogICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIk5ldHdvcmsxIiks
IHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmRp
c3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9i
amVjdD4mJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRj
aChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+
JiYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
cj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IHBy
b3RlY3QoKnRoaXMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJlc291cmNlIikKICAgICAg
ICAgbG9hZFJlc291cmNlKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZQotICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29y
azEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hl
cjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmsxIiwgJy4nLCBtZXRo
b2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmKQordm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikg
ewpAQCAtMzI0LDEyICszMjQsMTIgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogI2lmIFBM
QVRGT1JNKFdFQl9FVkVOVFMpCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrM0Zyb250ZW5kRGlzcGF0
Y2hlciB7CitjbGFzcyBOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAg
SW5zcGVjdG9yTmV0d29yazNGcm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KKyAgICBOZXR3b3JrM0Zyb250ZW5kRGlz
cGF0Y2hlcihGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkgOiBtX2Zyb250ZW5kQ2hh
bm5lbChmcm9udGVuZENoYW5uZWwpIHsgfQogICAgIHZvaWQgcmVzb3VyY2VMb2FkZWQoKTsKIHBy
aXZhdGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwogfTsKICNl
bmRpZiAvLyBQTEFURk9STShXRUJfRVZFTlRTKQogCkBAIC0zNzcsMTIgKzM3NywxMiBAQCBwcml2
YXRlOgogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICNpZiBQTEFURk9STShXRUJfRVZFTlRTKQot
dm9pZCBJbnNwZWN0b3JOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcjo6cmVzb3VyY2VMb2FkZWQo
KQordm9pZCBOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcjo6cmVzb3VyY2VMb2FkZWQoKQogewog
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9k
IiksIEFTQ0lJTGl0ZXJhbCgiTmV0d29yazMucmVzb3VyY2VMb2FkZWQiKSk7CiAKLSAgICBtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGpzb25NZXNzYWdl
LT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9G
cm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogI2VuZGlmIC8vIFBMQVRG
T1JNKFdFQl9FVkVOVFMpCiAKQEAgLTQ2NSwxNCArNDY1LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50
IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+
KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypOZXR3b3JrRXJyb3Iq
L0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihS
ZWY8LypOZXR3b3JrRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTQ5Nyw5ICs0OTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxO
ZXR3b3JrRXJyb3I+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FT
U0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE5ldHdvcmtFcnJvcikgPT0gc2l6ZW9mKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKE5ldHdvcmtFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCks
IGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPE5ldHdvcmtF
cnJvcj4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNTEzLDcgKzUxMyw3IEBA
IHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRl
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0Zp
ZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtNjE1
LDcgKzYxNSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IGdlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uCiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQHByb3RvY29sIFJXSVByb3RvY29sTmV0d29yazFEb21h
aW5IYW5kbGVyOwpAQCAtNjc5LDcgKzY3OSw3IEBAIHByaXZhdGU6CiAjaW1wb3J0ICJSV0lQcm90
b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CkBAIC05NTQsNyArOTU0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogLSAodm9pZClyZXNvdXJjZUxvYWRlZAogewotICAgIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgp
OworICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29u
dHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7CiAgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWlu
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0Cmlu
ZGV4IDliM2FmMjgxNDdjZmY5MDA4NDU1NWI0MDI0ZWYwMjdkNzY5YzAzZmYuLmQ3MjYwNDYyZDRi
YzI3ZmYwZGU5OWQ4ZGZlM2NkOWJhZjA4MmY0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlm
ZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21h
aW4uanNvbi1yZXN1bHQKQEAgLTEsNCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3I6
OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjksOCArMjksOCBAQAog
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIHNhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlcnNfaAotI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnNfaAorI2lmbmRlZiBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gK
KyNkZWZpbmUgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIApAQCAtMzksMTIgKzM5LDEy
IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBw
dWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RG
Ojptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRj
aGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNw
YXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAg
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
ICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAK
IApAQCAtNTQsOCArNTQsOCBAQCBwcml2YXRlOgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3Jf
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3Rvcjo6
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIAogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcwogLyoKQEAgLTE3Nyw3ICsxNzcsNyBAQCB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLSNpbmNsdWRlICJJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3I6OkFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewpAQCAtNDM3LDcgKzQzNyw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29k
ZSkgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIHNhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24KIC8vIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1p
bnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAKQEAgLTQ5MSw3ICs0OTEsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKICNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oPgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0j
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9z
aGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDM4YWQ3OTkzZWI4ZWFkMDM2ZmI0ZDAz
MzI4NDZmMzIzMzZhM2M0N2MuLjBhMDA1ZmFhZmM5ZjBmNjcwZTBlZjIxMDRjY2U3ZGMxZjE3ZDlh
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdApAQCAtMSw0ICsx
LDQgQEAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC0yOSw4ICsyOSw4IEBACiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2hhZG93ZWQtb3B0aW9uYWwtdHlw
ZS1zZXR0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkK
IAotI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAotI2RlZmlu
ZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2lmbmRlZiBJbnNwZWN0
b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yX0FsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKIApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFz
cyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNr
ZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0
Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0g
ICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2Vu
ZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERp
c3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApAQCAtNTQsOCArNTQsOCBAQCBwcml2
YXRlOgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
LmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzLmgKIAogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoK
QEAgLTE3Nyw3ICsxNzcsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUykKLSNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
IgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtMzU2LDE0ICszNTYsMTQgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAg
ICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1f
cmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAg
ICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUo
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRl
cjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJl
ZjwvKktleVBhdGgqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAg
ICAgQnVpbGRlcihSZWY8LypLZXlQYXRoKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAg
ICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRl
ZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC0zODEsOSArMzgxLDkgQEAgcHVibGljOgogICAgICAg
ICBSZWY8S2V5UGF0aD4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoS2V5UGF0aCkgPT0gc2l6ZW9mKEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKEtleVBhdGgpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3Rf
Y2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxLZXlQYXRoPio+KCZyZXN1
bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC0zOTYsNyArMzk2LDcgQEAgcHVibGljOgogICAg
ICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIHNldFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKQpAQCAtNTEwLDcgKzUxMCw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShpbnQgY29kZSkgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5q
c29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogCkBAIC01NjIsNyArNTYy
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAjaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmRE
aXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6
OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJl
c3VsdAppbmRleCBhZjFkNTMwOTdjYTY3YWEwYTI4ZjRiMDRiNjA5ZjNhOTNiNjBiMTkxLi42YzZm
OWRmZjRmZDc1MTE4NmQ2NzE0N2YwNDk2Y2UwOTc2YzZiMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xh
cmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKQEAgLTEsNCArMSw0IEBA
Ci0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgK
KyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgpAQCAtMjksOCArMjksOCBAQAogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1w
cmltaXRpdmUtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNk
ZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNpZm5kZWYgSW5z
cGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3Rvcl9B
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCiAKQEAgLTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgewor
Y2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0
QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRp
c3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsg
fQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJh
Y2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tl
bmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKQEAgLTU0LDggKzU0LDggQEAg
cHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oCiAKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMK
IC8qCkBAIC0xNzcsNyArMTc3LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpCi0jaW5jbHVkZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTQzMiw3ICs0MzIsNyBA
QCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIC8vIERPIE5PVCBFRElU
IFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xh
cmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1w
cm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKIApAQCAtNDg0LDcgKzQ4NCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogI2ltcG9ydCAiUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
cy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFy
YXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUu
anNvbi1yZXN1bHQKaW5kZXggNGRhOTdmNDg0ZmY2MzVmYzYzYzM0NmNhMThkZTMyMThhNjkyMGI0
Zi4uOGRlM2ZjOWUxYmMwYmU5YTEzNmUwZDcyNzdlOWMzMmY3YzRkNjRiNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlv
bi1hcnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC0xLDQgKzEsNCBAQAotIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVnaW4gRmlsZTog
SW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI5LDgg
KzI5LDggQEAKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbgogLy8gYnkgdGhl
IHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaWZuZGVmIEluc3BlY3RvckFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyc19oCisjaWZuZGVmIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnNfaAorI2RlZmluZSBJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCkBAIC0zOSwx
MiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUlu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRj
aGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2Vu
ZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjpt
b3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0
ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwogfTsKIAogCkBAIC01NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIAotI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNw
ZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5z
cGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAjIyMgQmVnaW4gRmlsZTog
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgpAQCAtMTgwLDcgKzE4MCw3IEBAIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
I2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotI2luY2x1ZGUgIklu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
cjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CkBAIC00NjAsNyArNDYwLDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVl
KGludCBjb2RlKSB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24KIC8vIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5l
cmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAKQEAgLTUxNCw3ICs1MTQsNyBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKICNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJz
LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5o
PgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Lmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnMuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rvcjo6QWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAppbmRleCBmYjRhZWQyMDE3MGRiOWQ1M2YyODIzNGE1
NzljZjQwNTYxMWJiMzJjLi5mZDhlYzgwYzA3ODFlMTc1NGY3ZjYyYWNlMThkMTg0MmVmMzUxZjkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CkBAIC0xLDQgKzEsNCBAQAotIyMj
IEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMg
QmVnaW4gRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTI5LDggKzI5LDggQEAKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29u
CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5z
cGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yX0FsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnNfaAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CiAKQEAgLTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3Mg
QWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIo
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJl
ZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgp
OyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7CiB9OwogCiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKIAogI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi0jZW5kaWYgLy8g
IWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCi0jIyMgRW5k
IEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjZW5kaWYgLy8g
IWRlZmluZWQoSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVu
ZCBGaWxlOiBJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCkBAIC0xODEsNyArMTgx
LDcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0j
aW5jbHVkZSAiSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNlbmRpZgogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBTdHJpbmcgZ2V0RW51bUNv
bnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5q
c29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogCkBAIC01MTMsNyArNTEz
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAjaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmRE
aXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6
OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IDlmYmI1ZjUzMzQ5
ZmUxMjNmMDA5ZGM2MzBkYmFkNDg0N2E1OWQxZjMuLmJjODBjYjY1ZTI2YWZmYzk3Y2JiYWM4NTA2
NmYyYzA4NTgzOTBkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBA
IC0xLDQgKzEsNCBAQAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI5LDggKzI5LDggQEAKIC8vIERPIE5PVCBFRElUIFRI
SVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0
aW9uLW9iamVjdC10eXBlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAot
I2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2lmbmRlZiBJ
bnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9y
X0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKIApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7
CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBz
ZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYg
ZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIp
OyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0
QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIp
IHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApAQCAtNTQsOCArNTQsOCBA
QCBwcml2YXRlOgogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCiAKLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzLmgKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JfQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKIAogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5q
cwogLyoKQEAgLTE3Nyw3ICsxNzcsNyBAQCB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKLSNpbmNsdWRlICJJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVycy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtMzYzLDE0ICszNjMs
MTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVy
IHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsK
IAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0
U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWls
ZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisg
ICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAg
ICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVh
dGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTM5NSw5ICszOTUsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIFJlZjxFcnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0
KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQg
PSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9i
amVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZyZXN1bHQpKTsK
ICAgICAgICAgfQogICAgIH07CkBAIC00MTEsNyArNDExLDcgQEAgcHVibGljOgogICAgICAqLwog
ICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC00MjUsMTQgKzQyNSwxNCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1
bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAg
IHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNU
QVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8q
T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9i
amVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSovSW5z
cGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3Zl
KG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09
IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNDQz
LDkgKzQ0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPE9wdGlvbmFsUGFyYW1ldGVyQnVuZGxl
PiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUg
PT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKE9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlKSA9PSBzaXplb2YoSW5zcGVj
dG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAg
ICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxS
ZWY8T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAg
fTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxk
ZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxO
b0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkp
OwogICAgIH0KIAogICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQpAQCAtNTEzLDE0ICs1MTMsMTQgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2
YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0
OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0
ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFU
RSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKlBh
cmFtZXRlckJ1bmRsZSovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAg
ICAgICBCdWlsZGVyKFJlZjwvKlBhcmFtZXRlckJ1bmRsZSovSW5zcGVjdG9yT2JqZWN0PiYmIG9i
amVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWls
ZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNTgwLDkgKzU4MCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgUmVmPFBhcmFtZXRlckJ1bmRsZT4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lz
X25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUGFyYW1ldGVy
QnVuZGxlKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2Fz
dCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUGFyYW1ldGVyQnVuZGxlKSA9
PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBS
ZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVp
bnRlcnByZXRfY2FzdDxSZWY8UGFyYW1ldGVyQnVuZGxlPio+KCZyZXN1bHQpKTsKICAgICAgICAg
fQogICAgIH07CkBAIC02MDEsNyArNjAxLDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRp
YyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC02MjEsMTQgKzYyMSwxNCBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRl
PGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RF
UD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qT2JqZWN0V2l0
aFByb3BlcnR5TmFtZUNvbmZsaWN0cyovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2Jq
ZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKk9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGlj
dHMqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdU
Rjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChT
VEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsK
QEAgLTY3NCw5ICs2NzQsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxPYmplY3RXaXRoUHJvcGVy
dHlOYW1lQ29uZmxpY3RzPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29u
ZmxpY3RzKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2Fz
dCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoT2JqZWN0V2l0aFByb3BlcnR5
TmFtZUNvbmZsaWN0cykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsK
IAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBt
X3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVj
dD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPE9iamVjdFdpdGhQcm9wZXJ0eU5hbWVD
b25mbGljdHM+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTY5Myw3ICs2OTMs
NyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNy
ZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8
Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKQEAg
LTcxNiwxNCArNzE2LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAg
Y2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUg
fCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAK
LSAgICAgICAgQnVpbGRlcihSZWY8LypQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypQYXJhbWV0ZXJCdW5k
bGUqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdU
Rjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChT
VEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsK
QEAgLTc3Niw5ICs3NzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxQYXJhbWV0ZXJCdW5kbGU+
IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9
PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5v
dF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPFBhcmFtZXRlckJ1bmRs
ZT4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNzk2LDcgKzc5Niw3IEBAIHB1
YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxk
c1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtODk3LDcg
Kzg5Nyw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5
cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKIApAQCAtOTUxLDcgKzk1MSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
I2ltcG9ydCAiUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgorI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMu
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5q
c29uLXJlc3VsdAppbmRleCAwNDVjY2I4ZjIwY2Y1ODMwODc0MThmMDY4ZmI1YTAwNTE4OWIzNzNi
Li5mYzU4MjBjYWFlYTQwOWQxOTNiNGE1ODQwYzAyMGFlYzQwYTA1ZTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmct
cnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApAQCAtMSw0ICsxLDQgQEAKLSMjIyBCZWdpbiBGaWxl
OiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3Rvcjo6QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOSw4
ICsyOSw4IEBACiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uCiAvLyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzX2gKKyNpZm5kZWYgSW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyc19oCisjZGVmaW5lIEluc3BlY3Rvcl9BbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNf
aAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKQEAgLTM5
LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRl
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNr
ZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6
Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2
YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CiB9OwogCiAKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi0jZW5kaWYgLy8gIWRlZmluZWQo
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCi0jIyMgRW5kIEZpbGU6IElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjZW5kaWYgLy8gIWRlZmluZWQo
SW5zcGVjdG9yX0FsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJ
bnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBCZWdpbiBGaWxl
OiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCkBAIC0xODEsNyArMTgxLDcgQEAgdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0jaW5jbHVkZSAi
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yOjpBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNlbmRpZgogCiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKQEAgLTM2NywxNCArMzY3LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxp
bnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+
IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMp
OwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypUeXBlTmVlZGluZ0Nhc3QqL0lu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8
LypUeXBlTmVlZGluZ0Nhc3QqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTQyMCw5ICs0MjAsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxU
eXBlTmVlZGluZ0Nhc3Q+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9m
KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKFR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAg
ICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVm
PFR5cGVOZWVkaW5nQ2FzdD4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNDM5
LDcgKzQzOSw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxk
c1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0
PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4g
QnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQog
fTsKIApAQCAtNDY3LDE0ICs0NjcsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFU
RT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRl
cjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAg
ICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKlJlY3Vyc2l2ZU9iamVjdDEqL0luc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypSZWN1
cnNpdmVPYmplY3QxKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBt
X3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5p
dF9zdGF0ZSk7CkBAIC00ODUsOSArNDg1LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8UmVjdXJz
aXZlT2JqZWN0MT4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNT
RVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVjdXJzaXZlT2JqZWN0MSkgPT0gc2l6ZW9mKElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFJlY3Vyc2l2ZU9iamVjdDEpID09IHNpemVvZihJbnNwZWN0b3JP
YmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAg
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxs
KCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxS
ZWN1cnNpdmVPYmplY3QxPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC00OTks
NyArNDk5LDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRz
U2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+
KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBC
dWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiAK
ICAgICB2b2lkIHNldE9iaihSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJz
aXZlT2JqZWN0Mj4gdmFsdWUpCkBAIC01MTgsMTQgKzUxOCwxNCBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGlu
dCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4q
Pih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qUmVjdXJzaXZlT2Jq
ZWN0MiovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWls
ZGVyKFJlZjwvKlJlY3Vyc2l2ZU9iamVjdDIqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAg
ICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVh
dGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTUzNiw5ICs1MzYsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIFJlZjxSZWN1cnNpdmVPYmplY3QyPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3Jl
YWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWN1cnNpdmVPYmplY3Qy
KSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7Cisg
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVjdXJzaXZlT2JqZWN0MikgPT0gc2l6
ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVs
bCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQu
cmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJw
cmV0X2Nhc3Q8UmVmPFJlY3Vyc2l2ZU9iamVjdDI+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAg
ICAgfTsKQEAgLTU1MCw3ICs1NTAsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRl
cjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0T2JqKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpSZWN1cnNpdmVPYmplY3QxPiB2YWx1ZSkKQEAgLTY5NiwxNiArNjk2LDE2IEBAIHZv
aWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nh
c3Q+Ojphc3NlcnRWYWx1ZUhhc0V4CiB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCi1S
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OnJ1bnRp
bWVDYXN0KFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiYmIHZhbHVlKQorUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gQmluZGluZ1RyYWl0
czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+OjpydW50aW1lQ2Fz
dChSZWZQdHI8SW5zcGVjdG9yVmFsdWU+JiYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQ7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChyZXN1bHQp
OwogICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAjaWYg
IUFTU0VSVF9ESVNBQkxFRAogICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6
VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUocmVzdWx0
LmdldCgpKTsKICNlbmRpZiAgLy8gIUFTU0VSVF9ESVNBQkxFRAotICAgIENPTVBJTEVfQVNTRVJU
KHNpemVvZihJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3QpID09IHNp
emVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVO
ZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+
KHJlc3VsdC5nZXQoKSkpOworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6OlBy
b3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3QpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RC
YXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0
b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3QqPihzdGF0aWNfY2FzdDxJbnNwZWN0
b3JPYmplY3RCYXNlKj4ocmVzdWx0LmdldCgpKSk7CiB9CiAKIApAQCAtNzg4LDcgKzc4OCw3IEBA
IHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVP
YmplY3QyPjo6YXNzZXJ0VmFsdWVIYXNFCiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0
cy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3I6OkFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogCkBAIC04NDAsNyAr
ODQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAjaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tl
bmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3I6OkFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCBlNDI4ZjQ1ZmZkOWQ2YmUwZWRjZTcxODc5
OTczYjk3ZWM3NDNmMTk2Li5kNWIxYmZmMjVlYjE3YjJmNTlkNWVlOTM3OTUzYzc2MDA0ZjcxMGEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU3RyaW5nIEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZTo6bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgp
ID8gQVNDSUlMaXRlcmFsKCJKU0NvbnRleHQiKSA6IG5hbWU7CiB9CiAKLXZvaWQgSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb24pCit2b2lkIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcigmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwogCi0gICAgbV9nbG9iYWxPYmplY3QuaW5zcGVj
dG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVh
c29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNv
bnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9y
RGVzdHJveWVkKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc3BhdGNo
TWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZS5oCmluZGV4IDhjNmVhYjc3NjYwOGI1NDg1MGIwYTRjZGIyM2I0YjIyM2JlMjhkZDEuLjQw
YjRiMzA3MjY1NDFjOTg4ZDlhMzBmOGY0Y2E1MWUxODYyZjlkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
CkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewotZW51bSBjbGFzcyBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOwor
ZW51bSBjbGFzcyBEaXNjb25uZWN0UmVhc29uOwogfQogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqLCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2Fn
ZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGMwMDM3MzA2ODY0MDRhMTk3ZTlhNDkxNTU4MzlmMzI2MGEz
ZTgxZjMuLmZhMDUyMjM1OTVjOTkxOWU0MzZmMzJmNGY3NTlhMzUyYTYzM2ViZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC04NDAsOCArODQwLDggQEAgX19aTjdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNfMTNSZW5kZXJFbGVtZW50RVJLTjMK
IF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIxcGF1c2VUcmFuc2l0aW9uQXRUaW1l
RVBOU18xM1JlbmRlckVsZW1lbnRFUktOM1dURjZTdHJpbmdFZAogX19aTjdXZWJDb3JlMTlBbmlt
YXRpb25Db250cm9sbGVyMzZzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFYgog
X19aTjdXZWJDb3JlMTlIVE1MVGV4dEFyZWFFbGVtZW50OHNldFZhbHVlRVJLTjNXVEY2U3RyaW5n
RQotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJvbnRlbmRFUE45
SW5zcGVjdG9yMjRJbnNwZWN0b3JGcm9udGVuZENoYW5uZWxFYgotX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IyNUluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb25FCitfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWNv
bm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IxNUZyb250ZW5kQ2hhbm5lbEViCitfX1pON1dlYkNv
cmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEVOOUluc3BlY3RvcjE2
RGlzY29ubmVjdFJlYXNvbkUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4c2V0
UHJvZmlsZXJFbmFibGVkRWIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI1ZXZh
bHVhdGVGb3JUZXN0SW5Gcm9udGVuZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5SW5z
cGVjdG9yQ29udHJvbGxlcjI2c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFUE5TXzIzSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCAxNmI5Y2Q1MTc2MGNmNGU1
MmViZDIzYjc5ZDJmMzUzMzMwNjdlMmFiLi5lNjEwMzU2OTNmZWVlY2U0YzFmMjBkMGU4OTU0YTBm
MGEyZWUzZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTYzMzQsNyArNjMzNCw3IEBAIF9fWk43
V2ViQ29yZTlQYWdlR3JvdXAxMHJlbW92ZVBhZ2VFUE5TXzRQYWdlRQogX19aTjNXVEY3SGFzaFNl
dElQTjdXZWJDb3JlNFBhZ2VFTlNfN1B0ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNfRUVF
NnJlbW92ZUVSS1MzXwogX19aTjNXVEY5SGFzaFRhYmxlSVBON1dlYkNvcmU0UGFnZUVTM19OU18x
N0lkZW50aXR5RXh0cmFjdG9yRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBIYXNoVHJhaXRzSVMzX0VF
UzhfRTZsb29rdXBJTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVM2X0VFUzNfRUVQUzNfUktU
MF8KIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjIyaW5zcGVjdGVkUGFnZURlc3Ry
b3llZEV2Ci1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9u
dGVuZEV2CitfX1pON1dlYkNvcmUxOUluc3BlY3Rvcjo6Q29udHJvbGxlcjE4ZGlzY29ubmVjdEZy
b250ZW5kRXYKIF9fWk43V2ViQ29yZTIxSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyMTBkaXNjb25uZWN0
RXYKIF9fWk43V2ViQ29yZTE4SW5qZWN0ZWRTY3JpcHRIb3N0MTBkaXNjb25uZWN0RXYKIF9fWk43
V2ViQ29yZTE4SW5qZWN0ZWRTY3JpcHRIb3N0RDFFdgpAQCAtMTczMTksNyArMTczMTksNyBAQCBf
X1pON1dlYkNvcmUzMWNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmdFdgogX19aTjdXZWJD
b3JlMzFjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyRXYKIF9fWk43V2ViQ29yZTIxY29u
dGV4dE1lbnVJdGVtVGFnQ3V0RXYKIF9fWk43V2ViQ29yZTIzY29udGV4dE1lbnVJdGVtVGFnUGFz
dGVFdgotX19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2aGFzSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRFdgorX19aTks3V2ViQ29yZTE5SW5zcGVjdG9yOjpDb250cm9sbGVyMjZoYXNJ
bnNwZWN0b3JGcm9udGVuZENsaWVudEV2CiBfX1pOSzdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRy
b2xsZXIxOGNhbkdvQmFja09yRm9yd2FyZEVpCiBfX1pOSzdXZWJDb3JlNFBhZ2UxOGNhbkdvQmFj
a09yRm9yd2FyZEVpCiBfX1pOSzdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIyMWNoZWNr
T3JFbmFibGVJZk5lZWRlZEVSTlNfMTVDb250ZXh0TWVudUl0ZW1FCkBAIC0yNDQzNyw5ICsyNDQz
Nyw5IEBAIF9fWk43V2ViQ29yZThQcm90b2NvbDdOZXR3b3JrOFJlc3BvbnNlOE1pbWVUeXBlRQog
X19aTjdXZWJDb3JlOFByb3RvY29sM0NTUzExQ1NTUHJvcGVydHk4UHJpb3JpdHlFCiBfX1pON1dl
YkNvcmU4UHJvdG9jb2wzQ1NTMTFDU1NQcm9wZXJ0eThQYXJzZWRPa0UKIF9fWk43V2ViQ29yZThQ
cm90b2NvbDNDU1MxMUNTU1Byb3BlcnR5NlN0YXR1c0UKLV9fWk43V2ViQ29yZTIwSW5zcGVjdG9y
V29ya2VyQWdlbnQyMVdvcmtlckZyb250ZW5kQ2hhbm5lbDhzX25leHRJZEUKK19fWk43V2ViQ29y
ZTIwSW5zcGVjdG9yOjpXb3JrZXJBZ2VudDIxV29ya2VyRnJvbnRlbmRDaGFubmVsOHNfbmV4dElk
RQogX19aVFZON1dlYkNvcmUxOEluc3BlY3RvckJhc2VBZ2VudElOU18yMEluc3BlY3Rvcldvcmtl
ckFnZW50RUVFCi1fX1pUVk43V2ViQ29yZTIwSW5zcGVjdG9yV29ya2VyQWdlbnQyMVdvcmtlckZy
b250ZW5kQ2hhbm5lbEUKK19fWlRWTjdXZWJDb3JlMjBJbnNwZWN0b3I6OldvcmtlckFnZW50MjFX
b3JrZXJGcm9udGVuZENoYW5uZWxFCiBfX1pON1dlYkNvcmVMMzJKU0Fic3RyYWN0V29ya2VyQ29u
c3RydWN0b3JUYWJsZUUKIF9fWk43V2ViQ29yZUwzMEpTQWJzdHJhY3RXb3JrZXJQcm90b3R5cGVU
YWJsZUUKIF9fWk43V2ViQ29yZUwyMUpTQWJzdHJhY3RXb3JrZXJUYWJsZUUKQEAgLTI1MDAyLDgg
KzI1MDAyLDggQEAgX19aR1ZaTjdXZWJDb3JlMTJ3cmFwcGVyT3duZXJFUE5TXzE1RE9NV3JhcHBl
cldvcmxkRVBOU18xOEluamVjdGVkU2NyaXB0SG9zdEVFMjUKIF9fWk43V2ViQ29yZUwzOUpTSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Q29uc3RydWN0b3JUYWJsZUUKIF9fWk43V2ViQ29yZUwzN0pTSW5z
cGVjdG9yRnJvbnRlbmRIb3N0UHJvdG90eXBlVGFibGVFCiBfX1pON1dlYkNvcmVMMjhKU0luc3Bl
Y3RvckZyb250ZW5kSG9zdFRhYmxlRQotX19aWk43V2ViQ29yZTEyd3JhcHBlck93bmVyRVBOU18x
NURPTVdyYXBwZXJXb3JsZEVQTlNfMjFJbnNwZWN0b3JGcm9udGVuZEhvc3RFRTI4anNJbnNwZWN0
b3JGcm9udGVuZEhvc3RPd25lcgotX19aR1ZaTjdXZWJDb3JlMTJ3cmFwcGVyT3duZXJFUE5TXzE1
RE9NV3JhcHBlcldvcmxkRVBOU18yMUluc3BlY3RvckZyb250ZW5kSG9zdEVFMjhqc0luc3BlY3Rv
ckZyb250ZW5kSG9zdE93bmVyCitfX1paTjdXZWJDb3JlMTJ3cmFwcGVyT3duZXJFUE5TXzE1RE9N
V3JhcHBlcldvcmxkRVBOU18yMUluc3BlY3Rvcjo6RnJvbnRlbmRIb3N0RUUyOGpzSW5zcGVjdG9y
RnJvbnRlbmRIb3N0T3duZXIKK19fWkdWWk43V2ViQ29yZTEyd3JhcHBlck93bmVyRVBOU18xNURP
TVdyYXBwZXJXb3JsZEVQTlNfMjFJbnNwZWN0b3I6OkZyb250ZW5kSG9zdEVFMjhqc0luc3BlY3Rv
ckZyb250ZW5kSG9zdE93bmVyCiBfX1pON1dlYkNvcmVMMTdKU0ludDE2QXJyYXlUYWJsZUUKIF9f
Wk43V2ViQ29yZUwyNkpTSW50MTZBcnJheVByb3RvdHlwZVRhYmxlRQogX19aTjdXZWJDb3JlTDI4
SlNJbnQxNkFycmF5Q29uc3RydWN0b3JUYWJsZUUKQEAgLTI3MTg3LDggKzI3MTg3LDggQEAgX19a
Wk43V2ViQ29yZTEzSW5saW5lVGV4dEJveDVwYWludEVSTlNfOVBhaW50SW5mb0VSS05TXzExTGF5
b3V0UG9pbnRFTlNfMTBMYXlvdXQKIF9fWkdWWk43V2ViQ29yZTEzSW5saW5lVGV4dEJveDVwYWlu
dEVSTlNfOVBhaW50SW5mb0VSS05TXzExTGF5b3V0UG9pbnRFTlNfMTBMYXlvdXRVbml0RVM2X0Uz
M29iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1bjIuYgogX19aWk43V2ViQ29yZTMwSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsOGRpc3BhdGNoRVJLTjNXVEY2U3RyaW5nRUUxMWRp
c3BhdGNoTWFwCiBfX1pHVlpON1dlYkNvcmUzMEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySW1w
bDhkaXNwYXRjaEVSS04zV1RGNlN0cmluZ0VFMTFkaXNwYXRjaE1hcC5iCi1fX1paTks3V2ViQ29y
ZTMwSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBsMTlyZXBvcnRQcm90b2NvbEVycm9yRVBL
bE5TXzI2SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIxNUNvbW1vbkVycm9yQ29kZUVSS04zV1RG
NlN0cmluZ0VOUzVfMTBQYXNzUmVmUHRySU5TXzE0SW5zcGVjdG9yQXJyYXlFRUVFMTRzX2NvbW1v
bkVycm9ycwotX19aR1ZaTks3V2ViQ29yZTMwSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJJbXBs
MTlyZXBvcnRQcm90b2NvbEVycm9yRVBLbE5TXzI2SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIx
NUNvbW1vbkVycm9yQ29kZUVSS04zV1RGNlN0cmluZ0VOUzVfMTBQYXNzUmVmUHRySU5TXzE0SW5z
cGVjdG9yQXJyYXlFRUVFMTRzX2NvbW1vbkVycm9ycy5iCitfX1paTks3V2ViQ29yZTMwSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlckltcGwxOXJlcG9ydFByb3RvY29sRXJyb3JFUEtsTlNfMjZJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjE1Q29tbW9uRXJyb3JDb2RlRVJLTjNXVEY2U3RyaW5n
RU5TNV8xMFBhc3NSZWZQdHJJTlNfMTRJbnNwZWN0b3JBcnJheUVFRUUxNHNfY29tbW9uRXJyb3Jz
CitfX1pHVlpOSzdXZWJDb3JlMzBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVySW1wbDE5cmVw
b3J0UHJvdG9jb2xFcnJvckVQS2xOU18yNkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyMTVDb21t
b25FcnJvckNvZGVFUktOM1dURjZTdHJpbmdFTlM1XzEwUGFzc1JlZlB0cklOU18xNEluc3BlY3Rv
ckFycmF5RUVFRTE0c19jb21tb25FcnJvcnMuYgogX19aWk43V2ViQ29yZUwyMmNvbXB1dGVQc2V1
ZG9DbGFzc01hc2tFUE5TXzE0SW5zcGVjdG9yQXJyYXlFRTZhY3RpdmUKIF9fWkdWWk43V2ViQ29y
ZUwyMmNvbXB1dGVQc2V1ZG9DbGFzc01hc2tFUE5TXzE0SW5zcGVjdG9yQXJyYXlFRTZhY3RpdmUu
YgogX19aWk43V2ViQ29yZUwyMmNvbXB1dGVQc2V1ZG9DbGFzc01hc2tFUE5TXzE0SW5zcGVjdG9y
QXJyYXlFRTVob3ZlcgpAQCAtMjg3NTMsNyArMjg3NTMsNyBAQCBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3NDRzX2RlZmVycmVkUmVwYWludERlbGF5SW5jcmVtZW50RHVyaW5nTG9hZGluZ0UKIF9fWk43
V2ViQ29yZTE4SFJURkRhdGFiYXNlTG9hZGVyOHNfbG9hZGVyRQogX19aTjdXZWJDb3JlMThJZGVu
dGlmaWVyc0ZhY3RvcnkxMXNfcHJvY2Vzc0lkRQogX19aTjdXZWJDb3JlMjFJbnNwZWN0b3JDb25z
b2xlQWdlbnQxOXNfZW5hYmxlZEFnZW50Q291bnRFCi1fX1pON1dlYkNvcmUyNEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjE3c19mcm9udGVuZENvdW50ZXJFCitfX1pON1dlYkNvcmUyNEluc3BlY3Rv
cjo6SW5zdHJ1bWVudGF0aW9uMTdzX0Zyb250ZW5kQ291bnRlckUKIF9fWk43V2ViQ29yZTE0T3Nj
aWxsYXRvck5vZGUxNXNfd2F2ZVRhYmxlU2luZUUKIF9fWk43V2ViQ29yZTE0T3NjaWxsYXRvck5v
ZGUxN3Nfd2F2ZVRhYmxlU3F1YXJlRQogX19aTjdXZWJDb3JlMTRPc2NpbGxhdG9yTm9kZTE5c193
YXZlVGFibGVTYXd0b290aEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYTcwNGNkOTg0ZWE4
ZDM4ZWYwZjFjNWVlMjkwZGM1Mzg2YThiNWYwYy4uM2U2ZjYzMjE2MTNiNjNkYjBkZWU3NTQwYTI0
YmQ5YzU2ZTYwODVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ5LDEzICs0OSwxMyBA
QCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbgogewogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
LSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCAwYjgxMzM1ZjUxY2UwYTZjOGY1
MGI2Y2QzNzQ0YWQ2N2UwM2M5MzNkLi5mMDhhY2UyMGY3MTcxODNhZDkwZDQ2ZmZkZTA2ZDNhNjM0
Y2ZhNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJ
bnNwZWN0b3JWYWx1ZTsKIH0KQEAgLTQ3LDE0ICs0NywxNCBAQCBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNh
Y2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOwogCiAgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAg
ICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CkBAIC03Miw4ICs3Miw4IEBAIHByaXZhdGU6
CiAgICAgRG9jdW1lbnRMb2FkZXIqIGFzc2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKEVycm9y
U3RyaW5nJiwgU3RyaW5nIGZyYW1lSWQpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3Bh
Z2VBZ2VudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZGUx
MTdjMTBiYTRmMzQ0YmM3MzFhMWQ5ZjQ3OTAxMGQ4ZDg1OTBiYy4uODUzMjFkZDdkZDJmNzhiZWE5
OWU1MmUyZjc2MGUwN2UyOTg4MDRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0zNTEsMTMgKzM1MSwxMyBAQCBJbnNwZWN0b3JDU1NB
Z2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IENTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0
cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDg4NjY0Yzg5NjBlM2ZjYmZmYzI4NmJj
YzU5Zjk0MjFiZWJlNTBhYzMuLmU0YTYwMzc5NTRjMWEyNzBjN2JjOGQ4NTVhZmNiZWZlNzBmZmI3
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBA
IC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVyOwor
Y2xhc3MgQ1NTRnJvbnRlbmREaXNwYXRjaGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02NCw3ICs2NCw3IEBAIGNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogY2xhc3MgSW5z
cGVjdG9yQ1NTQWdlbnQgZmluYWwKICAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKICAg
ICAsIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIKLSAgICAsIHB1YmxpYyBJ
bnNwZWN0b3I6Okluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgICwgcHVi
bGljIEluc3BlY3Rvcjo6Q1NTQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgLCBwdWJsaWMg
SW5zcGVjdG9yU3R5bGVTaGVldDo6TGlzdGVuZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEluc3BlY3RvckNTU0FnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTkx
LDggKzkxLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHls
ZVJ1bGUoQ1NTUnVsZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTE2Myw4ICsxNjMsOCBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCByZXNldFBzZXVkb1N0YXRlcygpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hl
cjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDU1NG
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIElu
c3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwogCiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hl
ZXQgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaAppbmRleCBlZTdkOGZhYzQ2NWQxZTVjZWRlMjBlMmMxOGVkZTVkNWY4
MTA2MTFlLi45OWRmYzY1OGRkZmIxZTZlNGRkM2NkY2E4YTllNzYxYTMyYWM1YTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZXNpemVNYWluRnJhbWUoRnJhbWUqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA3MmYyOTQ2OGNlYWRiNGVk
NzVmM2RkNmFlMzM4NzhiOTQzYzRlYTMwLi5hMTliYTRhOTlhMzliODE1YzlkM2JmMWVhYmJiMTQ5
NWQ0YzA0ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3Bl
Y3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAg
ICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0
aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVh
dGUoKSkpCiAgICAgLCBtX292ZXJsYXkoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5
PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQotICAgICwgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwobnVsbHB0cikKKyAgICAsIG1fZnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiAgICAgLCBtX2V4
ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9wYWdlKHBhZ2Up
CiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCkBAIC0xODQsNyArMTg0
LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogewotICAgIGRp
c2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJn
ZXREZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJ
bnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5k
aXNjb25uZWN0KCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgp
OwogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKQEAgLTIzMiwxOSArMjMyLDE5IEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZy
YW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvCiAgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQtPndpbmRvd09iamVjdENsZWFyZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsKLSAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIpOworICAgIEFTU0VSVCghbV9mcm9udGVuZENoYW5uZWwpOworICAgIEFTU0VS
VCghbV9iYWNrZW5kRGlzcGF0Y2hlcik7CiAKICAgICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9
IGlzQXV0b21hdGljSW5zcGVjdGlvbjsKIAotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
ID0gZnJvbnRlbmRDaGFubmVsOwotICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250ZW5kQ2hhbm5lbCk7CisgICAg
bV9mcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5uZWw7CisgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKIAotICAg
IG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1f
aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1fYmFja2VuZERpc3BhdGNoZXIu
Z2V0KCkpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1l
bnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKQEAgLTI1NSwxNiArMjU1LDE2IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFuCiAjZW5kaWYKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVh
c29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAg
IGlmICghbV9mcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYWdlbnRz
LndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiAKLSAgICBtX2luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9pbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jbGVhcigpOwotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0g
bnVsbHB0cjsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7CisgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOworICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVs
bHB0cjsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFsc2U7CiAKQEAgLTI4Niwx
MCArMjg2LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAgICAgaWYgKCFl
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCkKKyAgICBpZiAobV9mcm9udGVuZENoYW5uZWwpCiAgICAgICAgIG1faW5zcGVjdG9y
Q2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOwogICAgIGVsc2UgewotICAgICAgICBpZiAo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNs
aWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpKSB7CisgICAgICAgIGlmIChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQt
Pm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkgewogICAgICAgICAgICAgYm9vbCBpc0F1dG9t
YXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9u
dGVuZENoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAgICAgIH0KQEAgLTI5OCw5
ICsyOTgsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKIHsKLSAgICBpZiAoIW1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKQorICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKLSAg
ICBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9y
RGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5z
cGVjdG9yRGVzdHJveWVkKTsKICAgICBtX2luc3BlY3RvckNsaWVudC0+Y2xvc2VJbnNwZWN0b3JG
cm9udGVuZCgpOwogfQogCkBAIC0zNTIsOCArMzUyLDggQEAgUGFnZSYgSW5zcGVjdG9yQ29udHJv
bGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBpZiAobV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAgICAgbV9pbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CisgICAgaWYgKG1fYmFja2VuZERp
c3BhdGNoZXIpCisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2Up
OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZGVIaWdobGlnaHQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYjI2NDIy
Yjc3NTNlMGM0MjZmNTA5OTUxNTZjZGYwM2Q1NDlmM2UyMS4uM2M3ZmI5OWVmNjJhZDY0Y2ZjMmI2
ZTk5ZThlYzAyY2YzZWQzMjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC00Miw5ICs0Miw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgQmFja2VuZERpc3Bh
dGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCiBuYW1lc3BhY2UgUHJvdG9jb2wgewpA
QCAtOTQsMTIgKzk0LDEyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKLSAgICBi
b29sIGhhc0Zyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbDsgfQorICAgIGJvb2wgaGFzRnJvbnRlbmQoKSBjb25zdCB7IHJldHVybiAhIW1fZnJvbnRl
bmRDaGFubmVsOyB9CiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29s
IGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25u
ZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pOwogICAg
IHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBt
X3RpbWVsaW5lQWdlbnQ7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwog
ICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAgUGFnZSYg
bV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7Ci0gICAgSW5z
cGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAgIEluc3BlY3Rvcjo6
QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBWZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0aW9uQ29va2llczsKICAg
ICBib29sIG1faXNVbmRlclRlc3Q7CiAgICAgYm9vbCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4
IDE3ZWI2ODE4MTkxMDMzODRmNTBmMWZlMjI1OWUwMDJkYzYzMjljOGMuLjBiOGY5NDFiMDIwZDI4
ODlhNjViOWQ4ZDE2NzA3Y2NmOWNhMGZmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjIxLDEwICsyMjEsMTAgQEAgSW5zcGVjdG9y
RE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCgpCiAgICAgQVNTRVJUKCFtX3NlYXJjaGluZ0Zv
ck5vZGUpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRE9NRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6
RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAK
ICAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CiAg
ICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4obV9oaXN0b3J5Lmdl
dCgpKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcgogICAgICAg
ICBmb2N1c05vZGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBmODM5NzkyYmIyNWM5YTViMzdmNzA1NDcyZmM0
NjhhMzcxNjE2MDE4Li45ZmM5NTI1ZGI3Y2ZjNDI1ZmFlOWYxMzliOWZkZTdiMTc5YWE2ZmFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtOTEs
NyArOTEsNyBAQCBzdHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm8gewogICAgIGNvbnN0IEV2ZW50TGlz
dGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5lclZlY3RvcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckRP
TUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3Rv
ckRPTUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3Bl
Y3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JET01BZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CkBAIC0xMDksOCArMTA5LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyB0
b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uKSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3VtZW50cygpOwogICAg
IHZvaWQgcmVzZXQoKTsKQEAgLTI0Niw4ICsyNDYsOCBAQCBwcml2YXRlOgogICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1f
b3ZlcmxheTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JET01Gcm9u
dGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9m
cm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgRE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVu
ZXI7CiAgICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVudE5vZGVUb0lkTWFwOwogICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8Tm9kZT4sIEJhY2tlbmROb2RlSWQ+IE5vZGVUb0JhY2tlbmRJZE1hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCAzZDBiYmFjNTYxYjhlYjE0NDc0NzI4MmUwODg0ZDcwNGE1YmNjYjI3
Li5mNzc4ZGQ5NjJjYjJkZGMxNjA2MzE3NDZhOTk1YmRkYTBhOWIyNzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRp
c2FibGUoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpET01E
ZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAK
QEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZElu
dmFsaWRhdGVTdHlsZUF0dHIoTm9kZSYgbm9kZSkKICAgICBpZiAoaGFzQnJlYWtwb2ludCgmbm9k
ZSwgQXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2
ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGRlc2NyaXB0aW9u
Rm9yRE9NRXZlbnQobm9kZSwgQXR0cmlidXRlTW9kaWZpZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0
KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEp
KTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEp
KTsKICAgICB9CiB9CiAKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKE5vZGUmIHBhcmVudCkKICAgICBpZiAoaGFzQnJl
YWtwb2ludCgmcGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAg
IGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQocGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQsIHRydWUsIGV2
ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKElu
c3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3Zl
KGV2ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNw
ZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3Zl
KGV2ZW50RGF0YSkpOwogICAgIH0KIH0KIApAQCAtMjgwLDExICsyODAsMTEgQEAgdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9kZShOb2RlJiBub2RlKQogICAg
IGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBOb2RlUmVtb3ZlZCkpIHsKICAgICAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBOb2RlUmVtb3ZlZCwgZmFsc2UsIGV2
ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKElu
c3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3Zl
KGV2ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNw
ZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3Zl
KGV2ZW50RGF0YSkpOwogICAgIH0gZWxzZSBpZiAocGFyZW50Tm9kZSAmJiBoYXNCcmVha3BvaW50
KHBhcmVudE5vZGUsIFN1YnRyZWVNb2RpZmllZCkpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9i
amVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVz
Y3JpcHRpb25Gb3JET01FdmVudChub2RlLCBTdWJ0cmVlTW9kaWZpZWQsIGZhbHNlLCBldmVudERh
dGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVu
dERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9y
OjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVu
dERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
aWYgKGhhc0JyZWFrcG9pbnQoJmVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlmaWVkKSkgewogICAgICAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KGVsZW1lbnQsIEF0dHJpYnV0ZU1v
ZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50
LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+
YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiAgICAgfQogfQogCkBAIC0zNjcsOSArMzY3
LDkgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpwYXVzZU9uTmF0aXZlRXZlbnRJ
Zk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNvbnMKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBl
dmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGV2ZW50RGF0YS0+c2V0
U3RyaW5nKCJldmVudE5hbWUiLCBmdWxsRXZlbnROYW1lKTsKICAgICBpZiAoc3luY2hyb25vdXMp
Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVu
dERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9y
OjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFdmVudExpc3RlbmVyLCBXVEY6
Om1vdmUoZXZlbnREYXRhKSk7CiAgICAgZWxzZQotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNj
aGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAg
ICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVj
dG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFdmVudExpc3RlbmVyLCBX
VEY6Om1vdmUoZXZlbnREYXRhKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6c2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAt
NDEyLDcgKzQxMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRY
TUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGV2ZW50RGF0YS0+
c2V0U3RyaW5nKCJicmVha3BvaW50VVJMIiwgYnJlYWtwb2ludFVSTCk7CiAgICAgZXZlbnREYXRh
LT5zZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dy
YW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6WEhSLCBXVEY6
Om1vdmUoZXZlbnREYXRhKSk7CisgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5z
cGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpYSFIsIFdURjo6bW92
ZShldmVudERhdGEpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpjbGVh
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaAppbmRleCA0NjZmMDNlNTcxY2Y4NjcwNDNkYmNiNWJlODRiNjVmYWM3ZGFkMzkx
Li5hZmUzY2ZiOWQzMDk1NWRmYTMzMjk1ZWYwOTllYmZmY2EyNDdjZTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAg
LTUxLDcgKzUxLDcgQEAgY2xhc3MgTm9kZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpM
aXN0ZW5lciwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6Okxpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yOjpET01EZWJ1Z2dlckJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVl
c3QoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVk
ZWQoYm9vbCBpc0RPTUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJv
bm91cyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtMTAxLDcgKzEwMSw3
IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudDsKICAgICBJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSGFzaE1hcDxOb2RlKiwg
dWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fZXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3hockJyZWFrcG9pbnRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcAppbmRleCBmYjA4OWEzOGY4MzIyNmQ1OWNlNTI4NmZiZTBhNTI4OGI5MDU3OTE4
Li44ZTUyM2ZmYjhjZDRmZGZmYmQ0ZDZhNjZlMzM0ZDNmNTgwYjA3ZmJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApA
QCAtNjYsMTMgKzY2LDEzIEBAIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6fkluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzID0gbnVsbHB0cjsKIH0K
IAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IDM2MWI2MTNjYzFkNzU3ZDQ0NjZkZjI4OWY3ZTk2ZmFl
ZDBhMmFjNWQuLmJlYmQxZWY0MTJmMmRiZmI2MTNhNzEzYWJkNDhhNzI0NDJkMzZiMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmgKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVy
OwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRl
bmREaXNwYXRjaGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSwxNCArNTEsMTQg
QEAgY2xhc3MgU3RvcmFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJh
c2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IGZpbmFsIDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBm
cm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwpAQCAtNzgsOCArNzgsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTdG9yYWdl
QXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYmLCBGcmFtZSomKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2Vu
dCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkRPTVN0
b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKICAgICBib29sIG1fZW5hYmxlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCA0NGRhYTg2NTc2N2Uz
Y2I3MjRkYTk3NGEwMjhjYjlkZTI2ZGY4MjUzLi45MTM0ZGZlNDdjNzljNmM2ZWY0NDEzNDQ1MjBi
NzA0NmUxZDVkYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8aW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdHlwZWRl
ZiBJbnNwZWN0b3I6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpF
eGVjdXRlU1FMQ2FsbGJhY2sgRXhlY3V0ZVNRTENhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6
OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQ2FsbGJhY2sgRXhl
Y3V0ZVNRTENhbGxiYWNrOwogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCkBAIC0yMjIs
MTMgKzIyMiwxMyBAQCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp+SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50KG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5l
bCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5oCmluZGV4IDJlODY4OTc1ZjE2ZmNiMTY3OGRiZGIzZGFjZjIxZTE3Y2Vk
MThjY2UuLjNmZGFhMmNiNzQxOGU1MjMwYTJmZjliYWFkMDRmNmU2ZjNmMmFkNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAt
NDcsMTQgKzQ3LDE0IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6
OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRhYmFzZUFnZW50
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFy
UmVzb3VyY2VzKCk7CiAKQEAgLTcyLDggKzcyLDggQEAgcHJpdmF0ZToKICAgICBEYXRhYmFzZSog
ZGF0YWJhc2VGb3JJZChjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQpOwogICAgIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UqIGZpbmRCeUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVu
ZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNo
ZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U+PiBEYXRhYmFzZVJl
c291cmNlc01hcDsKICAgICBEYXRhYmFzZVJlc291cmNlc01hcCBtX3Jlc291cmNlczsKICAgICBi
b29sIG1fZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRleCA0NmVkZjMxM2M2ODYzZTZjYWYyN2FkYjJk
ZjRiNjIzZDhhNzY4Y2VlLi42YzNjOWUyM2Q2NmYwZGQyMjNjNDNhNzkxYmRjNzFhNWI1Y2NiNDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2UuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UoUmVmUHRyPERhdGFiYXNlPiYmIGRhdGFiYXNl
CiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3JE
YXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciogZGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQoSW5zcGVjdG9yOjpEYXRhYmFzZUZy
b250ZW5kRGlzcGF0Y2hlciogZGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIpCiB7CiAgICAgYXV0
byBqc29uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkRhdGFiYXNlOjpj
cmVhdGUoKQogICAgICAgICAuc2V0SWQobV9pZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCmluZGV4IDI5NTY3MmMxN2E5OWIz
NWU4YjQ3ODg3YmEyYmNmZGM3ODA4ODE1MjYuLjZkYjg1YzljNDhkYTY5OTAxYTM4NzU2M2E1MDBh
OGY0NjA2ZDY1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZT4gY3JlYXRlKFJlZlB0cjxEYXRhYmFzZT4mJiwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKIAotICAgIHZvaWQgYmluZChJ
bnNwZWN0b3I6Okluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyKik7CisgICAgdm9p
ZCBiaW5kKEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqKTsKICAgICBEYXRh
YmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXREYXRhYmFzZShSZWZQdHI8RGF0YWJhc2U+JiYgZGF0YWJhc2UpIHsgbV9kYXRhYmFzZSA9IGRh
dGFiYXNlOyB9CiAgICAgU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmgKaW5kZXggNmMyN2Qy
MDAzNTRlNzliN2M4YjZkYzBiNDE2ZTc2MTMzNWNjZjFlYy4uMjUwOGJiMTkzMjcxOGQ4YTlhOThm
ODRkOGJjZmYwYTQ0ZWZlYmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZvcndhcmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRm9yd2FyZGluZy5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci10eXBl
ZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbDsKK3R5cGVkZWYgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsOwogfQogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRm9yd2FyZGlu
Z19oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKaW5kZXggN2E2NDk1ZjEzNDQxNzZmNDExNDgxMTFhYTRhMDZlYTZmODQzYmQ5
ZS4uOTQ5Y2JlNzBkZTJmN2U1MzdjOGY1Nzc2NDY1YTQ0YmE5MjE2MTA0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBA
IC03NywxMSArNzcsMTEgQEAgdXNpbmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpL
ZXlSYW5nZTsKIHVzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3Rv
cmU7CiB1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5k
ZXg7CiAKLXR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2Fs
bGJhY2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKLXR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JJ
bmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2Fs
bGJhY2sgUmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjazsKLXR5cGVkZWYgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFz
ZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwotdHlwZWRlZiBJbnNwZWN0b3I6Oklu
c3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFDYWxs
YmFjayBSZXF1ZXN0RGF0YUNhbGxiYWNrOwotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3Rvcklu
ZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNr
IENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjazsKK3R5cGVkZWYgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKK3R5cGVkZWYgSW5zcGVjdG9y
OjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVz
Q2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjazsKK3R5cGVkZWYgSW5zcGVjdG9y
OjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZUNhbGxi
YWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWRE
QkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1ZXN0RGF0
YUNhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrIENsZWFyT2JqZWN0U3RvcmVDYWxsYmFj
azsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIApAQCAtNTc1LDEyICs1NzUsMTIgQEAg
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpCiB7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggNzcyMGIzYTlhYWVjOTlkYjIwN2U5YzkzNDQ5
NWM2OWY1NzdmMTMyMS4uNGQyYzE2OTgyMjhkNjMzZDM5ZGYyOTg5NWI3MGJkYzkwMWNhMDIwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmgKQEAgLTQ3LDEzICs0NywxMyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Oklu
c3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6
CiAgICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAg
dmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1f
cGFnZUFnZW50OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggYzU5MDJiYTc3N2IwMzYwZTEwMWI3
YTVmMDFlYmEyODI4NTU2YzM5YS4uYmU2NDQ5NmU0NjM4ZDAwYzNlYzI4OTA4NjU2YWU2NzdhNzM4
OTc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVy
VHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwCkBAIC01NiwxMyArNTYsMTMgQEAgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6On5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JMYXllclRyZWVC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpMYXllclRy
ZWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b24pCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgK
aW5kZXggMTY2ZTlhNjE4ZjE1YzM1MWEwOTJhMmYwYWNmYzNkNDAzYTBiN2NjYS4uNWFiYzEzNzUz
MjU2ZDg0NDUyNmUyYjM1OThmNGFjMTJiM2NlNTc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBA
QCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpMYXllclRyZWVC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAg
IC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCkBAIC04MSw4ICs4MSw4IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIGJpbmRQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqKTsK
ICAgICB2b2lkIHVuYmluZFBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCopOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogCiAgICAgSGFzaE1hcDxjb25zdCBS
ZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKICAgICBIYXNoTWFw
PFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggOTFjNzM4MDJmNWU3
MDQwMzA4NGYwM2Q0ZjNmOTJhYTM5ZjRiZThiNi4uNmMxNmIyY2ZmMjUxZmM0Yzg2MWI5OGJjOGE4
MDdmOWM0ZDgzN2Q0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTMzNywxMyArMzM3LDEzIEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6
SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9p
ZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUGFnZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29s
IHNob3cpCiAgICAgbV9vdmVybGF5LT5zZXRTaG93aW5nUGFpbnRSZWN0cyhzaG93KTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0
cmluZyYsIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdCogc3Rh
dHVzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhF
cnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVz
dWx0KiBzdGF0dXMpCiB7CiAgICAgYm9vbCBkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlciA9IGZh
bHNlOwogICAgIGJvb2wgZGlzYWJsZWRJblNldHRpbmdzID0gZmFsc2U7CkBAIC02NjgsMTQgKzY2
OCwxNCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVz
KEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yUGFnZUJhYwogICAgIH0KIAogICAgIGlmICghZGlzYWJs
ZWRCeVNjcmlwdENvbnRyb2xsZXIpIHsKLSAgICAgICAgKnN0YXR1cyA9IEluc3BlY3RvclBhZ2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6QWxsb3dlZDsKKyAgICAgICAgKnN0YXR1
cyA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0OjpBbGxv
d2VkOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRpc2FibGVkSW5TZXR0aW5n
cykKLSAgICAgICAgKnN0YXR1cyA9IEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OlJlc3VsdDo6RGlzYWJsZWQ7CisgICAgICAgICpzdGF0dXMgPSBJbnNwZWN0b3I6OlBhZ2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6RGlzYWJsZWQ7CiAgICAgZWxzZQotICAg
ICAgICAqc3RhdHVzID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVz
dWx0OjpGb3JiaWRkZW47CisgICAgICAgICpzdGF0dXMgPSBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6Rm9yYmlkZGVuOwogfQogCiB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBib29s
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IGJmZDU3NzUxNzcwY2U3NjBiZDdjY2QzODlhYTJiY2RkNTQwNTdlMTguLmNjNmUxMGZh
ZmNlZmU4YTgzY2U0NWJlNTM5YjIwZjI2NDJhMzI0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgVGV4
dFJlc291cmNlRGVjb2RlcjsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvclBhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewor
Y2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNl
YXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldERvY3VtZW50Q29u
dGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBo
dG1sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JT
dHJpbmcmLCBib29sIHNob3cpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRF
eGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6Okluc3BlY3RvclBhZ2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlBhZ2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChFcnJvclN0cmluZyYsIGJvb2wpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQoRXJyb3JTdHJp
bmcmLCBib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpAQCAtMTM5LDggKzEzOSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKTsKIAogICAg
IC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVy
cmlkZTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKICAgICBQYWdlKiBwYWdlKCkgeyByZXR1
cm4gbV9wYWdlOyB9CkBAIC0xNjgsOCArMTY4LDggQEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJh
bWVUcmVlKEZyYW1lKik7CiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCog
bV9jbGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yUGFnZUZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+
IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBhZ2VCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3JPdmVybGF5KiBt
X292ZXJsYXk7CiAgICAgbG9uZyBtX2xhc3RTY3JpcHRJZGVudGlmaWVyOwogICAgIFN0cmluZyBt
X3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCmluZGV4IDZlY2Q3YzBmYmVmYjUy
ZDYwYmViMTJlZDFiYzIyOWIwOWYwZmY5ZGYuLjJmNjg3NTMyMDU5Njk3NDgxOGY2MmE2NWQxOGU5
NzYzZDM0NDY3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXBsYXlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlcGxheUFnZW50LmNwcApAQCAtMTY3LDEwICsxNjcsMTAgQEAgV2ViQ29yZTo6U2Vzc2lvblN0
YXRlIEluc3BlY3RvclJlcGxheUFnZW50OjpzZXNzaW9uU3RhdGUoKSBjb25zdAogICAgIHJldHVy
biBtX3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnNlc3Npb25TdGF0ZSgpOwogfQogCi12b2lkIElu
c3BlY3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yUmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UmVwbGF5
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlcGxheUFnZW50KHRoaXMpOwog
ICAgIEFTU0VSVChzZXNzaW9uU3RhdGUoKSA9PSBXZWJDb3JlOjpTZXNzaW9uU3RhdGU6OkluYWN0
aXZlKTsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKgogICAgICAg
ICBtX3NlZ21lbnRzTWFwLmFkZCgoKml0KS0+aWRlbnRpZmllcigpLCAqaXQpOwogfQogCi12b2lk
IEluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBs
YXlBZ2VudC5oCmluZGV4IDM2MzJjNGY0MTNlNGNmMmQwYzM0OWUyZmMyZTIzN2I1MWQwYzEyMzUu
LjMzYmYyOWMxMWE1MTBjYmE5MzNmODVhZTVhMmU1ZjIyNDA2NTYwNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCkBAIC01OCwxNCArNTgs
MTQgQEAgdHlwZWRlZiBpbnQgU2VnbWVudElkZW50aWZpZXI7CiAKIGNsYXNzIEluc3BlY3RvclJl
cGxheUFnZW50IGZpbmFsCiAgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlCi0gICAgLCBw
dWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
eworICAgICwgcHVibGljIEluc3BlY3Rvcjo6UmVwbGF5QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSZXBsYXlBZ2VudCk7CiBwdWJs
aWM6CiAgICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvclJlcGxheUFnZW50KCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24gY2FsbGJhY2tzLgogICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRM
b2FkZXIqKTsKQEAgLTExNCw4ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZXBsYXlT
ZXNzaW9uU2VnbWVudD4gZmluZFNlZ21lbnQoRXJyb3JTdHJpbmcmLCBTZWdtZW50SWRlbnRpZmll
cik7CiAgICAgV2ViQ29yZTo6U2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSgpIGNvbnN0OwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yUmVwbGF5RnJvbnRlbmREaXNw
YXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJlcGxheUJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFBhZ2UmIG1fcGFnZTsKIAogICAgIEhh
c2hNYXA8aW50LCBSZWZQdHI8UmVwbGF5U2Vzc2lvbj4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IG1fc2Vzc2lvbnNNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAK
aW5kZXggNDkyMmYzMTg5OTZjNTg4NDZlNmVmZGI0ZDQxNjE2MDg4ZmZhYTJkMC4uZjliYmY4MDhl
MGIyMTYyYjZlYzgxODNhNjA3OThhZTQwYjUxOTE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNzEsNyArNzEsNyBA
QAogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi10eXBlZGVmIEluc3BlY3Rvcjo6SW5z
cGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6TG9hZFJlc291cmNlQ2FsbGJh
Y2sgTG9hZFJlc291cmNlQ2FsbGJhY2s7Cit0eXBlZGVmIEluc3BlY3Rvcjo6TmV0d29ya0JhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6TG9hZFJlc291cmNlQ2FsbGJhY2sgTG9hZFJlc291cmNlQ2Fs
bGJhY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTczLDEzICsxNzMsMTMgQEAgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW4KIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck5l
dHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6Ok5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFz
b24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IGU4NDY1OTFiMWQ0ZjUyOTEyMzAyN2MwY2FhNWM2
Nzc5NTk3ZDNkMTUuLjg0YzNiZmRjZTRkODExNGRlNTM2NzA5ZGYyMTYwNTQ5NGMwZTA0MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
aApAQCAtNzMsMTQgKzczLDE0IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvclJlc291cmNl
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tz
LgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTEzOCw4ICsxMzgsOCBAQCBw
cml2YXRlOgogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNw
ZWN0b3JDbGllbnQqIG1fY2xpZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwot
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpOZXR3
b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0Rh
dGE7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX2NhY2hlRGlzYWJsZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXgg
NmY4MjM3NmM4MWNlZmM5NzY2NTExM2ZiZWJkMmQ5MTAyZTlhM2VmYy4uNmU0NzFjNDRhZTU0ZjBh
M2E2NzY3MjI0ODk3MGVjZGYwNjk4MTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzk5LDcgKzM5OSw3IEBAIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRo
UHJvcGVydGllcygpIGNvCiAKICAgICAgICAgLy8gVmlzdWFsIFN0dWRpbyBkaXNhZ3JlZXMgd2l0
aCBvdGhlciBjb21waWxlcnMgYXMgdG8gd2hldGhlciAnY2xhc3MnIGlzIG5lZWRlZCBoZXJlLgog
I2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGVudW0gY2xhc3MgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1cyBzdGF0dXM7CisgICAgICAgIGVudW0gY2xhc3MgUHJv
dG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXMgc3RhdHVzOwogI2Vsc2UKICAgICAgICAgZW51
bSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3RhdHVzIHN0YXR1czsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwCmluZGV4IGI5MjJjNzhjZmY5NmVhNDNmZDM5OTBiYjZiOGQ3ZjAyODU1OTI2Yjku
LjFhNGQ2ZTc3MzJiNTZiODU2YTE1MjA2MTQwMWY0M2ViOGNlNThmNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTYy
LDEwICs2MiwxMCBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVB
Z2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
KyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogCiAgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsK
IApAQCAtNzMsMTQgKzczLDE0IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvCiAgICAgICAgIG1f
c2NyaXB0RGVidWdTZXJ2ZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJl
YXNvbiByZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQobnVsbHB0cik7CiAKLSAgICBp
ZiAocmVhc29uICE9IEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERl
c3Ryb3llZCkgeworICAgIGlmIChyZWFzb24gIT0gSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
OjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpIHsKICAgICAgICAgaWYgKG1fc2NyaXB0RGVidWdT
ZXJ2ZXIpCiAgICAgICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLT5yZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGVhNDQ4NWIzMmQzMmNkNjNhNzllMmFmYTNmZjc4NWZk
MWFkOWM2MzQuLjQ1YWY2MzU5OWY4Y2U3ZDM1ZjcxOTExZGE4OTE2MjdkMGNmOWVjN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApA
QCAtMTA3LDcgKzEwNyw3IEBAIGVudW0gY2xhc3MgVGltZWxpbmVSZWNvcmRUeXBlIHsKIAogY2xh
c3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCBmaW5hbAogICAgIDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZQotICAgICwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGltZWxpbmVCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIKKyAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z0xp
c3RlbmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTExNyw4ICsxMTcsOCBAQCBwdWJs
aWM6CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5z
cGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlwZSwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwg
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFz
b24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nJiwgY29u
c3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9wKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC0yMjksOCArMjI5LDggQEAg
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlciogbV9zY3JpcHREZWJ1Z1NlcnZlcjsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGlu
ZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogCiAgICAgVmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50cnk+
IG1fcmVjb3JkU3RhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDNiYjE0MDNlYjBiZTY3NWY5ODk0MmU0MGM4OWU1NTI5
YTQ3YjAxNzIuLmQ4NGJiMDU5YmZkYmMwNTMyMjM3YTQ0YzI2NDhhYThhYjUzOTRlMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApA
QCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHk6OlBhZ2VJbnNwZWN0b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIGV4cGxpY2l0IFdvcmtlckZyb250ZW5kQ2hhbm5lbChJbnNwZWN0b3JXb3JrZXJG
cm9udGVuZERpc3BhdGNoZXIqIGZyb250ZW5kRGlzcGF0Y2hlciwgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eSogcHJveHkpCisgICAgZXhwbGljaXQgV29ya2VyRnJvbnRlbmRDaGFubmVsKEluc3BlY3Rv
cjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBmcm9udGVuZERpc3BhdGNoZXIsIFdvcmtlckds
b2JhbFNjb3BlUHJveHkqIHByb3h5KQogICAgICAgICA6IG1fZnJvbnRlbmREaXNwYXRjaGVyKGZy
b250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgLCBtX3Byb3h5KHByb3h5KQogICAgICAgICAsIG1f
aWQoc19uZXh0SWQrKykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPmRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIobV9pZCwgbWVzc2FnZU9i
amVjdCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBt
X2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0
Y2hlciogbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSog
bV9wcm94eTsKICAgICBpbnQgbV9pZDsKICAgICBib29sIG1fY29ubmVjdGVkOwpAQCAtMTE0LDEz
ICsxMTQsMTMgQEAgSW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0b3JXb3JrZXJBZ2VudCgp
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JXb3JrZXJBZ2VudChudWxs
cHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JX
b3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpX
b3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24p
Cit2b2lkIEluc3BlY3RvcldvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9zaG91bGRQYXVzZURlZGlj
YXRlZFdvcmtlck9uU3RhcnQgPSBmYWxzZTsKICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4IDY4
NjlkNWE2ODA0ZjcyOTgwYjA2NzJiMDliNmNhM2NiODgwMmZhZmIuLjRlNzNjZmI5MTcwZjIzNDBi
YjA0ODljNmQ5MWFmM2M5ZjM5OGE1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yV29ya2Vy
RnJvbnRlbmREaXNwYXRjaGVyOworY2xhc3MgV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwxNCArNDgsMTQgQEAgY2xhc3MgV29ya2VyR2xv
YmFsU2NvcGVQcm94eTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIElu
c3BlY3RvcldvcmtlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
K2NsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNw
ZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yV29ya2VyQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
IAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIGJvb2wg
c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCkgY29uc3Q7CkBAIC03Niw4ICs3Niw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVXb3JrZXJGcm9udGVuZENoYW5uZWwoV29ya2Vy
R2xvYmFsU2NvcGVQcm94eSosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRlc3Ryb3lX
b3JrZXJGcm9udGVuZENoYW5uZWxzKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Oldv
cmtlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29y
a2VyT25TdGFydDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdl
bnQuY3BwCmluZGV4IDdhN2I3NjI0MjU5ZmJjYjYyNjlmMTI1ZTk2YWU1ZTJhNmQ2YmU2NTQuLmUx
MjNjMGIzNTlkNjc4MmRiMjQ3MDJkZjA3ZjgyODI4ZTFjNzFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU5LDEzICs1OSwxMyBAQCBQ
YWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLAogewogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUnVudGltZUZyb250
ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIFBhZ2VS
dW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBQYWdlUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1
bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
aAppbmRleCBmODJjZmMwMTBjNzI2OTIzY2QzOTNjOTZiODAzM2ZmOTcyODkzODhiLi5lN2IyYzI0
ZDhkMGU1NDQ5Y2U3MmYxMTk0YzhkMjM0YjczMGZhYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAg
IFBhZ2VSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBQYWdl
KiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+UGFnZVJ1bnRpbWVBZ2VudCgp
IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogCkBAIC03NCw4ICs3NCw4IEBAIHByaXZhdGU6CiAK
ICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3Bh
Z2VBZ2VudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1l
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVu
dGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9t
YWluV29ybGRDb250ZXh0Q3JlYXRlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA3NzdjZjcyMzNh
ZDcyZTQyNmYxOGI0ODBmZmJlN2QyOThkMTRlY2VjLi5mMWZlNDEwMDVhZGZlYTRiYzAxZTBhZDVi
NzdmNThmMGI5NmMyNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMDgsMTggKzEwOCwxOCBAQCBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbAogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIoKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+cmVzZXQo
KTsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5z
cGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOwogfQogCiB2b2lk
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiB7CiAgICAgQVNT
RVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9iYWxTY29wZSk7Ci0gICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
bV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRDaGFubmVsLmdldCgpKTsKICAgICBtX2Fn
ZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCks
IG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQogCi12b2lkIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJl
YXNvbikKK3ZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgaWYgKCFtX2Zyb250
ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZjg3Nzk0Mzc4MzkzYTMx
ZDMyMGJhNDRlMjI4OWIzMzU2MTQ1ZjJmZC4uOTY3NDA4M2NkZWNhZGM5MWU1MDMwMjIyN2ZkYzRk
MWE5MThiZWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00MSwxMCArNDEsNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci19Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwpAQCAtNjEsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpOwogCiAg
ICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoKTsKLSAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pOworICAgIHZvaWQgZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7CiAgICAgdm9pZCBkaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZXN1bWUoKTsK
IApAQCAtODEsMTAgKzc3LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3RydW1lbnRpbmdB
Z2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBXb3JrZXJS
dW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50OwotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0
cnkgbV9hZ2VudHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFu
bmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKICAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0
aW9uU3RvcHdhdGNoOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUsIDI+IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25D
b29raWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGlt
ZUFnZW50LmNwcAppbmRleCA3NjkwNDllMzIyZjVhNjU5OTQzYWE2NzBiMDJiZDkyNTMyZDNiNzhj
Li45ZWEyODVjNmVkZTJkM2NmMjVhNWI2Mjg4ZWE4MzlmY2IzZTc2YmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcApAQCAtNTIsMTIgKzUy
LDEyIEBAIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFnZW50KEluamVjdGVkU2Ny
aXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hCiB7CiB9CiAKLXZvaWQgV29ya2VyUnVudGlt
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSdW50aW1lQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZv
aWQgV29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgV29ya2VyUnVudGltZUFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24g
cmVhc29uKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IDgxNGM2NmQ2YmM5
ZDQ2MTgzMTkxNGE5YmZiNDFlMjg4MmUxYzBkMzcuLjg3OGJkZDI0OGIwOGJlMWM4YWY0ZWY0NTcy
NzMzNGU3MDhhOTBjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVu
dGltZUFnZW50LmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIFdvcmtlclJ1bnRpbWVB
Z2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFdvcmtlckdsb2JhbFNjb3Bl
Kik7CiAgICAgdmlydHVhbCB+V29ya2VyUnVudGltZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7CiAKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29s
ZSgpIG92ZXJyaWRlOwogICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3Bl
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBtX3BhdXNlZDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBkY2MzNGRkYzNmMTU5
ZTYyOGQ2NTc5ZmE0NGYzZjBhNjFjOWFmNDNhLi4xNGVjNjJlYmI1ZjZkY2QyY2ZmMjBlNTRkYmEy
N2ZkNjFjMWQ2MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01OTQs
NyArNTk0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3ll
ZCgpIG92ZXJyaWRlIHsgfQogICAgIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBv
cGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJy
aWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRl
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCmluZGV4IDVjZjg0OWEy
ZmE1Mzc1MDZhOTExZTlkYmE3MzQ4NmIwNmZlMjZhMGUuLjY3NmM0Y2E5MjRkNzEyNTI0YWMyNDhl
ZjJjMTU1MTk3MzcxNDQyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURl
YnVnZ2FibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgUGFnZURlYnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIo
KSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmhhc0xvY2Fs
RnJvbnRlbmQoKTsKIH0KIAotdm9pZCBQYWdlRGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3Bl
Y3Rpb24pCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKIHsKICAgICBpZiAo
IW1fcGFnZS5zZXR0aW5ncygpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkgewogICAgICAgICBt
X2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQgPSB0cnVlOwpAQCAtNzgsMTMgKzc4LDEzIEBA
IHZvaWQgUGFnZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGNoYW5uZWwsIGJvb2wKIAogICAgIEluc3BlY3RvckNvbnRyb2xsZXImIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOwogICAgIGluc3Bl
Y3RvckNvbnRyb2xsZXIuc2V0SGFzUmVtb3RlRnJvbnRlbmQodHJ1ZSk7Ci0gICAgaW5zcGVjdG9y
Q29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqPihjaGFubmVsKSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsK
KyAgICBpbnNwZWN0b3JDb250cm9sbGVyLmNvbm5lY3RGcm9udGVuZChyZWludGVycHJldF9jYXN0
PEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKj4oY2hhbm5lbCksIGlzQXV0b21hdGljSW5zcGVj
dGlvbik7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5lY3QoKQogewogICAgIElu
c3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVjdG9y
Q29udHJvbGxlcigpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXIuZGlzY29ubmVjdEZyb250ZW5k
KEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgaW5z
cGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogICAgIGluc3BlY3RvckNvbnRyb2xsZXIuc2V0
SGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpOwogCiAgICAgaWYgKG1fZm9yY2VkRGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdn
YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oCmluZGV4IDQxZWZi
YzcxN2NmYzFiZTZlYzJkNzFlOTE1ODhjYTQ2MjYyY2EyMDEuLjdmN2FhOWJmZWYwY2FmMzBlYzQ4
M2NhMDNlZGM1OGIxOWYwZTZmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZURlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wg
aXNBdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVt
b3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SW5kaWNhdGluZyhib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCA4NjQ2ZTA2ZjNlYTc4YTc2NGY2ZTkwMmE4NzJkNzc1YjM3MzhhN2Fk
Li4xMGJhM2NkYTY2MmUzMGU3ZTFkMTc1ZGRiOWI5N2M4NGI5OWMyOWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNTU4LDcgKzE1NTgsNyBAQCB2b2lkIEludGVybmFs
czo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAgICBBU1NFUlQocGFnZSk7CiAgICAg
QVNTRVJUKG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0
b3JEZXN0cm95ZWQpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQp
OwogCiAgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CiAgICAgbV9mcm9udGVuZENoYW5u
ZWwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcAppbmRleCA0MzdjMTA4YzkzNWJlNWYyMTNiNWRjZWQzNWQ2YzkzMjUxNjNhMGUw
Li43ODQ1YjYxZmE4ZGNmYWY5ZjY3ZmFhMGQ5NDI1ZDBmOWIyYjVkNjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9y
KCkKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICByZXR1cm47CiAgICAgbV93
b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW10gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQp
OworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkud29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAgICAgfSwgV29ya2VyRGVidWdnZXJBZ2Vu
dDo6ZGVidWdnZXJUYXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIv
U291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0
RXhwb3J0cy5kZWYuaW4KaW5kZXggZTgyN2I5ZWZiMmM4Yzc4OTg1NDQyNTQ0MTJhNDU5MTMxMTQw
ZmExOC4uMGMzMGM5ODVhNjBmMTFiYjQ3ZTRkZGYxMmJmMmZiZTc0M2Q4NzI2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2Vi
S2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJL
aXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTIxNiw3ICsyMTYsNyBA
QCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD8/MUluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFQFhaLCA/PzFJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsQFdlYkNvcmVAQFVFQUFAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VB
dHRhY2hlZFdpbmRvd0hlaWdodEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVA
QFVBRVhJQFosID9jaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodEBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsQFdlYkNvcmVAQFVFQUFYSUBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/
Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdl
YkNvcmVAQFVBRVhJQFosID9jaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoQEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhJQFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9jb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEFW
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsQEluc3BlY3RvckBAX05AWiwgP2Nvbm5lY3RGcm9udGVu
ZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFFQUFYUEVBVkluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbEBJbnNwZWN0b3JAQF9OQFopCisgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jb25u
ZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEFWRnJvbnRlbmRD
aGFubmVsQEluc3BlY3RvckBAX05AWiwgP2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9s
bGVyQFdlYkNvcmVAQFFFQUFYUEVBVkZyb250ZW5kQ2hhbm5lbEBJbnNwZWN0b3JAQF9OQFopCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdl
QEluc3BlY3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEFWUGFnZUAyQEFCVlN0cmluZ0BXVEZAQEBa
LCA/ZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZUBJbnNwZWN0b3JDbGllbnRAV2ViQ29y
ZUBAU0FfTlBFQVZQYWdlQDJAQUVCVlN0cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRo
UG9pbnRlcig/ZnJvbnRlbmRMb2FkZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJD
b3JlQEBVQUVYWFosID9mcm9udGVuZExvYWRlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
QFdlYkNvcmVAQFVFQUFYWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9nZXRQcm9wZXJ0
eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRT9BVlN0
cmluZ0BXVEZAQEFCVjQ1QEBaLCA/Z2V0UHJvcGVydHlAU2V0dGluZ3NASW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBP0FWU3RyaW5nQFdURkBAQUVCVjQ1QEBaKQpAQCAt
MjI5LDcgKzIyOSw3IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3dpbmRv
d09iamVjdENsZWFyZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVY
WFosID93aW5kb3dPYmplY3RDbGVhcmVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2Vi
Q29yZUBAVUVBQVhYWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3BhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudEBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQEFCVjIzQDBAWiwgP3BhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudEBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQEFFQlYyM0AwQFopCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zZXRQcm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29u
dHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWiwgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JD
b250cm9sbGVyQFdlYkNvcmVAQFFFQUFYX05AWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIo
P2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhXNElu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb25ASW5zcGVjdG9yQEBAWiwgP2Rpc2Nvbm5lY3RGcm9udGVu
ZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFFQUFYVzRJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uQEluc3BlY3RvckBAQFopCisgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kaXNjb25u
ZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYVzREaXNjb25uZWN0
UmVhc29uQEluc3BlY3RvckBAQFosID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJv
bGxlckBXZWJDb3JlQEBRRUFBWFc0RGlzY29ubmVjdFJlYXNvbkBJbnNwZWN0b3JAQEBaKQogICAg
ICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZ
QV9OUEJWTm9kZUAxQEBaLCA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEVC
Vk5vZGVAMUBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2lzUHJlbG9hZGVkQENhY2hl
ZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFosID9pc1ByZWxv
YWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRRUJBX05BRUJWU3RyaW5nQFdURkBA
QFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNW
YWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1Jl
ZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWiwgP2pzQXJyYXlAV2ViQ29yZUBA
WUE/QVZKU1ZhbHVlQEpTQ0BAUEVBVkV4ZWNTdGF0ZUAzQFBFQVZKU0RPTUdsb2JhbE9iamVjdEAx
QFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFopCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRJT1MubW0KaW5kZXggOThkY2FlZDMxOTBkMTg5ZDcwMWNlMmY0MjgyMjI5YjdkMzBkZDhkZS4u
ZWM2NDlkOTk0ODg0ZTRjMzAwNzdkNTFlODUyOTM4Y2M0NzI5OTEyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElP
Uy5tbQpAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9y
RGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JD
b250cm9sbGVyKikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKIHsKICAgICAv
LyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3RvciwgdGhpcyBzaG91bGQgbm90IGJl
IHJlYWNoZWQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGU2ZWRl
NDlmYzkyMGE5Y2E0ZjZhOWRkYjE2OTIxZTI3MTRlOTRmZGMuLmVlMjI4ZjIxYmIzMTA4NWJhZDBk
NDJlYzI5OGUzZDAxMWYyNWUzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVu
ZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
YnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
aXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXgg
Nzg5M2Y4YjIzYTg5NGY3MjVmOTE5NzQ5MmEwN2ZkZmI3ZTNiNDQwZi4uYWZiNzNjOTYyMDkxODk4
Y2NhYTQ1Y2ZiNWI1ZjhmNDE0NzI3MWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTQzLDcgKzE0Myw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogICAgIGRl
bGV0ZSB0aGlzOwogfQogCi1JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIpCitJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlcikKIHsKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
cj4gd2luZG93Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9s
bGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6bV93ZWJWaWV3IGlzVW5kZXJUZXN0
Omluc3BlY3RvckNvbnRyb2xsZXItPmlzVW5kZXJUZXN0KCldKTsKICAgICBbd2luZG93Q29udHJv
bGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CkBAIC03MzAsNyArNzMwLDcgQEAg
LSAodm9pZClkZXN0cm95SW5zcGVjdG9yVmlldzooYm9vbClub3RpZnlJbnNwZWN0b3JDb250cm9s
bGVyCiAKICAgICBpZiAobm90aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikgewogICAgICAgICBpZiAo
UGFnZSogaW5zcGVjdGVkUGFnZSA9IFtfaW5zcGVjdGVkV2ViVmlldy5nZXQoKSBwYWdlXSkKLSAg
ICAgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0
RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JE
ZXN0cm95ZWQpOworICAgICAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3Bl
Y3RvckRlc3Ryb3llZCk7CiAgICAgfQogCiAgICAgW193ZWJWaWV3IGNsb3NlXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlciBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YktpdC5vcmRlcgppbmRleCA3YTI3Yjc1OGMyMDdmZGZmODdkMDFmOGEyYmIzMGU0MWUzY2JjYWU2
Li44ZWNlYmE0MzdkYTQ0NTFhOTFlYzIyOTk2YjM3OWMwNGYzNDJlOTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
S2l0Lm9yZGVyCkBAIC0xNTU2LDcgKzE1NTYsNyBAQCBfX1oxNENhbGxVSURlbGVnYXRlUDdXZWJW
aWV3UDEzb2JqY19zZWxlY3RvclAxMW9iamNfb2JqZWN0UzNfUzNfCiAtW1dlYkRhdGFiYXNlUXVv
dGFNYW5hZ2VyIHNldFF1b3RhOl0KIF9fWk4yNFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDI1ZGlz
cGF0Y2hEaWRNb2RpZnlEYXRhYmFzZUVQTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVSS04zV1RG
NlN0cmluZ0UKIF9fWk4yNldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50MTlsb2NhbGl6ZWRTdHJp
bmdzVVJMRXYKLV9fWk4yNldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50MTRmcm9udGVuZExvYWRl
ZEV2CitfX1pOMjZXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDE0RnJvbnRlbmRMb2FkZWRFdgog
LVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIHNob3dXaW5kb3c6XQogX19aTjE4V2ViSW5z
cGVjdG9yQ2xpZW50MjNpbnNwZWN0b3JTdGFydHNBdHRhY2hlZEV2CiBfX1pMMTVwb3B1bGF0ZVNl
dHRpbmdSS04zV1RGNlN0cmluZ0VQUzBfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA4MjI0ZDRlZThiNTVh
ODM1ZWI5NDQ0NmFlOTg1MjNiMDI3YTFlYWYzLi4yZDE1YTJhNWI0ZDNhZWIwMmFjMDZlNTdjNjZl
YzcwMDk1ZGZiYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9
CiAKLVdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlcikKK0luc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyKQogewogICAgIHJlZ2lzdGVyV2luZG93Q2xhc3MoKTsKIApAQCAtNDM0LDcgKzQzNCw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3
KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiAgICAgY2xvc2VXaW5kb3dXaXRob3V0Tm90aWZp
Y2F0aW9ucygpOwogCiAgICAgaWYgKG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50
LT51cGRhdGVIaWdobGlnaHQoKTsKICAgICB9CiAgICAgOjpEZXN0cm95V2luZG93KG1fZnJvbnRl
bmRId25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNDdmYmVhMGE4MDc0MWQ1Y2I5NzI4ZTgxN2NjNDk3YTJl
OTJiYzlhNy4uMGIzYjc2MWQ1OTU5ZTRhNDhjYWI1ZjIzNTExZDkyMmY4ZWM5OTk5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIC8vIEluc3BlY3RvckNsaWVudAog
ICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCmluZGV4IDVhN2YxNzAwYmQxOWFiY2FhN2Y3ODU2ZGEyYTAzZWI2Y2UyNmYx
YjAuLjJjNzEyZDQwY2JiMzZmOTczZmM0ODk5ZGY1ZWU0MDdmY2ZiMDc5MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5z
cGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKK0luc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQogewogICAgIG1fcGFnZS0+aW5z
cGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2UoY29udHJvbGxlci0+aXNVbmRlclRlc3QoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDlhNDQwMGJlNWFiYTZiOTk1MTVmNmQ4
OTFmNmU5YTgxNTY3OGE0MTUuLjQ2ZTg4N2M3ODNkYjFiNGM0YTA0NWIyMWY0N2VlNWU4MmYyZGIx
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRl
OgogICAgIC8vIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudAogICAgIHZvaWQgaW5zcGVjdG9yRGVz
dHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikg
b3ZlcnJpZGU7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JG
cm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBicmluZ0Zyb250
ZW5kVG9Gcm9udCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNv
cmU6OkZyYW1lKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IDQ1NzBmOTEzNDdjZmUwNTgxMzllMDc1OGM2
MjBhOTM4NTA4NjA5OTUuLmJmMDQ3NjA1ZjEzMjUyZTNlZjkwYjBhOTZmMjllMWIzYzI0NTcyNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3IuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250
ZW5kRGlzY29ubmVjdGVkKCkKICAgICBtX3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7
CiAKICAgICBpZiAobV9wYWdlLT5jb3JlUGFnZSgpKQotICAgICAgICBtX3BhZ2UtPmNvcmVQYWdl
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBt
X3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyIGIv
U291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKaW5kZXggYWU2MjVmN2MxNmM2YmFmNTQw
NzQ5YWNlYjQ2NWYyNzIzNzVmOWM1Yi4uZDRiYzg5MmE1ZmQzZTlkY2E4NWRjYjNiOWRjZTA1YWQ1
NWM3YzFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKKysr
IGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKQEAgLTE2NzMsNyArMTY3Myw3IEBA
IF9fWk4zV1RGOUhhc2hUYWJsZUlOU182U3RyaW5nRU5TXzEyS2V5VmFsdWVQYWlySVMxX2RFRU5T
XzI0S2V5VmFsdWVQYWlyS2V5RXh0cmFjCiBfX1pOM1dURjlIYXNoVGFibGVJTlNfNlN0cmluZ0VO
U18xMktleVZhbHVlUGFpcklTMV9kRUVOU18yNEtleVZhbHVlUGFpcktleUV4dHJhY3RvcklTM19F
RU5TXzEwU3RyaW5nSGFzaEVOU18xOEhhc2hNYXBWYWx1ZVRyYWl0c0lOU18xMEhhc2hUcmFpdHNJ
UzFfRUVOUzhfSWRFRUVFUzlfRWFTRVJLU0NfCiBfX1pONldlYktpdDdXZWJQYWdlMjhwbGF0Zm9y
bVByZWZlcmVuY2VzRGlkQ2hhbmdlRVJLTlNfMTlXZWJQcmVmZXJlbmNlc1N0b3JlRQogX19aTjZX
ZWJLaXQ3V2ViUGFnZTlpbnNwZWN0b3JFdgotX19aTjZXZWJLaXQxMldlYkluc3BlY3RvcjZjcmVh
dGVFUE5TXzdXZWJQYWdlRVBON1dlYkNvcmUyNEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEUKK19f
Wk42V2ViS2l0MTJXZWJJbnNwZWN0b3I2Y3JlYXRlRVBOU183V2ViUGFnZUVQTjdXZWJDb3JlMTVG
cm9udGVuZENoYW5uZWxFCiBfX1pONldlYktpdDEyV2ViSW5zcGVjdG9yMzVzZXRJbnNwZWN0b3JV
c2VzV2ViS2l0VXNlckludGVyZmFjZUViCiBfX1pONldlYktpdDE1Y2xhc3NGcm9tUERGS2l0RVA4
TlNTdHJpbmcKIF9fWk42V2ViS2l0MjlUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTE3dXBk
YXRlUHJlZmVyZW5jZXNFUktOU18xOVdlYlByZWZlcmVuY2VzU3RvcmVFCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246290</attachid>
            <date>2015-02-09 14:27:00 -0800</date>
            <delta_ts>2015-02-09 19:39:22 -0800</delta_ts>
            <desc>Proposed Fix .2</desc>
            <filename>bug-141372-20150209142701.patch</filename>
            <type>text/plain</type>
            <size>297183</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5ODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NDI2YTk2ZDQ4ZmRkMWIwMTc4Yjg1YWE1Y2ZmODhkMDNlYjFkMjNkLi4yZjAwNTQ1NWRjY2JiYTYz
ZGVhMDUwZTAxYzZiYTdlZThlYjJkYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDcgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6OkFnZW50UmVnaXN0cnkpOgorICAgICAgICAoSW5z
cGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjphcHBlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpBZ2Vu
dFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QWdlbnRS
ZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6QWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjpkaXNjYXJkQWdlbnRzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSk6
IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFw
cGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0
cnk6OmFwcGVuZEV4dHJhQWdlbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2VudHMpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVy
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6
OnNlbmRJZkFjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJE
aXNwYXRjaGVyRm9yRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnNl
bmRSZXNwb25zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpyZXBv
cnRQcm90b2NvbEVycm9yKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OmdldEludGVnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RG91YmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmlu
Zyk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZEZhaWx1cmUp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpzZW5kSWZBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlZ2lzdGVyRGlzcGF0
Y2hlckZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9j
b2xFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Qm9v
bGVhbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpnZXRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0VmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAo
SW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcjo6flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rv
clN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6On5JbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWw6On5Gcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw6On5JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0RGVzdHJv
eWVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRsZUNvbnNvbGVBc3NlcnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cGF1c2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1ApOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyQnJlYWtEZXRhaWxzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dl
bmVyYXRvci5weToKKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfZm9ybWFsX291
dF9wYXJhbWV0ZXIpOgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl9zdGFja19v
dXRfcGFyYW1ldGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9n
ZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXIpOgorICAgICAgICAoQWx0ZXJuYXRlKToKKyAgICAgICAgKHZvaWQpOgorICAgICAgICAoQWx0
ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIpOiBEZWxldGVkLgorICAgICAgICAoQWx0
ZXJuYXRlSW5zcGVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAg
ICAoQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuX2dlbmVyYXRlX2FsdGVybmF0
ZV9oYW5kbGVyX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9kb21haW5zLkFsdGVybmF0ZSk6Cisg
ICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfZGlz
cGF0Y2hlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAgICAgIChDcHBCYWNrZW5kRGlz
cGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0ZXJuYXRlX2hhbmRsZXJfZm9yd2Fy
ZF9kZWNsYXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRlSW5zcGVjdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5k
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9oYW5kbGVyX2NsYXNzX2Rlc3Ry
dWN0b3JfZm9yX2RvbWFpbik6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9sYXJnZV9kaXNwYXRjaGVyX3N3aXRjaF9pbXBsZW1l
bnRhdGlvbl9mb3JfZG9tYWluKToKKyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9y
X2NvbW1hbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBG
cm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbl9mb3JfZXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5OgorICAgICAgICAoT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9ldmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1k
b21haW4uanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxp
YXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpjb25uZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
OjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oOgorCiAyMDE1LTAyLTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZW1vdmUgYSBmZXcgZHVwbGljYXRlIHByb3BhZ2F0aW9uIHN0ZXBzIGZy
b20gdGhlIERGRydzIFByZWRpY3Rpb25Qcm9wYWdhdGlvbiBwaGFzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc5
YThlNzc2Yjk1YTMzZDZlNmJlYTcyODg1MzI1YjFjNDcyNDFiMjUuLmE2ZTUyZTE1YWNlN2YwY2Vl
MDExNjg0YWMzNjNhYzZmMzI2ODlmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTEgQEAKKzIw
MTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVm
aXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3Bl
Y3RlZFBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3BhdGNoTWVz
c2FnZUZyb21Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1v
dmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxNb2RpZnlET01BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3Rh
dHVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRp
ZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6Oldvcmtl
ckZyb250ZW5kQ2hhbm5lbDo6V29ya2VyRnJvbnRlbmRDaGFubmVsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29u
bmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bnRpbWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAg
ICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVi
dWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnYWJsZTo6ZGlz
Y29ubmVjdCk6CisgICAgICAgICogcGFnZS9QYWdlRGVidWdnYWJsZS5oOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2xvc2VE
dW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpkaXNj
b25uZWN0RnJvbUluc3BlY3Rvcik6CisKIDIwMTUtMDItMDYgIFNlcmdpbyBWaWxsYXIgU2VuaW4g
IDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVzb2x2
ZWRJbml0aWFsUG9zaXRpb24gPD0gcmVzb2x2ZWRGaW5hbFBvc2l0aW9uIGluIFdlYkNvcmU6Okdy
aWRTcGFuOjpHcmlkU3BhbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZGY4YWZmYTA4NTYzNzhmZWE0ZWU5MTU0NDYw
MGUzZjY4ZWRkZGFlLi5jZDhkYzcyNzExNWM2ODUzNTEyNDhmNTM2MGI0OGUyOGU0NzdkYzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAyLTA5ICBCcmlhbiBKLiBCdXJnICA8YnVy
Z0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgc29t
ZSB1bm5lY2Vzc2FyeSBJbnNwZWN0b3IgcHJlZml4ZXMgZnJvbSBjbGFzcyBuYW1lcyBpbiBJbnNw
ZWN0b3IgbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDEzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBv
cnRzLmRlZi5pbjoKKwogMjAxNS0wMi0wNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2luXSA2NC1iaXQgYnVpbGQgZml4IGFmdGVyIHIxNzk3MDIgYW5k
IHIxNzk3MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiOGEyNjZjZDVmYmYyMDJmZGE5YTBjZjRjMTgy
NjI2ZWQzMjExNGQ2Li43ZTQ5M2RlNjQyMjk5YjM5ZWI5N2Q0NjUwNWU1MzliOGYzMzg4OGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1
cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJl
bW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVz
IGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGRlc3Ryb3lJbnNwZWN0b3JW
aWV3Ol0pOgorCiAyMDE1LTAyLTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+IGFuZCBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBhIGJhcmVib25lIFJlYWRhYmxl
U3RyZWFtIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDg3YjUzOWZlYjE5MjI3YWRkYWFl
NjgzMzA3ZmQ5ZGI3ZTA5YTEzYTkuLjczZDZiYzEzNTEyZmVlOWFlYWRlZTdjNmViZGE2YjUwYWM4
ZGM2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMi0wOSAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgSW5zcGVjdG9yIHByZWZpeGVzIGZyb20gY2xh
c3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNw
ZWN0b3JWaWV3KToKKwogMjAxNS0wMi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBWZWN0b3I6OnJlbW92ZUZpcnN0TWF0Y2hpbmcoKSAvIHJlbW92ZUFs
bE1hdGNoaW5nKCkgbWV0aG9kcyB0YWtpbmcgbGFtYmRhIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGRlYzFkYWVlN2I1Zjg1NTY3ZGM0ZmY3MjEwMzc0ODdiYWNhYzY4YzguLjk1MjM5ZWMyMjRmNDg4
NDM3NDY3MTVhNTkxNGM5YWMzMWQ2MGQxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgSW5zcGVjdG9yIHBy
ZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5hbWVzcGFjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzcyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yOjpyZW1v
dGVGcm9udGVuZERpc2Nvbm5lY3RlZCk6CisKIDIwMTUtMDItMDggIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE1lYXN1cmUgY2FjaGUgc2l6ZSBtb3JlIGFjY3Vy
YXRlbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAKaW5kZXggNTBlMTE0ODc0ZDE2Nzk0YWEwNTY3YWNiMjUxMTBjNjFjYmYwNGJhOC4u
NWY3NjkwZTY3N2I0ZWU1YmY2YjE1MDcyY2JlNGRkYTc0ODQ4NWQzYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTE3Nyw3
ICsxNzcsNyBAQCBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U6OkxldmVsIG1lc3NhZ2VMZXZlbFZhbHVlKE1lcwogICAgIHJldHVybiBJbnNwZWN0b3I6
OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6OkxvZzsKIH0KIAotdm9p
ZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmRE
aXNwYXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmll
dykKKyAgICB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVu
ZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsKICAg
ICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U+IGpzb25P
YmogPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9zb3VyY2UpKQpAQCAt
MjMwLDcgKzIzMCw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVj
dG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgY29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZUFkZGVkKFdURjo6bW92ZShqc29uT2JqKSk7CiB9CiAKLXZv
aWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckNv
bnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIpCit2b2lk
IENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJbnNwZWN0b3I6OkNv
bnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIpCiB7CiAg
ICAgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCht
X3JlcGVhdENvdW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuaAppbmRleCBlZjFjNzlkMTVjN2NlODczZjcwYWVhMTVkMTJkOTkzN2Nl
ZGJmN2ZhLi44NDc2ZjFjNmQ4YmQ0N2U5ZDE0NWZjMWEzMzE3NmJhOWU3ZDVhOWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC01
NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQ
dHI8U2NyaXB0QXJndW1lbnRzPiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyID0gMCk7CiAgICAgfkNvbnNvbGVNZXNzYWdlKCk7CiAKLSAgICB2b2lkIGFk
ZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciosIEluamVjdGVk
U2NyaXB0TWFuYWdlciosIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICB2b2lkIHVwZGF0ZVJl
cGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqKTsK
KyAgICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yOjpDb25zb2xlRnJvbnRlbmREaXNwYXRj
aGVyKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpOworICAg
IHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yOjpDb25zb2xlRnJvbnRl
bmREaXNwYXRjaGVyKik7CiAKICAgICBNZXNzYWdlU291cmNlIHNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9tZXNzYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudEJhc2UuaAppbmRleCA2MzlkMDQ4YjI3YWVmOTdlZDNmYzJkMmUwODhm
NWViNjMzMDlhNWE2Li42MzQwNGNmNTQyNTRhZDZhM2VhYTFhNWYyN2M0OWI5MTc3MmM4NTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
QmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdl
bnRCYXNlLmgKQEAgLTMxLDEwICszMSwxMCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAot
Y2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWw7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEZyb250ZW5kQ2hhbm5l
bDsKIAotZW51bSBjbGFzcyBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHsKK2VudW0gY2xhc3Mg
RGlzY29ubmVjdFJlYXNvbiB7CiAgICAgSW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkLAogICAgIElu
c3BlY3RvckRlc3Ryb3llZAogfTsKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGRvbWFpbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVh
c29uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChG
cm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KIAogcHJvdGVjdGVkOgpAQCAtNTcs
NyArNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKLSAgICAKKwog
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JB
Z2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDQwMTA4ZWI0OWI0ZTliZGQ0ODMz
ZjVhOGZhZDM1MzdlYmJkYmFiNGMuLmJjYzA5ODgyMTRhNjFkZjFlYTY3MzQzZDUzMjI2MTUyNWU3
ZWY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApAQCAtMzEsMTcgKzMxLDE3IEBACiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpJbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5KCkKK0FnZW50UmVnaXN0cnk6OkFnZW50UmVnaXN0cnkoKQogewogfQogCi12b2lk
IEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
QWdlbnRCYXNlPiBhZ2VudCkKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6YXBwZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQogewogICAgIG1fYWdlbnRzLmFwcGVuZChX
VEY6Om1vdmUoYWdlbnQpKTsKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQordm9pZCBBZ2VudFJl
Z2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJh
c2U+IGFnZW50KQogewogICAgIG1fZXh0cmFEb21haW5zLmFwcGVuZChhZ2VudC0+ZG9tYWluTmFt
ZSgpKTsKIApAQCAtNDksMTkgKzQ5LDE5IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6
YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlCiB9CiAj
ZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgQWdlbnRSZWdp
c3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7IGkrKykKICAgICAgICAgbV9h
Z2VudHNbaV0tPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIGJh
Y2tlbmREaXNwYXRjaGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojp3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNv
bikKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlz
Y29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Fn
ZW50cy5zaXplKCk7IGkrKykKICAgICAgICAgbV9hZ2VudHNbaV0tPndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6
ZGlzY2FyZEFnZW50cygpCit2b2lkIEFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2VudHMoKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2VudHMuc2l6ZSgpOyBpKyspCiAgICAgICAg
IG1fYWdlbnRzW2ldLT5kaXNjYXJkQWdlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKaW5kZXggOGI3NzU3
ZjhjYTU1YjkyMzNmNWVkY2NjOGMzYmIyOWY3ZGY2NmNlZS4uOTYyZjAwNmRmNzI3MTNjMmQ5NDdm
ZTg3NTc5NGM4Nzk4MDk1NmM0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTMyLDE5ICszMiwyMCBA
QAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7Citj
bGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2U7Ci1jbGFzcyBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bDsKLWVudW0gY2xhc3MgSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjsKIAotY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7CitlbnVtIGNsYXNzIERpc2Nvbm5l
Y3RSZWFzb247CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFnZW50UmVnaXN0cnkgewogcHVi
bGljOgotICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkoKTsKKyAgICBBZ2VudFJlZ2lzdHJ5KCk7
CiAKICAgICB2b2lkIGFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPik7
CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOwotICAgIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24p
OworICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCos
IEJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChEaXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lkIGRpc2NhcmRBZ2VudHMoKTsKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpAQCAtNTUsOCArNTYsOCBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRoZXNlIGFyZSBkZWNsYXJlZCBoZXJlIHRvIGF2
b2lkIE1TVkMgZnJvbSB0cnlpbmcgdG8gY3JlYXRlIGRlZmF1bHQgaXBsZW1lbnRhdGlvbnMgd2hp
Y2ggd291bGQKICAgICAvLyBpbnZvbHZlIGdlbmVyYXRpbmcgYSBjb3B5IGNvbnN0cnVjdG9yIGFu
ZCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIHRoZSBWZWN0b3Igb2Ygc3RkOjp1bmlxdWVf
cHRycy4KLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KGNvbnN0IEluc3BlY3RvckFnZW50UmVn
aXN0cnkmKSA9IGRlbGV0ZTsKLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5JiBvcGVyYXRvcj0o
Y29uc3QgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRlOworICAgIEFnZW50UmVnaXN0
cnkoY29uc3QgQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRlOworICAgIEFnZW50UmVnaXN0cnkmIG9w
ZXJhdG9yPShjb25zdCBBZ2VudFJlZ2lzdHJ5JikgPSBkZWxldGU7CiAKICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4+IG1fYWdlbnRzOwogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNw
cAppbmRleCAzMTU2NGQ4NzQ1NGVlNTUxZWU2OTI1MDIzYTc1YmM1N2ExOTRlMzBlLi5mODhjZmJk
YWJjMWRjOWNlYWY4ZjUwMzBjNjc1ZDQ5NGQ3NjAzODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcApAQCAtMzQsMjUgKzM0LDI1IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUmVm
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQp
CitCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jhc2UoUmVmPEJhY2tl
bmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpCiAgICAgOiBtX2JhY2tl
bmREaXNwYXRjaGVyKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlcikpCiAgICAgLCBtX2lkKGlk
KQogICAgICwgbV9hbHJlYWR5U2VudChmYWxzZSkKIHsKIH0KIAotYm9vbCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Citib29sIEJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0aXZlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gIW1fYWxyZWFkeVNlbnQgJiYgbV9iYWNrZW5kRGlzcGF0Y2hlci0+aXNBY3RpdmUoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFp
bHVyZShjb25zdCBFcnJvclN0cmluZyYgZXJyb3IpCit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2U6OnNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJiBlcnJvcikKIHsKICAg
ICBBU1NFUlQoZXJyb3IubGVuZ3RoKCkpOwogICAgIHNlbmRJZkFjdGl2ZShudWxscHRyLCBlcnJv
cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6
c2VuZElmQWN0aXZlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcGFydGlhbE1lc3NhZ2UsIGNv
bnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpCit2b2lkIEJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBh
cnRpYWxNZXNzYWdlLCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKQogewogICAg
IGlmIChtX2FscmVhZHlTZW50KQogICAgICAgICByZXR1cm47CkBAIC02MSwyMCArNjEsMjAgQEAg
dm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kSWZBY3Rp
dmUoUmVmUHRyPEluc3BlY3Rvck9iamUKICAgICBtX2FscmVhZHlTZW50ID0gdHJ1ZTsKIH0KIAot
UmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKQorUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhY2tlbmREaXNwYXRjaGVyKGZyb250ZW5kQ2hh
bm5lbCkpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZWdpc3RlckRp
c3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIEluc3BlY3RvclN1cHBsZW1l
bnRhbEJhY2tlbmREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKQordm9pZCBCYWNrZW5kRGlzcGF0Y2hl
cjo6cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluLCBTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKIHsKICAgICBhdXRvIHJlc3Vs
dCA9IG1fZGlzcGF0Y2hlcnMuYWRkKGRvbWFpbiwgZGlzcGF0Y2hlcik7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIFJl
ZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJh
Y2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gcGFyc2VkTWVzc2FnZTsKICAgICBpZiAoIUluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04o
bWVzc2FnZSwgcGFyc2VkTWVzc2FnZSkpIHsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAg
ICAgfQogCiAgICAgU3RyaW5nIGRvbWFpbiA9IG1ldGhvZC5zdWJzdHJpbmcoMCwgcG9zaXRpb24p
OwotICAgIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKiBkb21haW5EaXNw
YXRjaGVyID0gbV9kaXNwYXRjaGVycy5nZXQoZG9tYWluKTsKKyAgICBTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlciogZG9tYWluRGlzcGF0Y2hlciA9IG1fZGlzcGF0Y2hlcnMuZ2V0KGRvbWFp
bik7CiAgICAgaWYgKCFkb21haW5EaXNwYXRjaGVyKSB7CiAgICAgICAgIHJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgTWV0aG9kTm90Rm91bmQsICInIiArIGRvbWFpbiArICInIGRvbWFpbiB3
YXMgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybjsKQEAgLTEyOSw5ICsxMjksOSBAQCB2b2lk
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAgICAgZG9tYWluRGlzcGF0Y2hlci0+ZGlzcGF0Y2goY2FsbElkLCBkb21haW5NZXRob2Qs
IG1lc3NhZ2VPYmplY3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mJiByZXN1bHQsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpCit2
b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxsSWQsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYgcmVzdWx0LCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVy
cm9yKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFt
X2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGludm9jYXRpb25F
cnJvci5sZW5ndGgoKSkgewpAQCAtMTQyLDE1ICsxNDIsMTUgQEAgdm9pZCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWMKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXNwb25zZU1lc3NhZ2UgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgicmVzdWx0IiksIHJlc3VsdCk7CiAgICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRJbnRl
Z2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgY2FsbElkKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJlc3BvbnNlTWVzc2FnZS0+dG9KU09OU3Ry
aW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVz
cG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElk
LCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkg
Y29uc3QKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3Qg
bG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgY29uc3QKIHsKICAgICByZXBvcnRQcm90b2NvbEVycm9yKGNhbGxJ
ZCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UsIG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0
IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGRhdGEp
IGNvbnN0Cit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0
IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiYmIGRhdGEpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBlcnJvckNvZGVzW10g
PSB7CiAgICAgICAgIC0zMjcwMCwgLy8gUGFyc2VFcnJvcgpAQCAtMTY1LDcgKzE2NSw3IEBAIHZv
aWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3Qg
bG9uZyogY29uc3QgY2FsbElkLCBDCiAgICAgQVNTRVJUX0FSRyhlcnJvckNvZGUsICh1bnNpZ25l
ZCllcnJvckNvZGUgPCBXVEZfQVJSQVlfTEVOR1RIKGVycm9yQ29kZXMpKTsKICAgICBBU1NFUlRf
QVJHKGVycm9yQ29kZSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKIAotICAgIGlmICghbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXJyb3IgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElk
LCBDCiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlLT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoImlk
IiksIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7Cisg
ICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlLT50b0pT
T05TdHJpbmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblZhbHVlVHlwZSwgdHlw
ZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBEZWZhdWx0VmFsdWVUeXBlPgpAQCAtMjI3LDM3ICsy
MjcsMzcgQEAgc3RydWN0IEFzTWV0aG9kQnJpZGdlcyB7CiAgICAgc3RhdGljIGJvb2wgYXNWYWx1
ZShJbnNwZWN0b3JWYWx1ZSYgdmFsdWUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mIG91dHB1dCkg
eyByZXR1cm4gdmFsdWUuYXNWYWx1ZShvdXRwdXQpOyB9CiB9OwogCi1pbnQgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCitpbnQgQmFja2VuZERpc3BhdGNoZXI6OmdldElu
dGVnZXIoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCog
dmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xF
cnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8aW50LCBpbnQsIGludD4ob2Jq
ZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwgQXNNZXRob2RCcmlkZ2Vz
Ojphc0ludGVnZXIsICJJbnRlZ2VyIik7CiB9CiAKLWRvdWJsZSBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0RG91YmxlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4mIHByb3RvY29sRXJyb3JzKQorZG91YmxlIEJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUo
SW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVG
b3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMp
CiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8ZG91YmxlLCBkb3VibGUsIGRvdWJsZT4o
b2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwgQXNNZXRob2RCcmlk
Z2VzOjphc0RvdWJsZSwgIk51bWJlciIpOwogfQogCi1TdHJpbmcgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldFN0cmluZyhJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+JiBwcm90b2NvbEVycm9ycykKK1N0cmluZyBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5n
KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVl
Rm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3Jz
KQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFN0cmluZywgU3RyaW5nLCBTdHJpbmc+
KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsICIiLCBBc01ldGhvZEJy
aWRnZXM6OmFzU3RyaW5nLCAiU3RyaW5nIik7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldEJvb2xlYW4oSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPiYgcHJvdG9jb2xFcnJvcnMpCitib29sIEJhY2tlbmREaXNwYXRjaGVyOjpnZXRCb29sZWFu
KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVl
Rm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3Jz
KQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPGJvb2wsIGJvb2wsIGJvb2w+KG9iamVj
dCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIGZhbHNlLCBBc01ldGhvZEJyaWRn
ZXM6OmFzQm9vbGVhbiwgIkJvb2xlYW4iKTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChJbnNwZWN0b3JPYmplY3QqIG9i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFBy
b3BlcnR5VmFsdWU8UmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+LCBJbnNwZWN0b3JPYmplY3QqPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29s
RXJyb3JzLCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6OmFzT2JqZWN0LCAiT2JqZWN0Iik7CiB9
CiAKLVJlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dEFycmF5KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wq
IHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29s
RXJyb3JzKQorUmVmUHRyPEluc3BlY3RvckFycmF5PiBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJy
YXkoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFs
dWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJv
cnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UmVmUHRyPEluc3BlY3RvckFycmF5
PiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiwgSW5zcGVjdG9yQXJyYXkqPihvYmplY3QsIG5hbWUs
IHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6OmFz
QXJyYXksICJBcnJheSIpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gQmFja2Vu
ZERpc3BhdGNoZXI6OmdldFZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFJl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4sIEluc3BlY3RvclZh
bHVlKj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgbnVsbHB0ciwg
QXNNZXRob2RCcmlkZ2VzOjphc1ZhbHVlLCAiVmFsdWUiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuaAppbmRleCAwZjBhMjQ1OWExOWNmMWU3ZDQ2Y2I0MmQ1NjdjYmM3ZDAyZjRjNmFkLi5iMzAz
NzAwYTIwOWJiMjIyNjZiYWU4ZjRlNGRlOGRkMzI2ZmI5NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5oCkBAIC0zMywyNyArMzMsMjggQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOworY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7
CisKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFzcyBTdXBwbGVtZW50YWxCYWNrZW5kRGlz
cGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
PiB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQorICAgIFN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0
Y2hlcikKICAgICAgICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKSB7
IH0KLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigp
IHsgfQorICAgIHZpcnR1YWwgflN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAg
UmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAg
IFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKLWNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKK2NsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QmFja2VuZERpc3Bh
dGNoZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAgc3RhdGljIFJlZjxC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEZyb250ZW5kQ2hhbm5lbCopOwogCiAgICAgY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgQ2FsbGJhY2tCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJh
Y2tCYXNlPiB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsYmFja0Jhc2UoUmVmPEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICBDYWxsYmFja0Jhc2UoUmVm
PEJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwogCiAgICAgICAgIGJvb2wgaXNBY3RpdmUo
KSBjb25zdDsKICAgICAgICAgdm9pZCBzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYpOwpA
QCAtNjMsMTMgKzY0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZW5kSWZBY3RpdmUoUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJiBwYXJ0aWFsTWVzc2FnZSwgY29uc3QgRXJyb3JTdHJpbmcm
IGludm9jYXRpb25FcnJvcik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWY8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgICAgIFJlZjxCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICAgICAgaW50IG1faWQ7CiAg
ICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudDsKICAgICB9OwogCi0gICAgdm9pZCBjbGVhckZyb250
ZW5kKCkgeyBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7IH0KLSAgICBib29s
IGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsg
fQorICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRy
OyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9mcm9udGVuZENoYW5u
ZWw7IH0KIAogICAgIGVudW0gQ29tbW9uRXJyb3JDb2RlIHsKICAgICAgICAgUGFyc2VFcnJvciA9
IDAsCkBAIC04MCw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU2VydmVyRXJyb3IKICAgICB9
OwogCi0gICAgdm9pZCByZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBk
b21haW4sIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9p
ZCByZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIFN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCBkaXNwYXRjaChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYmIHJlc3VsdCwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25F
cnJvcik7CiAgICAgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNh
bGxJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3Q7
CkBAIC05NSwxMCArOTYsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IGdldEFycmF5KEluc3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9v
bCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9j
b2xFcnJvcnMpOwogCiBwcml2YXRlOgotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSA6IG1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgeyB9CisgICAg
QmFja2VuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBGcm9udGVuZENoYW5uZWwpCisgICAg
ICAgIDogbV9mcm9udGVuZENoYW5uZWwoRnJvbnRlbmRDaGFubmVsKSB7IH0KIAotICAgIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKj4gbV9k
aXNwYXRjaGVyczsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOworICAg
IEhhc2hNYXA8U3RyaW5nLCBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0
Y2hlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
CmluZGV4IGZhMGE4ZWFlODM5ZjVmZTQ3MTc0ZTRjYmJjOWRlNTc0MzJhNmI5NjEuLmEyYmY2ZjNj
MjRmZTlhMzMwZGEzY2ZkYWVhN2IyY2NmNjhjMzgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaApA
QCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsIHsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCkgeyB9CisgICAgdmlydHVhbCB+
RnJvbnRlbmRDaGFubmVsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA2NTUzZDU2YWNmZWI2NTk2MzAyYWVmNjNjNjFj
YTQ1ZmE5YzI1NWEwLi41YjQzNTA0NDliYTgxNDgzOWRmODg0YTk2NjJhZGRiOTlmZTE4MzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCi0gICAgLCBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQorICAgICwgbV9mcm9udGVuZENoYW5uZWwobnVs
bHB0cikKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAg
ICAgLCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9ucyh0cnVlKQogICAgICwg
bV9pc0F1dG9tYXRpY0luc3BlY3Rpb24oZmFsc2UpCkBAIC05NCwyMiArOTQsMjIgQEAgSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyKCkKIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6Omdsb2Jh
bE9iamVjdERlc3Ryb3llZCgpCiB7Ci0gICAgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CisgICAgZGlzY29ubmVj
dEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiAK
ICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwogfQogCi12b2lkIEpT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVj
dGlvbikKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJv
bnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uKQogewotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOwot
ICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcik7CisgICAgQVNTRVJUKCFt
X2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUKCFtX2JhY2tlbmREaXNwYXRjaGVyKTsKIAog
ICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNBdXRvbWF0aWNJbnNwZWN0aW9uOwogCi0g
ICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5uZWw7Ci0gICAgbV9p
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5k
Q2hhbm5lbDsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5k
Q2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0
ZUV4dHJhRG9tYWlucyhtX2FnZW50cy5leHRyYURvbWFpbnMoKSk7CkBAIC0xMTksMTYgKzExOSwx
NiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAogI2VuZGlmCiB9CiAKLXZvaWQgSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewotICAg
IGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250ZW5kQ2hh
bm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQocmVhc29uKTsKIAotICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIt
PmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNsZWFy
KCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRyOworICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LmNsZWFyKCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAgbV9pc0F1
dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAtMTQwLDggKzE0MCw4IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVj
dG9yRGlzY29ubmVjdFJlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewot
ICAgIGlmIChtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBpZiAobV9iYWNrZW5k
RGlzcGF0Y2hlcikKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2Fn
ZSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRB
UElCYWNrdHJhY2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCkBAIC0yMzEsMTIgKzIzMSwx
MiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6YXBwZW5kRXh0cmFB
Z2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogewogICAgIFN0cmluZyBkb21haW5OYW1lID0g
YWdlbnQtPmRvbWFpbk5hbWUoKTsKIAotICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChtX2luc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7Cisg
ICAgaWYgKG1fZnJvbnRlbmRDaGFubmVsKQorICAgICAgICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgp
KTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZEV4dHJhQWdlbnQoV1RGOjptb3ZlKGFnZW50KSk7CiAK
LSAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKG1fZnJvbnRlbmRD
aGFubmVsKQogICAgICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWluKGRv
bWFpbk5hbWUpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCA3NjBmNzBmYTI4ZDBkNjVlYzQ3NmQ1MmViM2VkZGY4YjliZmVmZmRmLi5lMWEyYzIw
M2M5ZjZiNTU1YjIyMjRjNzZhNDA2YzU0ZjJiZTQ0YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmgKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBKU1ZhbHVlOwogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBG
cm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNw
ZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5z
cGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLWNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNs
aWVudDsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6
CiAgICAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmKTsKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCk7CiAKLSAgICB2
b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0
b21hdGljSW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbiByZWFzb24pOworICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKEZyb250
ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAgICB2b2lkIGRpc2Nv
bm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2Fn
ZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2xvYmFsT2JqZWN0RGVz
dHJveWVkKCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdWdtZW50aW5nQ2xpZW50OyB9
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGll
bnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRl
IHsgbV9hdWdtZW50aW5nQ2xpZW50ID0gY2xpZW50OyB9CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKyAgICB2aXJ0dWFsIEZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9udGVu
ZENoYW5uZWw7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgb3ZlcnJpZGU7CiAjZW5kaWYKIApAQCAtMTEwLDkg
KzExMCw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7
CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsKICAgICBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7Ci0gICAgSW5zcGVjdG9yQWdlbnRSZWdp
c3RyeSBtX2FnZW50czsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsOwotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRz
OworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CisgICAgUmVmUHRyPEJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFJlZjxXVEY6OlN0b3B3
YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAgYm9vbCBtX2luY2x1ZGVOYXRpdmVDYWxs
U3RhY2tXaXRoRXhjZXB0aW9uczsKICAgICBib29sIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQWdlbnQuY3BwCmluZGV4IGU2MmVjMmVjMDRiMGE4YjNiNmFjYWYyMTBkOTg4Njg3ZWZl
NDE4YTAuLmJmMjQxYmE3NzgyZDljMDljYTZkYWQzNjA5MmI4MjFhNzJhODM4YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBZ2VudC5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBJbnNwZWN0b3JBZ2VudDo6fkluc3BlY3Rv
ckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3Rv
ckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5zcGVj
dG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERp
c2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwog
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCmluZGV4IDM4Yzll
ZWYyNzczMWE2OGRmMDA4OTVhNzVkNzVlNmY1ODViMWQzNGMuLmRmZWUyNWY2NjI5Yjk5YjRjZmY4
NWUyZjliODY5MjQzOTc3MDdmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaApAQCAtMzgsMjIgKzM4LDIyIEBA
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNs
YXNzIEluc3BlY3RvckVudmlyb25tZW50OwotY2xhc3MgSW5zcGVjdG9ySW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJz
OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyczsKIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIEluc3BlY3RvckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluc3BlY3RvckFnZW50KElu
c3BlY3RvckVudmlyb25tZW50Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbiByZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNw
YXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzOwog
ICAgIHN0ZDo6cGFpcjxSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwCmluZGV4IDA1MDUxMTkzMTdlM2EyMTRkYjg4OTFlOTkyN2I3NmQxNzQyNTdhZmUuLjJm
ZjllMmY4OGM5MDk4Zjk3MWFhYzkwYmFmODhhZWUwZDU4MzFlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6fkluc3BlY3RvckNvbnNvbGVBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpDb25zb2xlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmgKaW5kZXggNzI2MmMwNzVhZDIwMjEyMWI1M2MwYjViNjM4MmFiZjhh
YzE2ZmYxZC4uMmZhODExYWU3ZTYyZjBjNDk3ZDA4NzcxNjE0YWMxZTRmZjk0MzRiMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTQ4LDE1ICs0OCwxNSBAQCBjbGFzcyBTY3JpcHRB
cmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQ29uc29sZUFnZW50IDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckNvbnNvbGVCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQ29u
c29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6
Q29uc29sZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yQ29uc29sZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQ29uc29sZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsK
QEAgLTgxLDggKzgxLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkNv
bnNvbGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBDb25zb2xl
TWVzc2FnZSogbV9wcmV2aW91c01lc3NhZ2U7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxD
b25zb2xlTWVzc2FnZT4+IG1fY29uc29sZU1lc3NhZ2VzOwogICAgIGludCBtX2V4cGlyZWRDb25z
b2xlTWVzc2FnZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAz
YWU3NjA5Y2FlMjBiN2FmMGFmMzYzNzM2OWI3ZjQyYzc0ODJmZDIwLi42ZmViOGEyNDhlNjYzOWRj
NjhkYzZjZWRiNjVlZjcyNzFlNzliMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcApAQCAtNjgsMTggKzY4LDE4IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6On5JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBJbnNwZWN0b3I6OkRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFz
b24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKLSAgICBi
b29sIHNraXBSZWNvbXBpbGUgPSByZWFzb24gPT0gSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6
SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkOworICAgIGJvb2wgc2tpcFJlY29tcGlsZSA9IHJlYXNv
biA9PSBEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQ7CiAgICAgZGlz
YWJsZShza2lwUmVjb21waWxlKTsKIH0KIApAQCAtMTgxLDcgKzE4MSw3IEBAIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhjZXB0aW9uUGF1c2VS
ZWFzb24oY29uc3QKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29uc29sZUFz
c2VydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHNjcmlwdERlYnVnU2VydmVy
KCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9ucykKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkFzc2VydCwgYnVpbGRBc3NlcnRQYXVzZVJlYXNvbihtZXNz
YWdlKSk7CisgICAgICAgIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkFzc2VydCwgYnVpbGRBc3NlcnRQYXVzZVJlYXNvbihtZXNzYWdl
KSk7CiB9CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvckJyZWFr
cG9pbnRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYg
YWN0aW9ucywgYm9vbCBpc1JlZ2V4LCBib29sIGF1dG9Db250aW51ZSkKQEAgLTQ3MSw3ICs0NzEs
NyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0RnVuY3Rp
b25EZXRhaWxzKGVycm9yU3RyaW5nLCBmdW5jdGlvbklkLCAmZGV0YWlscyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNw
ZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5k
RGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYm
IGRhdGEpCiB7CiAgICAgaWYgKG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkKQogICAgICAgICBy
ZXR1cm47CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpj
YW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6cGF1c2UoRXJyb3JTdHJpbmcmKQogewotICAgIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1l
bnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6UGF1c2VPbk5l
eHRTdGF0ZW1lbnQsIG51bGxwdHIpOworICAgIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQo
SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpQYXVzZU9uTmV4
dFN0YXRlbWVudCwgbnVsbHB0cik7CiAKICAgICBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCA9
IHRydWU7CiB9CkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyopCiB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBT
dHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7CiAgICAgaWYgKHNjcmlwdERlYnVnU2VydmVyKCkucGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0
aW9ucykKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BWaW9sYXRpb25QYXVzZVJlYXNv
bihkaXJlY3RpdmVUZXh0KSk7CisgICAgICAgIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BWaW9s
YXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CiB9CiAKIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQpCkBAIC02NjQsMjIgKzY2NCwyMiBAQCB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgRGVw
cmVjYQogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIAogICAgIC8vIElmIGEg
aGlnaCBsZXZlbCBwYXVzZSBwYXVzZSByZWFzb24gaXMgbm90IGFscmVhZHkgc2V0LCB0cnkgdG8g
aW5mZXIgYSByZWFzb24gZnJvbSB0aGUgZGVidWdnZXIuCi0gICAgaWYgKG1fYnJlYWtSZWFzb24g
PT0gSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXIpIHsK
KyAgICBpZiAobV9icmVha1JlYXNvbiA9PSBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246Ok90aGVyKSB7CiAgICAgICAgIHN3aXRjaCAoc2NyaXB0RGVidWdTZXJ2
ZXIoKS5yZWFzb25Gb3JQYXVzZSgpKSB7CiAgICAgICAgIGNhc2UgSlNDOjpEZWJ1Z2dlcjo6UGF1
c2VkRm9yQnJlYWtwb2ludDogewogICAgICAgICAgICAgSlNDOjpCcmVha3BvaW50SUQgZGVidWdn
ZXJCcmVha3BvaW50SWQgPSBzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNpbmdCcmVha3BvaW50SUQo
KTsKICAgICAgICAgICAgIGlmIChkZWJ1Z2dlckJyZWFrcG9pbnRJZCAhPSBtX2NvbnRpbnVlVG9M
b2NhdGlvbkJyZWFrcG9pbnRJRCkgewotICAgICAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBJ
bnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpCcmVha3BvaW50Owor
ICAgICAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQ7CiAgICAgICAgICAgICAgICAgbV9icmVh
a0F1eERhdGEgPSBidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihkZWJ1Z2dlckJyZWFrcG9pbnRJ
ZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIEpTQzo6RGVidWdnZXI6OlBhdXNlZEZvckRlYnVnZ2VyU3RhdGVtZW50OgotICAgICAg
ICAgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
OjpSZWFzb246OkRlYnVnZ2VyU3RhdGVtZW50OworICAgICAgICAgICAgbV9icmVha1JlYXNvbiA9
IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RGVidWdnZXJT
dGF0ZW1lbnQ7CiAgICAgICAgICAgICBtX2JyZWFrQXV4RGF0YSA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBKU0M6OkRlYnVnZ2VyOjpQYXVzZWRGb3JFeGNlcHRp
b246Ci0gICAgICAgICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbjo6RXhjZXB0aW9uOworICAgICAgICAgICAgbV9icmVha1JlYXNv
biA9IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXhjZXB0
aW9uOwogICAgICAgICAgICAgbV9icmVha0F1eERhdGEgPSBidWlsZEV4Y2VwdGlvblBhdXNlUmVh
c29uKGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUsIGluamVjdGVkU2NyaXB0KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEpTQzo6RGVidWdnZXI6OlBhdXNlZEF0U3RhdGVtZW50OgpA
QCAtNzU1LDcgKzc1NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGlu
dWUoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXN1bWVkKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiYgZGF0YSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKEluc3Bl
Y3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKQogewogICAgIG1fYnJlYWtSZWFzb24gPSBicmVh
a1JlYXNvbjsKICAgICBtX2JyZWFrQXV4RGF0YSA9IFdURjo6bW92ZShkYXRhKTsKQEAgLTgxNCw3
ICs4MTQsNyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFzc2VydFBhdXNlZChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcpCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xl
YXJCcmVha0RldGFpbHMoKQogewotICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3JEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpPdGhlcjsKKyAgICBtX2JyZWFrUmVhc29uID0g
SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpPdGhlcjsKICAg
ICBtX2JyZWFrQXV4RGF0YSA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaAppbmRleCA5YmUzMjMzMTUxMDk0NTU4NzhiMDFjMzRiMDYxOGM1NjM4MTQ0NTJjLi4xNDlh
OThlN2ZiYjFiYWYwNzYyZmQ4OTc3YWE5MjQwMjBkY2ZhMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIEluc3BlY3RvclZhbHVlOwogY2xh
c3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5zcGVj
dG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yOjpEZWJ1Z2dlckJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtOTEsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBoYW5kbGVDb25zb2xlQXNzZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAK
LSAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mJiBkYXRhKTsKKyAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5z
cGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5l
eHRTdGF0ZW1lbnQoKTsKLSAgICB2b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIGRhdGEpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mJiBkYXRhKTsKICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25z
dCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogCiAgICAgY2xhc3MgTGlzdGVuZXIgewpAQCAtMTU1
LDggKzE1NSw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPEpTQzo6QnJlYWtwb2lu
dElELCBTdHJpbmc+IERlYnVnU2VydmVyQnJlYWtwb2ludElEVG9CcmVha3BvaW50SWRlbnRpZmll
cjsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
PiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yRGVidWdnZXJCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKICAgICBMaXN0ZW5lciogbV9saXN0ZW5lciB7bnVsbHB0cn07CiAg
ICAgSlNDOjpFeGVjU3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGUge251bGxwdHJ9OwogICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKQEAgLTE2NSw3ICsxNjUs
NyBAQCBwcml2YXRlOgogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwIG1f
amF2YVNjcmlwdEJyZWFrcG9pbnRzOwogICAgIERlYnVnU2VydmVyQnJlYWtwb2ludElEVG9CcmVh
a3BvaW50SWRlbnRpZmllciBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3Rv
ckJyZWFrcG9pbnRJZGVudGlmaWVyOwogICAgIEpTQzo6QnJlYWtwb2ludElEIG1fY29udGludWVU
b0xvY2F0aW9uQnJlYWtwb2ludElEOwotICAgIEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb24gbV9icmVha1JlYXNvbjsKKyAgICBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb24gbV9icmVha1JlYXNvbjsKICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKICAgICBib29sIG1fZW5hYmxlZCB7ZmFsc2V9Owog
ICAgIGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQge2ZhbHNlfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDljOTcyNWE1ZmIwODc3ODEzMzhmM2VlNTdiZDE1M2Rk
ZmE1NDM2MTkuLmY0NTM5MzVlYjA4N2VkNjMyNDBhMGQ5ODM3OTIzMmJlOTQ4YThiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMjk2LDkgKzI5Niw5IEBAIHN0YXRpYyB2
b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zRm9yVHlwZVByb2ZpbGluZyhWTSYgdm0sIGJvb2wg
c2hvdWxkRW5hYmxlVHlwCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiBy
ZWFzb24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgaWYgKHJlYXNvbiAhPSBJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQgJiYgbV9p
c1R5cGVQcm9maWxpbmdFbmFibGVkKQorICAgIGlmIChyZWFzb24gIT0gRGlzY29ubmVjdFJlYXNv
bjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkICYmIG1faXNUeXBlUHJvZmlsaW5nRW5hYmxlZCkK
ICAgICAgICAgc2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGZhbHNlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCAwN2U0ZmVjZjk3MGNkOTcwMmE0YmY5ZWI1MDNhNmVm
OTg2NmQyNWU0Li41N2QwYmMyNTA1NmU4ZWY0ZDA4MTlmYjc1MGZjMWUzZjIzYzI0Y2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNTAsMTIgKzUwLDEyIEBAIGNsYXNzIEluc3Bl
Y3RvckFycmF5OwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yUnVudGltZUFnZW50
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvclJ1bnRpbWVCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9y
UnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yUnVudGltZUFnZW50KTsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JSdW50aW1lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJy
b3JTdHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0ds
b2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZGM0NGNjN2ZmNjEyMTFiNjc3MjZiMzBj
YmI0ZjRhMGNiMzg4MTdmMS4uZTc3M2U3MTAwYjQwYWUxZTNlYTk0MjJlOGUxMzlhMDhkMTI5OGE4
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcApAQCAtNDAsMTMg
KzQwLDEzIEBAIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluCiB7CiB9CiAKLXZvaWQgSlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFu
bmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJ1bnRpbWVGcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwor
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uIHJlYXNv
bikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmgK
aW5kZXggYzY1MDY4ZTY4OWVjNDUzYTNjMjU0M2E2ZjhkNDg1N2VlMDhjZjc5Ny4uZjg3MGNkNzQw
ZThjOGZiODAzNGNiNWQzYTUxNTA0ZWZhY2MyN2FhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudC5oCkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvclJ1bnRpbWVBZ2VudCB7CiBwdWJsaWM6
CiAgICAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCos
IEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBKU0M6OlZNJiBnbG9iYWxWTSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBl
eGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOwpAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZSB7IH0KIAogcHJpdmF0ZToK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3RvclJ1bnRpbWVCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRh
YmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKaW5kZXgg
OGY3YjQ3MDQxYWQ4MjA4NmVkNGJmYWVjNzIwYzQzMmE2ODRkZTMxNS4uODkyNjI5YWJmNjY2ZGRl
Zjk0YmM2Zjg2MWZmMTY2ZmYxMmY2Y2VjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQuaApAQCAtNDUsMTQgKzQ1LDE0IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgbnVsbHB0cik7CiAg
ICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURpc3BhdGNoZXIobV9hbHRl
cm5hdGVEaXNwYXRjaGVyLmdldCgpKTsKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5z
ZXRCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcik7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24pIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVy
LT5zZXRCYWNrZW5kRGlzcGF0Y2hlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDhhOGU3YWQxMDJjNDRkNTI5OGVm
YWJkNTZjY2VkMDI5MzJiODJlMWUuLjI0NTZhYzU5MTlkOGEwZDU2NTlkNmY3MWNjMDc1ODhmNmM3
NzY4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVu
dGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ckNsaWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVnbWVudGFibGVJbnNw
ZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVu
dCopID0gMDsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2Vu
dChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgPSAwOwogCiAgICAgYm9vbCBj
b25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhIWZyb250ZW5kQ2hhbm5lbCgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKaW5kZXggZGQ2YWE0NzhjOGQ0OGUyNzk2MzRjYzAw
ZWMwNWM5YmI1MjU1N2I4My4uNzJmYjBkZDNkMzdjMWIxZmIyZTkyMDdjOWYyYzFkM2IyNGIzMjRm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtMzQsNyArMzQsOCBA
QAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsOworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworCiBzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUluZm87CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUgewpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
dXJsKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gV2ViCiAgICAgdmlydHVhbCBib29s
IGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVj
dChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNB
dXRvbWF0aWNJbnNwZWN0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kaWNhdGlu
Zyhib29sKSB7IH0gLy8gRGVmYXVsdCBpcyB0byBkbyBub3RoaW5nLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKaW5kZXggNTQyNTExMTRlNjNh
YzU0YTgzNTQzODY2YWRiNTQyMzdlYzk0MWJlYi4uMDYwNjI3ZmJkNDUyZTQ3N2IyMDYyMDViYjQ2
ZWFkM2RiODQxOWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAKIHR5cGVkZWYgVmVj
dG9yPFJlbW90ZUluc3BlY3RvckJsb2NrPiBSZW1vdGVJbnNwZWN0b3JRdWV1ZTsKIAotY2xhc3Mg
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+LCBwdWJs
aWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKK2NsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiwgcHVibGljIEZyb250ZW5kQ2hhbm5lbCB7
CiBwdWJsaWM6CiAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZSosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwgTlNT
dHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dhYmxl
VHlwZSk7CiAgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CmluZGV4IDAyMTE1YWUxYmZmMzM2MGQy
MjY0ZjBhNDAxZGVjYjE0ZjhlYzQ1NWMuLmRmOTBiZTkyZDViNGY1MzRhZWYwYzNlMDZmZWNhZjUz
MTk1ZDYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQpAQCAtMTk1LDcgKzE5
NSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gJyVzKicg
JSBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSk6CiAgICAg
ICAgICAgICBpZiBfdHlwZS5pc19hbm9ueW1vdXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdJ
bnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JXMqJyAlIChfdHlwZS50eXBlX2Rv
bWFpbigpLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0KHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuICclc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JXMqJyAl
IChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0KHBhcmFtZXRlci5wYXJh
bWV0ZXJfbmFtZSkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVybiAn
SW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzKicgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21h
aW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKIApAQCAtMjcwLDcgKzI3MCw3IEBAIGNsYXNzIENw
cEdlbmVyYXRvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gY3BwX25hbWUKICAgICAgICAgaWYg
aXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUpOgogICAgICAgICAgICAgaWYgX3R5cGUuaXNfYW5v
bnltb3VzOgotICAgICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yJXNCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1Y2Zp
cnN0KHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuICcl
c0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9t
YWluX25hbWUsIHVjZmlyc3QocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkKICAgICAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6OlByb3RvY29sOjolczo6
JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIF90eXBlLnJhd19uYW1lKCkp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5k
ZXggMDAyODZhYThlM2VkMjY4NDMwMGY4ZWE3YzYwYzY0Mjk3ZmE5ZGRiZi4uMDVmMzUzMDk3NGUw
NTlkN2Y5YzY0ZjlmZTg5NjBlNDUzMmNhZmY4ZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMu
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Y3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTY2LDEyICs2NiwxMiBAQCAke2luY2x1ZGVz
fQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVi
bGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6
bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7
IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hl
cj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0
Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJl
ZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogIiIi
KQogCkBAIC04Myw2MSArODMsNjEgQEAgcHJpdmF0ZToKICNlbmRpZiAvLyAhZGVmaW5lZCgke2hl
YWRlckd1YXJkU3RyaW5nfSkiIiIpCiAKICAgICBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlckhl
YWRlckRvbWFpbkhhbmRsZXJJbnRlcmZhY2VEZWNsYXJhdGlvbiA9ICgKLSAgICAiIiJjbGFzcyBB
bHRlcm5hdGVJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMg
QWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworICAgICIiImNsYXNzIEFsdGVy
bmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9y
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB+QWx0ZXJu
YXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAke2NvbW1hbmREZWNsYXJh
dGlvbnN9CiB9OyIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyRG9tYWluSGFuZGxl
ckRlY2xhcmF0aW9uID0gKAotICAgICIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gSW5zcGVjdG9y
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgIiIiJHtjbGFzc0Fu
ZEV4cG9ydE1hY3JvfSAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1
YmxpYzoKICR7Y29tbWFuZERlY2xhcmF0aW9uc30KIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5J
bnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmly
dHVhbCB+JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsiIiIpCiAK
ICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkRpc3BhdGNoZXJEZWNsYXJhdGlvbiA9
ICgKLSAgICAiIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99IEluc3BlY3RvciR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKKyAgICAiIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99
ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29u
c3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNz
YWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMgUmVmPCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3Zl
cnJpZGU7CiAke2NvbW1hbmREZWNsYXJhdGlvbnN9CiBwcml2YXRlOgotICAgIEluc3BlY3RvciR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyJiwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciopOwotICAgIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
IG1fYWdlbnQ7CisgICAgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNw
YXRjaGVyJiwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgICR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRB
bHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIg
PSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVy
KEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0
Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBw
cml2YXRlOgotICAgIEFsdGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworICAgIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwogI2VuZGlmCiB9OyIiIikK
IAogICAgIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyQXN5bmNDb21tYW5kRGVjbGFyYXRpb24gPSAo
Ci0gICAgIiIiICAgICR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtjYWxsYmFja05hbWV9IDogcHVi
bGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7
CisgICAgIiIiICAgICR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtjYWxsYmFja05hbWV9IDogcHVi
bGljIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgJHtjYWxsYmFja05hbWV9KFJlZjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiYmLCBpbnQgaWQpOworICAgICAgICAke2NhbGxiYWNrTmFtZX0oUmVmPEJhY2tlbmREaXNw
YXRjaGVyPiYmLCBpbnQgaWQpOwogICAgICAgICB2b2lkIHNlbmRTdWNjZXNzKCR7b3V0UGFyYW1l
dGVyc30pOwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkICR7Y29tbWFuZE5hbWV9KCR7aW5QYXJh
bWV0ZXJzfSkgPSAwOyIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25T
bWFsbFN3aXRjaCA9ICgKLSAgICAiIiJ2b2lkIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCisgICAgIiIidm9pZCAke2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1l
dGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0
b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
Zjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOwogCiAke2Rp
c3BhdGNoQ2FzZXN9CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRo
b2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXFwnJywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1ldGhv
ZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVw
b3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91
bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2RvbWFpbk5hbWV9IiwgJy4nLCBtZXRob2QsICInIHdh
cyBub3QgZm91bmQiKSk7CiB9IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRh
dGlvbkxhcmdlU3dpdGNoID0gKAotIiIidm9pZCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwg
UmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQorIiIidm9pZCAke2RvbWFpbk5hbWV9QmFj
a2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjwk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgdHlw
ZWRlZiB2b2lkIChJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OipDYWxs
SGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBt
ZXNzYWdlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cjo6KkNhbGxIYW5kbGVyKShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNz
YWdlKTsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxlcj4gRGlzcGF0Y2hN
YXA7CiAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBkaXNw
YXRjaE1hcCwgKCkpOwogICAgIGlmIChkaXNwYXRjaE1hcC5pc0VtcHR5KCkpIHsKQEAgLTE1NCw3
ICsxNTQsNyBAQCAke2Rpc3BhdGNoQ2FzZXN9CiAKICAgICBIYXNoTWFwPFN0cmluZywgQ2FsbEhh
bmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3BhdGNoTWFwLmZpbmQobWV0aG9kKTsKICAgICBpZiAo
aXQgPT0gZGlzcGF0Y2hNYXAuZW5kKCkpIHsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+
cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2RvbWFpbk5hbWV9IiwgJy4nLCBt
ZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5v
dEZvdW5kLCBtYWtlU3RyaW5nKCdcXCcnLCAiJHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9kLCAi
JyB3YXMgbm90IGZvdW5kIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjIsMTMg
KzE2MiwxMyBAQCAke2Rpc3BhdGNoQ2FzZXN9CiB9IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkRvbWFpbkNvbnN0cnVjdG9yID0gKAotICAgICIiIlJlZjxJbnNwZWN0
b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IEluc3BlY3RvciR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciogYWdlbnQpCisgICAgIiIiUmVmPCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4g
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyLCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KiBhZ2VudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3Ike2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcigqYmFja2Vu
ZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcjo6SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKKyR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKEJh
Y2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgLCBtX2FsdGVybmF0ZURpc3Bh
dGNoZXIobnVsbHB0cikKQEAgLTE4NCwxNSArMTg0LDE1IEBAIEluc3BlY3RvciR7ZG9tYWluTmFt
ZX1CYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyCiAke2luUGFyYW1ldGVyRGVjbGFyYXRpb25zfQogICAgIGlmIChwcm90b2NvbEVycm9ycy0+
bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0
KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgXCclc1wnIGNhbid0IGJlIHByb2Nlc3NlZCIsICIk
e2RvbWFpbk5hbWV9LiR7Y29tbWFuZE5hbWV9Iik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3Jz
KSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNh
bGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RG
Ojptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAiIiIpCiAK
ICAgICBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uQXN5bmNDb21tYW5kID0gKAotIiIi
SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFj
a05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYm
IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlk
KSB7IH0KKyIiIiR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiR7Y2FsbGJh
Y2tOYW1lfTo6JHtjYWxsYmFja05hbWV9KFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5k
RGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RG
Ojptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQogCi12b2lkIEluc3BlY3RvciR7ZG9t
YWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiR7Y2FsbGJhY2tOYW1lfTo6c2VuZFN1
Y2Nlc3MoJHtmb3JtYWxQYXJhbWV0ZXJzfSkKK3ZvaWQgJHtkb21haW5OYW1lfUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6JHtjYWxsYmFja05hbWV9OjpzZW5kU3VjY2Vzcygke2Zvcm1hbFBhcmFt
ZXRlcnN9KQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKICR7b3V0UGFyYW1ldGVyQXNzaWdubWVudHN9CkBAIC0yMDAs
MjYgKzIwMCwyNiBAQCAke291dFBhcmFtZXRlckFzc2lnbm1lbnRzfQogfSIiIikKIAogICAgIEZy
b250ZW5kRGlzcGF0Y2hlckRvbWFpbkRpc3BhdGNoZXJEZWNsYXJhdGlvbiA9ICgKLSIiIiR7Y2xh
c3NBbmRFeHBvcnRNYWNyb30gSW5zcGVjdG9yJHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0Y2hl
ciB7CisiIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99ICR7ZG9tYWluTmFtZX1Gcm9udGVuZERpc3Bh
dGNoZXIgewogcHVibGljOgotICAgIEluc3BlY3RvciR7ZG9tYWluTmFtZX1Gcm9udGVuZERpc3Bh
dGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwp
IDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7
IH0KKyAgICAke2RvbWFpbk5hbWV9RnJvbnRlbmREaXNwYXRjaGVyKEZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkgeyB9
CiAke2V2ZW50RGVjbGFyYXRpb25zfQogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworICAgIEZyb250ZW5kQ2hhbm5lbCog
bV9mcm9udGVuZENoYW5uZWw7CiB9OyIiIikKIAogICAgIFByb3RvY29sT2JqZWN0QnVpbGRlckRl
Y2xhcmF0aW9uUHJlbHVkZSA9ICgKICIiIiAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xh
c3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
bV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBT
VEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAg
ICAgICAgQnVpbGRlcihSZWY8Lyoke29iamVjdFR5cGV9Ki9JbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qJHtvYmplY3RUeXBlfSovSW5z
cGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3Zl
KG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09
IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtMjMy
LDkgKzIzMiw5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZjwke29iamVjdFR5cGV9PiByZWxlYXNl
KCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmll
bGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJU
KHNpemVvZigke29iamVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoJHtv
YmplY3RUeXBlfSkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAot
ICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPCR7b2JqZWN0VHlwZX0+Kj4oJnJlc3VsdCkp
OwogICAgICAgICB9CiAgICAgfTsKQEAgLTI0NSwxOSArMjQ1LDE5IEBAICR7Y29uc3RydWN0b3JF
eGFtcGxlfQogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmll
bGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9IiIiKQogCiAgICAgUHJv
dG9jb2xPYmplY3RSdW50aW1lQ2FzdCA9ICgKLSIiIlJlZlB0cjwke29iamVjdFR5cGV9PiBCaW5k
aW5nVHJhaXRzPCR7b2JqZWN0VHlwZX0+OjpydW50aW1lQ2FzdChSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JWYWx1ZT4mJiB2YWx1ZSkKKyIiIlJlZlB0cjwke29iamVjdFR5cGV9PiBCaW5kaW5n
VHJhaXRzPCR7b2JqZWN0VHlwZX0+OjpydW50aW1lQ2FzdChSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
JiYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1
bHQ7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0OwogICAgIGJvb2wgY2FzdFN1
Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChyZXN1bHQpOwogICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIEJp
bmRpbmdUcmFpdHM8JHtvYmplY3RUeXBlfT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKHJl
c3VsdC5nZXQoKSk7CiAjZW5kaWYgIC8vICFBU1NFUlRfRElTQUJMRUQKLSAgICBDT01QSUxFX0FT
U0VSVChzaXplb2YoJHtvYmplY3RUeXBlfSkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
JHtvYmplY3RUeXBlfSo+KHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFz
ZSo+KHJlc3VsdC5nZXQoKSkpOworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZigke29iamVjdFR5
cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JHtvYmplY3RUeXBlfSo+KHN0YXRpY19jYXN0PEluc3Bl
Y3Rvck9iamVjdEJhc2UqPihyZXN1bHQuZ2V0KCkpKTsKIH0KICIiIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9o
ZWFkZXIucHkKaW5kZXggYTI0MWM1MzA2YTQyMTI3MzM1M2IwMDVjODUwNmY4NDhmNTkyOTQzOC4u
MjNlN2Q5OTczYzZmMjA3ZGI5NDI4MzUzZjc3ZTQwMmMzZGRkMTcxOSAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hl
cl9oZWFkZXIucHkKQEAgLTgyLDcgKzgyLDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJI
ZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBs
aW5lcy5hcHBlbmQoJyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykn
KQogICAgICAgICBmb3IgZG9tYWluIGluIGRvbWFpbnM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBl
bmQoc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sICdjbGFzcyBBbHRlcm5h
dGVJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVyOycgJSBkb21haW4uZG9tYWluX25hbWUpKQor
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21haW4o
ZG9tYWluLCAnY2xhc3MgQWx0ZXJuYXRlJXNCYWNrZW5kRGlzcGF0Y2hlcjsnICUgZG9tYWluLmRv
bWFpbl9uYW1lKSkKICAgICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpJykKICAgICAgICAgcmV0dXJuICdcbicuam9pbihs
aW5lcykKIApAQCAtMTk3LDQgKzE5Nyw0IEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVySGVh
ZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIHJldHVybiBzZWxmLndyYXBfd2l0aF9n
dWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgVGVtcGxhdGUoQ3BwVGVtcGxhdGVzLkJhY2tlbmREaXNw
YXRjaGVySGVhZGVyRG9tYWluRGlzcGF0Y2hlckRlY2xhcmF0aW9uKS5zdWJzdGl0dXRlKE5vbmUs
ICoqaGFuZGxlcl9hcmdzKSkKIAogICAgIGRlZiBfZ2VuZXJhdGVfZGlzcGF0Y2hlcl9kZWNsYXJh
dGlvbl9mb3JfY29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgcmV0dXJuICIgICAgdm9p
ZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpOyIgJSBjb21tYW5kLmNvbW1hbmRfbmFtZQorICAgICAgICByZXR1cm4gIiAgICB2b2lkICVz
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOyIgJSBjb21tYW5k
LmNvbW1hbmRfbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1l
bnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5k
ZXggNTgyZGU0YjRhNGNhZGJhY2FiZmY5MmQwZmMzMWM5MGU5MzE2NDFhMS4uZGNkNjY0YTcwNjk3
ZjY1ZDgyOGY4MTM3ZTJmOGE1NWYyZTUyNDNjNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uLnB5CkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRj
aGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgZGVzdHJ1Y3Rv
cl9hcmdzID0gewogICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUK
ICAgICAgICAgfQotICAgICAgICBkZXN0cnVjdG9yID0gJ0luc3BlY3RvciUoZG9tYWluTmFtZSlz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0nICUgZGVzdHJ1Y3Rvcl9hcmdzCisgICAgICAgIGRlc3Ry
dWN0b3IgPSAnJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On4lKGRvbWFp
bk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfScgJSBkZXN0cnVjdG9yX2FyZ3MK
ICAgICAgICAgcmV0dXJuIHNlbGYud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21haW4oZG9tYWluLCBk
ZXN0cnVjdG9yKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
c19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CkBAIC0xMjMsNyArMTIzLDcgQEAgY2xhc3MgQ3Bw
QmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAg
ICAgICAgICAgICAgICdkb21haW5OYW1lJzogZG9tYWluLmRvbWFpbl9uYW1lLAogICAgICAgICAg
ICAgICAgICdjb21tYW5kTmFtZSc6IGNvbW1hbmQuY29tbWFuZF9uYW1lCiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBjYXNlcy5hcHBlbmQoJyAgICAgICAgICAgIHsgIiUoY29tbWFuZE5hbWUp
cyIsICZJbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVyOjolKGNvbW1hbmRO
YW1lKXMgfSwnICUgYXJncykKKyAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgnICAgICAgICAgICAg
eyAiJShjb21tYW5kTmFtZSlzIiwgJiUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXI6OiUo
Y29tbWFuZE5hbWUpcyB9LCcgJSBhcmdzKQogCiAgICAgICAgIHN3aXRjaF9hcmdzID0gewogICAg
ICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCkBAIC0xOTIsNyArMTky
LDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgICdzdWNjZXNzT3V0UGFyYW0nOiBvdXRfc3VjY2Vz
c19hcmd1bWVudAogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpbl9wYXJhbWV0ZXJfZGVj
bGFyYXRpb25zLmFwcGVuZCgnICAgICUocGFyYW1ldGVyVHlwZSlzIGluXyUocGFyYW1ldGVyTmFt
ZSlzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiUoa2V5ZWRHZXRNZXRob2QpcyhwYXJh
bXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgJShz
dWNjZXNzT3V0UGFyYW0pcywgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOycgJSBwYXJhbV9hcmdzKQor
ICAgICAgICAgICAgaW5fcGFyYW1ldGVyX2RlY2xhcmF0aW9ucy5hcHBlbmQoJyAgICAlKHBhcmFt
ZXRlclR5cGUpcyBpbl8lKHBhcmFtZXRlck5hbWUpcyA9IEJhY2tlbmREaXNwYXRjaGVyOjolKGtl
eWVkR2V0TWV0aG9kKXMocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoIiUocGFy
YW1ldGVyTmFtZSlzIiksICUoc3VjY2Vzc091dFBhcmFtKXMsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsnICUgcGFyYW1fYXJncykKIAogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFs
OgogICAgICAgICAgICAgICAgIG9wdGlvbmFsX2luX3BhcmFtZXRlcl9zdHJpbmcgPSAnJShwYXJh
bWV0ZXJOYW1lKXNfdmFsdWVGb3VuZCA/ICUocGFyYW1ldGVyRXhwcmVzc2lvbilzIDogbnVsbHB0
cicgJSBwYXJhbV9hcmdzCkBAIC0yMDksNyArMjA5LDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3Bh
dGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBj
YWxsYmFjay0+ZGlzYWJsZSgpOycpCi0gICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1l
bnRzLmFwcGVuZCgnICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVy
cm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZl
ckVycm9yLCBlcnJvcik7JykKKyAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMu
YXBwZW5kKCcgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3Io
JmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7JykKICAgICAg
ICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIHJldHVybjsn
KQogICAgICAgICAgICAgbWV0aG9kX3BhcmFtZXRlcnMuYXBwZW5kKCdjYWxsYmFjay5jb3B5UmVm
KCknKQogCkBAIC0yNTEsOSArMjUxLDkgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogCiAgICAgICAgIGxpbmVzID0gW10KICAg
ICAgICAgaWYgbGVuKGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzKSA9PSAwOgotICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCd2b2lkIEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNo
ZXI6OiUoY29tbWFuZE5hbWUpcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0Jikn
ICUgY29tbWFuZF9hcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkICUoZG9tYWlu
TmFtZSlzQmFja2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JiknICUgY29tbWFuZF9hcmdzKQogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkIEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2Vu
ZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiBtZXNzYWdlKScgJSBjb21tYW5kX2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJ3ZvaWQgJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShjb21tYW5kTmFtZSlz
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpJyAlIGNvbW1hbmRf
YXJncykKICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKIAogICAgICAgICBpZiBsZW4oY29tbWFu
ZC5jYWxsX3BhcmFtZXRlcnMpID4gMDoKQEAgLTI3MCw3ICsyNzAsNyBAQCBjbGFzcyBDcHBCYWNr
ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIEVycm9yU3RyaW5nIGVycm9yOycpCiAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7JykKICAgICAgICAgaWYgY29tbWFuZC5pc19hc3luYzoKLSAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIFJlZjxJbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6JShjYWxsYmFja05hbWUpcz4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3IElu
c3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolKGNhbGxiYWNr
TmFtZSlzKG1fYmFja2VuZERpc3BhdGNoZXIuY29weVJlZigpLCBjYWxsSWQpKTsnICUgY29tbWFu
ZF9hcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgUmVmPCUoZG9tYWluTmFtZSlz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolKGNhbGxiYWNrTmFtZSlzPiBjYWxsYmFjayA9IGFk
b3B0UmVmKCpuZXcgJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiUoY2Fs
bGJhY2tOYW1lKXMobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOycgJSBj
b21tYW5kX2FyZ3MpCiAgICAgICAgIGlmIGxlbihjb21tYW5kLnJldHVybl9wYXJhbWV0ZXJzKSA+
IDA6CiAgICAgICAgICAgICBsaW5lcy5leHRlbmQob3V0X3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMp
CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIG1fYWdlbnQtPiUoY29tbWFuZE5hbWUpcyglKGlu
dm9jYXRpb25QYXJhbWV0ZXJzKXMpOycgJSBjb21tYW5kX2FyZ3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBf
ZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGJkYjhkYmMyN2MzODE0NzA1Y2MwZDBmZjI0
NGI3OWFkYjM1YzJlNTEuLjc5ODE1N2EwNjA4OWU1MjMyODVjM2Q0YmYxZmEwYWQ3MTExNmViM2Ug
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xMDUsNyAr
MTA1LDcgQEAgY2xhc3MgQ3BwRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0
b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgICdmb3JtYWxQYXJhbWV0ZXJzJzogIiwgIi5qb2lu
KGZvcm1hbF9wYXJhbWV0ZXJzKQogICAgICAgICB9CiAKLSAgICAgICAgbGluZXMuYXBwZW5kKCd2
b2lkIEluc3BlY3RvciUoZG9tYWluTmFtZSlzRnJvbnRlbmREaXNwYXRjaGVyOjolKGV2ZW50TmFt
ZSlzKCUoZm9ybWFsUGFyYW1ldGVycylzKScgJSBldmVudF9hcmdzKQorICAgICAgICBsaW5lcy5h
cHBlbmQoJ3ZvaWQgJShkb21haW5OYW1lKXNGcm9udGVuZERpc3BhdGNoZXI6OiUoZXZlbnROYW1l
KXMoJShmb3JtYWxQYXJhbWV0ZXJzKXMpJyAlIGV2ZW50X2FyZ3MpCiAgICAgICAgIGxpbmVzLmFw
cGVuZCgneycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+
IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsnKQogICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9k
IiksIEFTQ0lJTGl0ZXJhbCgiJShkb21haW5OYW1lKXMuJShldmVudE5hbWUpcyIpKTsnICUgZXZl
bnRfYXJncykKQEAgLTExNiw2ICsxMTYsNiBAQCBjbGFzcyBDcHBGcm9udGVuZERpc3BhdGNoZXJJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBX
VEY6Om1vdmUocGFyYW1zT2JqZWN0KSk7JykKIAogICAgICAgICBsaW5lcy5hcHBlbmQoJycpCi0g
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLT5zZW5k
TWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQorICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7JykKICAgICAgICAgbGluZXMuYXBwZW5k
KCd9JykKICAgICAgICAgcmV0dXJuICJcbiIuam9pbihsaW5lcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
ZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCA2ZDUyMDFmMDcyN2NiMzRiYjY0NDc3NjRj
Y2YwMjhhOTRmMzZjNTAyLi5mYjJkZTRmNjFmM2ZjMDFkN2E0NjA4MDhhOTg1NWM1YWRhMmY5MDAw
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC05OCw3
ICs5OCw3IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVy
YXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxpbmVzLmFwcGVu
ZChzZWxmLl9nZW5lcmF0ZV9ldmVudF9zaWduYXR1cmUoZG9tYWluLCBldmVudCkpCiAgICAgICAg
IGxpbmVzLmFwcGVuZCgneycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hh
bm5lbCgpOycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOycpCiAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIGlmICghZnJvbnRlbmRDaGFubmVsKScpCiAgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgICAgICByZXR1cm47JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGNmZjk4OWUxNjE4OGFhNDQw
NzNiOWI1YjlhM2ZiMzY0ZDY1YjM0ZWYuLjUzYmEzMmY5YzVmNWRiMTFiNDIzNDVlMzQ3MmY4NDE5
OGIxMzI2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTM5
LDE4ICszOSwxOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRl
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNr
ZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6
Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2
YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CiB9OwogCiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xh
c3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0
ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgaW50IGluX2RhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBp
bl9xdWVyeSkgPSAwOwpAQCAtMTQ4LDEwICsxNDgsMTAgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLWNs
YXNzIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICAvLyBOYW1lZCBh
ZnRlciBwYXJhbWV0ZXIgJ3NjcmVlbkNvbG9yJyB3aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZl
bnQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcy4KICAgICBlbnVtIGNsYXNzIFNj
cmVlbkNvbG9yIHsKQEAgLTE2Niw0MSArMTY2LDQxIEBAIHB1YmxpYzoKICAgICAgICAgWWVsbG93
ID0gNSwKICAgICAgICAgQmxhY2sgPSA2LAogICAgIH07IC8vIGVudW0gY2xhc3MgUHJpbnRDb2xv
cgotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVy
cm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5O
YW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90
ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVz
dGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29s
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0
X291dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKLSAgICBjbGFzcyBF
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrIDogcHVibGljIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CisgICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJpbmcm
LCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBv
cHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVy
bmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Iq
IG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJl
dHVyblZhbHVlc0NhbGxiYWNrKFJlZjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiYmLCBpbnQgaWQpOworICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZh
bHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKICAgICAgICAg
dm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4q
IG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1w
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGlu
dD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJy
b3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBz
Y3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxp
c3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3Ry
aW5nPiogcHJpbnRDb2xvcik7CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzQ2FsbGJhY2s+JiYgY2FsbGJhY2spID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZVNRTFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBp
bl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvdXRf
Y29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVl
bkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRD
b2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKLSAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNDYWxs
YmFjayA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2UgeworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhFcnJvclN0cmluZyYs
IGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBv
dXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QqIG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBp
bnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OkVycm9yPiYgb3V0X3NxbEVycm9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOworICAg
IGNsYXNzIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrIDogcHVibGljIEJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXhlY3V0ZVNRTEFzeW5jQ2Fs
bGJhY2soUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBp
ZCk7CisgICAgICAgIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hl
cj4mJiwgaW50IGlkKTsKICAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBu
b3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVz
LCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25z
dCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xv
cik7CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTEFzeW5jKEVycm9yU3RyaW5n
JiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZjxFeGVjdXRl
U1FMQXN5bmNDYWxsYmFjaz4mJiBjYWxsYmFjaykgPSAwOwogcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgfkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmly
dHVhbCB+RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CiAKLWNsYXNzIElu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3Rh
dGljIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNo
ZXIqLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0
b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIHZvaWQgZXhlY3V0
ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgZXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGV4ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0gICAgdm9pZCBleGVj
dXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBl
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5z
cGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVTUUxTeW5jKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgZXhlY3V0ZVNR
TEFzeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwogcHJp
dmF0ZToKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKiBtX2FnZW50OworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERp
c3BhdGNoZXImLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgIERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0QWx0ZXJuYXRl
RGlzcGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKiBh
bHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURp
c3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0
ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRlOgotICAgIEFsdGVy
bmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcjsKKyAgICBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0
ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07CiAKQEAgLTI1MywxNSArMjUzLDE1IEBAIHByaXZhdGU6
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KCkgeyB9CitEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAKLVJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyPiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCitSZWY8RGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcj4gRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRj
aGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3Bh
dGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hl
ciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQorICAgIDogU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCiAgICAgLCBtX2FnZW50
KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAg
ICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0yNzAsOSArMjcwLDkgQEAgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3IKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRp
c3BhdGNoZXJGb3JEb21haW4oQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCB0aGlzKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNh
bGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2Fn
ZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQs
IGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7
Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsK
IAogICAgIGlmIChtZXRob2QgPT0gImV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMi
KQogICAgICAgICBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGNhbGxJZCwgbWVz
c2FnZSk7CkBAIC0yODMsMTkgKzI4MywxOSBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAogICAg
IGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZVNRTEFzeW5jIikKICAgICAgICAgZXhlY3V0ZVNR
TEFzeW5jKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLics
IG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9k
Tm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRhdGFiYXNlIiwgJy4nLCBtZXRob2QsICInIHdh
cyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2NvbEVycm9ycyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdlLmdldE9iamVj
dChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAgIGludCBpbl9k
YXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJv
dG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVy
YWwoInF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBpbnQgaW5f
ZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJy
b3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5n
dGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNv
bWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFz
ZS5leGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzIik7Ci0gICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3Rv
Y29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVz
c2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVu
Q29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxp
c3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CisgICAgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAg
bV9hZ2VudC0+ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhlcnJvciwgaW5fZGF0
YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90aW1l
c3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3Fs
RXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMsICZvdXRfcHJpbnRD
b2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CkBAIC0zNDUsOSArMzQ1LDkgQEAg
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09w
dGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVz
cG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi1JbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXND
YWxsYmFjayhSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNo
ZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQorRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2so
UmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogQmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEY6Om1vdmUoYmFja2VuZERpc3BhdGNoZXIp
LCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNj
ZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVtbk5h
bWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbm90ZXMsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIHZhbHVlcywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+
KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJv
ciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5h
dGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBwcmludENv
bG9yKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBheWxvYWQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3IpCiB7CiAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGlmIChjb2x1bW5OYW1lcykKQEAgLTM3MywxNiArMzczLDE2IEBAIHZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsCiAgICAgc2VuZElmQWN0aXZlKFdURjo6bW92ZShqc29uTWVzc2FnZSksIEVy
cm9yU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2NvbEVycm9ycyA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdlLmdldE9iamVj
dChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAgIGludCBpbl9k
YXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJv
dG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVy
YWwoInF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBpbnQgaW5f
ZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJy
b3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5n
dGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNv
bWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFz
ZS5leGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIpOwotICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90
b2NvbEVycm9ycykpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1l
c3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0zOTUsMjYgKzM5NSwyNiBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbgogCiAgICAg
RXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxs
YmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7CisgICAgUmVmPERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJl
dHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
Q2FsbGJhY2sobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOwogICAgIG1f
YWdlbnQtPmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGVycm9yLCBpbl9kYXRh
YmFzZUlkLCBpbl9xdWVyeSwgY2FsbGJhY2suY29weVJlZigpKTsKIAogICAgIGlmIChlcnJvci5s
ZW5ndGgoKSkgewogICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOwotICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CisgICAgICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERp
c3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5
bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKK3ZvaWQgRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3RvY29sRXJyb3JzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3NhZ2UuZ2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtc0NvbnRhaW5lcik7Ci0gICAgaW50IGluX2Rh
dGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXND
b250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGludCBpbl9k
YXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVy
LmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9xdWVyeSA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRT
dHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxw
dHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0
aCgpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiU29t
ZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIkRhdGFiYXNl
LmV4ZWN1dGVTUUxTeW5jIik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFBy
b3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQ
YXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2Vu
ZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3Rv
Y29sRXJyb3JzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzNiw3ICs0MzYsNyBA
QCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5j
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZQogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKICAgICBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29s
b3I7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50
Q29sb3Igb3V0X3ByaW50Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTFN5
bmMoZXJyb3IsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5LCBvdXRfY29sdW1uTmFtZXMsICZvdXRf
bm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0
YWJhc2VJZCwgb3V0X3NxbEVycm9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3NjcmVlbkNv
bG9yLCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewpAQCAt
NDU0LDkgKzQ1NCw5IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdCksIGVycm9yKTsK
IH0KIAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVT
UUxBc3luY0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tl
bmREaXNwYXRjaGVyKSwgaWQpIHsgfQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8QmFj
a2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7
IH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhl
Y3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBk
b3VibGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmlu
ZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQordm9p
ZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJh
Y2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0
ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJlZjxJbnNwZWN0b3JP
YmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29u
TWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBjb2x1bW5OYW1l
cyk7CkBAIC00NzIsMTYgKzQ3MiwxNiBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6c2VuZFN1YwogICAgIHNl
bmRJZkFjdGl2ZShXVEY6Om1vdmUoanNvbk1lc3NhZ2UpLCBFcnJvclN0cmluZygpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2NvbEVycm9ycyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdlLmdldE9iamVjdChB
U0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAgIGludCBpbl9kYXRh
YmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29u
dGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9j
b2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwo
InF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBpbnQgaW5fZGF0
YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5n
ZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3Jz
LmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3Ry
aW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgo
KSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUg
YXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5l
eGVjdXRlU1FMQXN5bmMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJv
dG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBh
cmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKKyAgICAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5k
RGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9j
b2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDk0LDEyICs0OTQsMTIg
QEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5
bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3AKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAg
IFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVj
dXRlU1FMQXN5bmNDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3IEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayht
X2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7CisgICAgUmVmPERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVj
dXRlU1FMQXN5bmNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElk
KSk7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTEFzeW5jKGVycm9yLCBpbl9kYXRhYmFzZUlkLCBp
bl9xdWVyeSwgY2FsbGJhY2suY29weVJlZigpKTsKIAogICAgIGlmIChlcnJvci5sZW5ndGgoKSkg
ewogICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOwotICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CisgICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6
OlNlcnZlckVycm9yLCBlcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC02ODQs
MTQgKzY4NCwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNz
IEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1f
cmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RF
UD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnBy
ZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAg
ICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9i
amVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9yT2JqZWN0PiYmIG9i
amVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWls
ZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNzE2LDkgKzcxNiw5IEBAIHB1Ymxp
YzoKICAgICAgICAgUmVmPEVycm9yPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAg
Q09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5
KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fu
bm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8RXJyb3I+Kj4oJnJl
c3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTczMiw3ICs3MzIsNyBAQCBwdWJsaWM6CiAg
ICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewot
ICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFu
ZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4
IDkwNTg3MTA5OGU0NzVhMzljYTZmOTA2ZDU1NTYwZjgwOTk0ZDcxMTQuLjQ1MDIzMGQ4MDA3MDQw
MDhiZjQ3MTY2MjZkODVmODJlY2Y2YmE5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlv
bmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMzksMTggKzM5
LDE4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7
CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0g
V1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNw
YXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShk
aXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07
CiAKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciA6
IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRl
cm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29u
c3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGlu
X3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVl
bkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRl
cm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVu
Q29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVy
bmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSA9IDA7CiB9OwpAQCAtMTQz
LDEwICsxNDMsMTAgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQot
Y2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNz
IEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7CiAjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICAvLyBOYW1lZCBhZnRlciBwYXJhbWV0ZXIgJ3NjcmVl
bkNvbG9yJyB3aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZlbnQgZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycy4KICAgICBlbnVtIGNsYXNzIFNjcmVlbkNvbG9yIHsKQEAgLTE2MSwyNyArMTYx
LDI3IEBAIHB1YmxpYzoKICAgICAgICAgWWVsbG93ID0gNSwKICAgICAgICAgQmxhY2sgPSA2LAog
ICAgIH07IC8vIGVudW0gY2xhc3MgUHJpbnRDb2xvcgotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
QWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90
ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBp
bl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYg
aW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9h
bHRlcm5hdGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYg
aW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5f
cGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29s
b3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3Rlcywg
ZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3Zh
bHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2Rh
dGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBv
dXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
KiBvdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywg
Y29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJh
c2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVy
cm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5f
cHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBv
cHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5n
Piogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4q
IG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3Nx
bEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0
X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpD
b2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29u
c3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3Nj
cmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9h
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyog
b3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwg
aW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpFcnJvcj4mIG91dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlBy
aW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKIHBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcigpOworICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIGZpbmFs
IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNo
ZXIgeworY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
IG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gY3Jl
YXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogcHJpdmF0
ZToKLSAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1l
dGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2
b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKKyAgICBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqKTsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9h
Z2VudDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1Ymxp
YzoKLSAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0
ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0
ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hl
cjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgQWx0ZXJuYXRlRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwogI2VuZGlmCiB9OwogCkBAIC0y
MzQsMTUgKzIzNCwxNSBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXI6On5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQogCi1SZWY8
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFn
ZW50KQorUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0
Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IEluc3BlY3Rv
clN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQorRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmRE
aXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcihudWxscHRy
KQpAQCAtMjUxLDQ2ICsyNTEsNDYgQEAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3IKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlMaXRlcmFs
KCJEYXRhYmFzZSIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5z
cGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIGlmIChtZXRob2QgPT0gImV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMiKQogICAgICAgICBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZSBpZiAobWV0aG9kID09ICJleGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnMiKQogICAgICAgICBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMo
Y2FsbElkLCBtZXNzYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJEYXRhYmFzZSIsICcuJywgbWV0aG9k
LCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3Vu
ZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBm
b3VuZCIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYg
bWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3RvY29sRXJyb3JzID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3NhZ2UuZ2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFy
YW1zIiksIHBhcmFtc0NvbnRhaW5lcik7CiAgICAgYm9vbCBjb2x1bW5OYW1lc192YWx1ZUZvdW5k
ID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGluX2NvbHVt
bk5hbWVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFtc0NvbnRh
aW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCAmY29sdW1uTmFtZXNfdmFs
dWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJh
eShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgJmNv
bHVtbk5hbWVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIG5v
dGVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fbm90ZXMgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlM
aXRlcmFsKCJub3RlcyIpLCAmbm90ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OworICAgIFN0cmluZyBpbl9ub3RlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFy
YW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoIm5vdGVzIiksICZub3Rlc192YWx1ZUZv
dW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCB0aW1lc3RhbXBfdmFsdWVGb3Vu
ZCA9IGZhbHNlOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+IGlu
X3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAmdGltZXN0YW1wX3Zh
bHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8ZG91YmxlPiBpbl90aW1lc3RhbXAgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwg
JnRpbWVzdGFtcF92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCB2
YWx1ZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gaW5fdmFsdWVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVj
dChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksICZ2YWx1ZXNf
dmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVj
dChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksICZ2YWx1ZXNf
dmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgcGF5bG9hZF92YWx1
ZUZvdW5kID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGlu
X3BheWxvYWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0VmFsdWUocGFyYW1zQ29u
dGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgJnBheWxvYWRfdmFsdWVGb3Vu
ZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlPiBpbl9wYXlsb2FkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICZwYXlsb2FkX3ZhbHVlRm91
bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIGRhdGFiYXNlSWRfdmFsdWVGb3Vu
ZCA9IGZhbHNlOwotICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRh
dGFiYXNlSWQiKSwgJmRhdGFiYXNlSWRfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OworICAgIGludCBpbl9kYXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIo
cGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgJmRhdGFi
YXNlSWRfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgc3FsRXJy
b3JfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gaW5fc3FsRXJyb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0
KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCAmc3FsRXJy
b3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fc3FsRXJyb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
T2JqZWN0KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCAm
c3FsRXJyb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgc2Ny
ZWVuQ29sb3JfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFN0cmluZyBpbl9zY3JlZW5Db2xvciA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksICZzY3JlZW5Db2xvcl92YWx1ZUZvdW5k
LCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3RyaW5nIGluX3NjcmVlbkNvbG9yID0gQmFj
a2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0
ZXJhbCgic2NyZWVuQ29sb3IiKSwgJnNjcmVlbkNvbG9yX3ZhbHVlRm91bmQsIHByb3RvY29sRXJy
b3JzLmdldCgpKTsKICAgICBib29sIGFsdGVybmF0ZUNvbG9yc192YWx1ZUZvdW5kID0gZmFsc2U7
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGluX2FsdGVybmF0ZUNvbG9y
cyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShwYXJhbXNDb250YWluZXIu
Z2V0KCksIEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksICZhbHRlcm5hdGVDb2xvcnNf
dmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNv
bG9ycyIpLCAmYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKICAgICBib29sIHByaW50Q29sb3JfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFN0cmluZyBp
bl9wcmludENvbG9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJh
bXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAmcHJpbnRDb2xv
cl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3RyaW5nIGluX3ByaW50
Q29sb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksICZwcmludENvbG9yX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xFcnJvcnMtPmxlbmd0aCgpKSB7
CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiU29tZSBhcmd1
bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIkRhdGFiYXNlLmV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+
cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsK
KyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElk
LCBCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1v
dmUocHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzEyLDcg
KzMxMiw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAgIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVy
bmF0ZUNvbG9yczsKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKICAgICBtX2FnZW50LT5leGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGVycm9yLCBjb2x1bW5OYW1lc192YWx1ZUZvdW5kID8g
aW5fY29sdW1uTmFtZXMuY29weVJlZigpIDogbnVsbHB0ciwgbm90ZXNfdmFsdWVGb3VuZCA/ICZp
bl9ub3RlcyA6IG51bGxwdHIsIHRpbWVzdGFtcF92YWx1ZUZvdW5kID8gJmluX3RpbWVzdGFtcCA6
IG51bGxwdHIsIHZhbHVlc192YWx1ZUZvdW5kID8gaW5fdmFsdWVzLmNvcHlSZWYoKSA6IG51bGxw
dHIsIHBheWxvYWRfdmFsdWVGb3VuZCA/IGluX3BheWxvYWQuY29weVJlZigpIDogbnVsbHB0ciwg
ZGF0YWJhc2VJZF92YWx1ZUZvdW5kID8gJmluX2RhdGFiYXNlSWQgOiBudWxscHRyLCBzcWxFcnJv
cl92YWx1ZUZvdW5kID8gaW5fc3FsRXJyb3IuY29weVJlZigpIDogbnVsbHB0ciwgc2NyZWVuQ29s
b3JfdmFsdWVGb3VuZCA/ICZpbl9zY3JlZW5Db2xvciA6IG51bGxwdHIsIGFsdGVybmF0ZUNvbG9y
c192YWx1ZUZvdW5kID8gaW5fYWx0ZXJuYXRlQ29sb3JzLmNvcHlSZWYoKSA6IG51bGxwdHIsIHBy
aW50Q29sb3JfdmFsdWVGb3VuZCA/ICZpbl9wcmludENvbG9yIDogbnVsbHB0ciwgb3V0X2NvbHVt
bk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXls
b2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgb3V0
X2FsdGVybmF0ZUNvbG9ycywgJm91dF9wcmludENvbG9yKTsKIAogICAgIGlmICghZXJyb3IubGVu
Z3RoKCkpIHsKQEAgLTM0MCwyNCArMzQwLDI0IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJCiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJl
c3VsdCksIGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3Bl
Y3Rvck9iamVjdCYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmpl
Y3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwo
InBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRBcnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMi
KSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9ub3RlcyA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoIm5vdGVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKLSAgICBkb3VibGUgaW5fdGltZXN0YW1wID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OmdldERvdWJsZShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1w
IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IGluX3ZhbHVlcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIp
LCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU+IGluX3BheWxvYWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0VmFsdWUocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIGludCBpbl9kYXRhYmFzZUlkID0g
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMu
Z2V0KCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fc3FsRXJy
b3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBudWxscHRyLCBwcm90b2NvbEVycm9y
cy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3NjcmVlbkNvbG9yID0gSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgi
c2NyZWVuQ29sb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJ
SUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQo
KSk7Ci0gICAgU3RyaW5nIGluX3ByaW50Q29sb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwcmludENv
bG9yIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fY29sdW1uTmFtZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVz
IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fbm90ZXMg
PSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVND
SUlMaXRlcmFsKCJub3RlcyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAg
ZG91YmxlIGluX3RpbWVzdGFtcCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBudWxscHRyLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBpbl92YWx1ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMu
Z2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBpbl9wYXlsb2Fk
ID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVND
SUlMaXRlcmFsKCJwYXlsb2FkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAg
ICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGluX3NxbEVycm9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xF
cnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9zY3JlZW5Db2xvciA9IEJhY2tlbmREaXNwYXRj
aGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVl
bkNvbG9yIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gQmFja2VuZERpc3Bh
dGNoZXI6OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRl
cm5hdGVDb2xvcnMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFN0cmlu
ZyBpbl9wcmludENvbG9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBudWxscHRyLCBwcm90b2Nv
bEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAg
ICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRz
IG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0
UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxp
ZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKKyAgICAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJv
dG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzc5LDcgKzM3OSw3
IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAgIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNv
bG9yczsKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJp
bnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKICAgICBtX2FnZW50LT5leGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIGluX2NvbHVtbk5hbWVzLmNvcHlSZWYoKSwgaW5fbm90
ZXMsIGluX3RpbWVzdGFtcCwgaW5fdmFsdWVzLmNvcHlSZWYoKSwgaW5fcGF5bG9hZC5jb3B5UmVm
KCksIGluX2RhdGFiYXNlSWQsIGluX3NxbEVycm9yLmNvcHlSZWYoKSwgaW5fc2NyZWVuQ29sb3Is
IGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCksIGluX3ByaW50Q29sb3IsIG91dF9jb2x1bW5O
YW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9h
ZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91dF9h
bHRlcm5hdGVDb2xvcnMsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0
aCgpKSB7CkBAIC01NzcsMTQgKzU3NywxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNU
QVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWls
ZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVj
dG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9i
amVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5v
RmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNjA5LDkg
KzYwOSw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPEVycm9yPiByZWxlYXNlKCkKICAgICAgICAg
ewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1
bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJv
cikgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwor
ICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5zcGVj
dG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAg
ICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxS
ZWY8RXJyb3I+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTYyNSw3ICs2MjUs
NyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNy
ZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8
Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Rv
bWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5kZXggYWVkMDNh
MWFmYTU0YjgyM2FkODVhYTk5MGZmNTc1N2M3ZWZjYzliOC4uYjc4MTRkOTMwOTY4MTc5ZGRkYWYz
MWQ3MmVlMWU0NjBiMWUxNDg3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6
ZXMuanNvbi1yZXN1bHQKQEAgLTM5LDIzICszOSwyMyBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3Mg
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2Vu
ZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNo
ZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAg
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmRE
aXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNw
YXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3Rv
ck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmly
dHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQor
ICAgIHZpcnR1YWwgfkFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJZCkgPSAwOwogfTsKLWNsYXNz
IEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0
ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJ
ZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UyKGxvbmcgY2FsbElkKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQpID0gMDsKQEAgLTE2
MSwxOCArMTYxLDE4IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
LWNsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFz
cyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgQWx0
ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXI7CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpCiAKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKK2NsYXNzIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShFcnJvclN0cmluZyYpID0gMDsKIHBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcigpOworICAgIHZpcnR1YWwgfk5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CitjbGFzcyBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEoRXJyb3JTdHJpbmcmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRSZXNvdXJjZTIoRXJyb3JTdHJpbmcmKSA9IDA7CkBAIC0xODIsNDYgKzE4
Miw0NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTYoRXJyb3JTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTcoRXJyb3JTdHJpbmcmKSA9
IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmRE
aXNwYXRjaGVyIHsKK2NsYXNzIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJs
aWMgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBt
ZXNzYWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciosIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsK
IHByaXZhdGU6Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2Ux
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwogcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciopOwotICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KiBtX2FnZW50OworICAgIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNo
ZXImLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgIE5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0
Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5h
dGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNo
ZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3Bh
dGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRlOgotICAgIEFsdGVybmF0ZUlu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsK
KyAgICBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3Bh
dGNoZXI7CiAjZW5kaWYKIH07CiAKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDog
cHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCBOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29u
c3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJp
ZGU7CiBwcml2YXRlOgotICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgbG9hZFJlc291
cmNlMihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpOwotICAgIHZvaWQgbG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgbG9hZFJlc291cmNlNChsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAg
IHZvaWQgbG9hZFJlc291cmNlNShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgbG9hZFJlc291cmNlNihsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgbG9h
ZFJlc291cmNlNyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qm
IG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5z
cGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTIobG9uZyBjYWxs
SWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3Vy
Y2UzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZv
aWQgbG9hZFJlc291cmNlNChsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNz
YWdlKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
ck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2U2KGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlNyhs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZhdGU6Ci0g
ICAgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqKTsKLSAgICBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciog
bV9hZ2VudDsKKyAgICBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVy
JiwgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNo
ZXIoQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRl
RGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVy
OyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZU5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRj
aGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJbnNw
ZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7Cisg
ICAgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRj
aGVyOwogI2VuZGlmCiB9OwogCkBAIC0yNzQsMTYgKzI3NCwxNiBAQCBwcml2YXRlOgogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6On5JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQot
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6On5OZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5OZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcigpIHsgfQogCi1SZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4g
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQorUmVmPE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+
IE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIsIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQp
KTsKIH0KIAotSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2Vu
ZERpc3BhdGNoZXIsIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBh
Z2VudCkKLSAgICA6IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tl
bmREaXNwYXRjaGVyKQorTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIE5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlcihudWxscHRyKQpAQCAtMjkyLDE3ICsyOTIsMTcgQEAgSW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3IKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJG
b3JEb21haW4oQVNDSUlMaXRlcmFsKCJOZXR3b3JrMSIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29u
c3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQg
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVm
PEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIGlm
IChtZXRob2QgPT0gImxvYWRSZXNvdXJjZTEiKQogICAgICAgICBsb2FkUmVzb3VyY2UxKGNhbGxJ
ZCwgbWVzc2FnZSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRo
b2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1ldGhvZCwgIicg
d2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJv
dG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1h
a2VTdHJpbmcoJ1wnJywgIk5ldHdvcmsxIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQi
KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJl
c291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5z
cGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC0zMTgsMTMgKzMxOCwx
MyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJj
ZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNl
bmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLVJlZjxJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyLCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdl
bnQpCitSZWY8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4gTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRj
aGVyLCBhZ2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9y
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9y
U3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyOjpOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNw
YXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIqIGFnZW50KQorICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERp
c3BhdGNoZXIpCiAgICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIp
CkBAIC0zMzMsMTEgKzMzMywxMSBAQCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
OjpJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvcgogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwo
Ik5ldHdvcmszIiksIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVm
PEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgdHlwZWRlZiB2b2lkIChJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdHlwZWRlZiB2b2lk
IChOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIENhbGxIYW5kbGVyPiBEaXNwYXRjaE1hcDsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoRGlzcGF0Y2hNYXAsIGRpc3BhdGNoTWFwLCAoKSk7CiAgICAgaWYgKGRpc3BhdGNo
TWFwLmlzRW1wdHkoKSkgewpAQCAtMzQ1LDEzICszNDUsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBtZXQKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgICAgICAgICBDYWxsSGFu
ZGxlciBoYW5kbGVyOwogICAgICAgICB9IGNvbW1hbmRzW10gPSB7Ci0gICAgICAgICAgICB7ICJs
b2FkUmVzb3VyY2UxIiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRS
ZXNvdXJjZTEgfSwKLSAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTIiLCAmSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMiB9LAotICAgICAgICAgICAgeyAi
bG9hZFJlc291cmNlMyIsICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2Fk
UmVzb3VyY2UzIH0sCi0gICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U0IiwgJkluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQgfSwKLSAgICAgICAgICAgIHsg
ImxvYWRSZXNvdXJjZTUiLCAmSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlNSB9LAotICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNiIsICZJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2IH0sCi0gICAgICAgICAgICB7
ICJsb2FkUmVzb3VyY2U3IiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6Omxv
YWRSZXNvdXJjZTcgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTEiLCAmTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMSB9LAorICAgICAgICAgICAgeyAibG9hZFJl
c291cmNlMiIsICZOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UyIH0sCisg
ICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UzIiwgJk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OmxvYWRSZXNvdXJjZTMgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTQiLCAmTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNCB9LAorICAgICAgICAgICAgeyAibG9h
ZFJlc291cmNlNSIsICZOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1IH0s
CisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U2IiwgJk5ldHdvcmszQmFja2VuZERpc3BhdGNo
ZXI6OmxvYWRSZXNvdXJjZTYgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTciLCAmTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyB9LAogICAgICAgICB9OwogICAg
ICAgICBzaXplX3QgbGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChjb21tYW5kcyk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCkBAIC0zNjAsMTQgKzM2MCwxNCBA
QCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcg
Y2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAogCiAgICAgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5k
bGVyPjo6aXRlcmF0b3IgaXQgPSBkaXNwYXRjaE1hcC5maW5kKG1ldGhvZCk7CiAgICAgaWYgKGl0
ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1l
dGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMyIsICcuJywgbWV0aG9kLCAi
JyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQ
cm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwg
bWFrZVN0cmluZygnXCcnLCAiTmV0d29yazMiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3Vu
ZCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgICgoKnRoaXMpLippdC0+dmFsdWUp
KGNhbGxJZCwgbWVzc2FnZS5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVy
KSB7CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwg
ZXJyb3IpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6Omxv
YWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtMzk5LDcgKzM5
OSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291
cmNlMihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+
c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2UzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlm
IChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIEluc3Bl
Y3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxs
SWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNChsb25nIGNhbGxJZCwgY29uc3QgSW5z
cGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291
cmNlNChsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNw
YXRjaGVyKSB7CkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVz
dWx0KSwgZXJyb3IpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNo
ZXI6OmxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2
b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlNShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQog
ICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTYobG9uZyBj
YWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25z
ZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlNyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5h
dGVEaXNwYXRjaGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12
YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggMWZhYjIzNjNmOTcwZWE4NjdiMjE3YmEyYTRhZWIyZDgw
MjBjMWVjMi4uMDYyYjYyMDk4YTBmNTQ5Mjg5MjRiMDQ5YWVlMmZhNTBlNWMyZjIwYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApA
QCAtMzksMTggKzM5LDE4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRl
cm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQ
dHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRy
PEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
IHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKIH07CiAKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyIHsKK2NsYXNzIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciA6IHB1
YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+
QWx0ZXJuYXRlSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKCkgeyB9Cisg
ICAgdmlydHVhbCB+QWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGxvbmcgY2FsbElk
KSA9IDA7CiB9OwogCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRF
Uk5BVEVfRElTUEFUQ0hFUlMpCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERp
c3BhdGNoZXI7CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlMpCiAKLWNsYXNzIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIgeworY2xhc3MgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBwdWJs
aWM6CiAgICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1ldGVyICdyZXR1cm5WYWx1ZScgd2hpbGUgZ2Vu
ZXJhdGluZyBjb21tYW5kL2V2ZW50IGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlLgogICAgIGVu
dW0gY2xhc3MgUmV0dXJuVmFsdWUgewpAQCAtMTYxLDI1ICsxNjEsMjUgQEAgcHVibGljOgogICAg
ICAgICBNYWdlbnRhID0gNywKICAgICAgICAgWWVsbG93ID0gOCwKICAgICB9OyAvLyBlbnVtIGNs
YXNzIFJldHVyblZhbHVlCi0gICAgdmlydHVhbCB2b2lkIGNvbW1hbmRXaXRoRW51bVJldHVyblZh
bHVlKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6UmV0dXJuVmFsdWUqIG91dF9yZXR1cm5WYWx1ZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShFcnJvclN0cmluZyYsIENvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlKiBvdXRfcmV0dXJuVmFsdWUp
ID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmlydHVhbCB+Q29tbWFuZERvbWFpbkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yQ29tbWFuZERvbWFp
bkJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVyIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJ
bnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVm
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0
YXRpYyBSZWY8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERp
c3BhdGNoZXIqLCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwg
UmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAg
dm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgY29tbWFuZFdpdGhFbnVt
UmV0dXJuVmFsdWUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7
CiBwcml2YXRlOgotICAgIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3RvckNvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwgQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciopOworICAgIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hF
UlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUlu
c3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CisgICAg
dm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIg
PSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRlOgotICAgIEFsdGVybmF0ZUluc3BlY3Rv
ckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwor
ICAgIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVE
aXNwYXRjaGVyOwogI2VuZGlmCiB9OwogCkBAIC0yMzIsMTUgKzIzMiwxNSBAQCBwcml2YXRlOgog
CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIoKSB7IH0KK0NvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5D
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAKLVJlZjxJbnNwZWN0
b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IEluc3BlY3RvckNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciogYWdlbnQpCitSZWY8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIsIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0
Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRj
aGVyOjpJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IEluc3BlY3RvclN1cHBsZW1l
bnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQorQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyOjpDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERp
c3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJh
Y2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcihu
dWxscHRyKQpAQCAtMjQ5LDE3ICsyNDksMTcgQEAgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tl
bmREaXNwYXRjaGVyOjpJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIKICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlM
aXRlcmFsKCJDb21tYW5kRG9tYWluIiksIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckNvbW1h
bmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCit2b2lkIENvbW1h
bmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVm
PEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7
CiAKICAgICBpZiAobWV0aG9kID09ICJjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZSIpCiAgICAg
ICAgIGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxz
ZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmlu
ZygnXCcnLCAiQ29tbWFuZERvbWFpbiIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikp
OworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAi
Q29tbWFuZERvbWFpbiIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwogfQogCi12
b2lkIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhF
bnVtUmV0dXJuVmFsdWUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lk
IENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFs
dWUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcikgewpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyOjpjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25nIGNhCiAKICAg
ICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlIG91dF9yZXR1cm5WYWx1ZTsKKyAgICBD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5WYWx1ZSBvdXRfcmV0
dXJuVmFsdWU7CiAgICAgbV9hZ2VudC0+Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUoZXJyb3Is
ICZvdXRfcmV0dXJuVmFsdWUpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkKQEAgLTMyNiw5
ICszMjYsOSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAKLWNsYXNzIEluc3BlY3RvckV2
ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEV2ZW50RG9tYWluRnJvbnRlbmRE
aXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JFdmVudERvbWFpbkZyb250ZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwp
IHsgfQorICAgIEV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyKEZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5kQ2hhbm5lbCkgeyB9
CiAgICAgICAgIC8vIE5hbWVkIGFmdGVyIHBhcmFtZXRlciAncGFyYW1ldGVyJyB3aGlsZSBnZW5l
cmF0aW5nIGNvbW1hbmQvZXZlbnQgZXZlbnRXaXRoRW51bVBhcmFtZXRlci4KICAgICAgICAgZW51
bSBjbGFzcyBQYXJhbWV0ZXIgewogICAgICAgICAgICAgU2hhcmVkID0gMCwKQEAgLTMzNyw3ICsz
MzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIH07IC8vIGVudW0gY2xhc3MgUGFyYW1ldGVyCiAgICAg
dm9pZCBldmVudFdpdGhFbnVtUGFyYW1ldGVyKFBhcmFtZXRlciBwYXJhbWV0ZXIpOwogcHJpdmF0
ZToKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsOworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTM4Myw3ICszODMsNyBAQCBwcml2YXRlOgogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAotdm9pZCBJbnNwZWN0b3JFdmVudERvbWFpbkZyb250ZW5kRGlz
cGF0Y2hlcjo6ZXZlbnRXaXRoRW51bVBhcmFtZXRlcihQYXJhbWV0ZXIgcGFyYW1ldGVyKQordm9p
ZCBFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlcjo6ZXZlbnRXaXRoRW51bVBhcmFtZXRlcihQ
YXJhbWV0ZXIgcGFyYW1ldGVyKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNz
YWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRXZlbnREb21haW4uZXZl
bnRXaXRoRW51bVBhcmFtZXRlciIpKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIEluc3BlY3Rv
ckV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyOjpldmVudFdpdGhFbnVtUGFyYW1ldGVyKFBh
cmFtZXRlciBwYQogICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicGFy
YW1ldGVyIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKHBhcmFt
ZXRlcikpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMi
KSwgV1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkp
OworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3Nh
Z2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC05
ODgsNyArOTg4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClldmVu
dFdpdGhFbnVtUGFyYW1ldGVyV2l0aFBhcmFtZXRlcjooUldJUHJvdG9jb2xFdmVudERvbWFpbkV2
ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXIpcGFyYW1ldGVyCiB7Ci0gICAgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRD
aGFubmVsKCk7CisgICAgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJv
bGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7CiAgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdApp
bmRleCBjYjEwMzM0YjljODIxNWQ3ZDdkODViMmFmYjRkNGY4NTgyNGIzMTc5Li5hZWY3OTI5ODAy
MjcyYTQzNGRhMTIzOTllNjkwNmFlZmQwZDgyODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0
aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFy
YW1ldGVycy5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7Citj
bGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRC
YWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlz
cGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9
Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFj
a2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2Vu
ZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApAQCAtMjM3LDEzICsyMzcsMTMg
QEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUZy
b250ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7CiBw
dWJsaWM6Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KKyAgICBEYXRhYmFz
ZUZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkgOiBt
X2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5uZWwpIHsgfQogICAgIHZvaWQgZGlkRXhlY3V0
ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJs
ZSogY29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZh
bHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogY29uc3Qgc2NyZWVuQ29s
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRl
cm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcik7CiAgICAgdm9pZCBk
aWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUg
dGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNv
bnN0IFN0cmluZyYgcHJpbnRDb2xvcik7CiBwcml2YXRlOgotICAgIEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgRnJvbnRlbmRDaGFubmVs
KiBtX2Zyb250ZW5kQ2hhbm5lbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpAQCAt
Mjg5LDcgKzI4OSw3IEBAIHByaXZhdGU6CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi12b2lk
IEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQ
YXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0
aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9y
cywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKQordm9pZCBEYXRhYmFzZUZyb250ZW5k
RGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29u
c3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNv
bG9ycyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgcHJp
bnRDb2xvcikKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVPcHRpb25h
bFBhcmFtZXRlcnMiKSk7CkBAIC0zMTQsMTAgKzMxNCwxMCBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0
cjxJbgogICAgICAgICBwYXJhbXNPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50
Q29sb3IiKSwgKnByaW50Q29sb3IpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlM
aXRlcmFsKCJwYXJhbXMiKSwgV1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOwogCi0gICAgbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+
dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJv
bnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
KFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywg
Y29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBz
cWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNv
bG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpCit2b2lk
IERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVz
LCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFs
dWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNv
bG9ycyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsK
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhv
ZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cyIpKTsKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPAogICAgIHBh
cmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBwcmludENv
bG9yKTsKICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiks
IFdURjo6bW92ZShwYXJhbXNPYmplY3QpKTsKIAotICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsK
KyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGpzb25NZXNzYWdl
LT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpAQCAtNDIw
LDE0ICs0MjAsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFz
cyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBt
X3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNU
RVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBv
YmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBv
YmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVp
bGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTQ1Miw5ICs0NTIsOSBAQCBwdWJs
aWM6CiAgICAgICAgIFJlZjxFcnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFk
eSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNh
bm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZy
ZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgog
ICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC04NDksNyArODQ5LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClkaWRFeGVjdXRlT3B0aW9u
YWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29s
dW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICoqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlICopdGlt
ZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihS
V0lQcm90b2NvbEpTT05PYmplY3QgKiopcGF5bG9hZCBzcWxFcnJvcjooUldJUHJvdG9jb2xEYXRh
YmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKilzY3JlZW5Db2xv
ciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilhbHRlcm5hdGVDb2xv
cnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKiopcHJpbnRDb2xvcgogewotICAgIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hh
bm5lbCgpOworICAgIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xs
ZXItPmZyb250ZW5kQ2hhbm5lbCgpOwogICAgIGlmICghZnJvbnRlbmRDaGFubmVsKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTg4OSw3ICs4ODksNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiAtICh2b2lkKWRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5OYW1l
czooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICop
bm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQg
c3FsRXJyb3I6KFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKXNxbEVycm9yIHNjcmVlbkNvbG9y
OihOU1N0cmluZyAqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3Ry
aW5nPiovICopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5TU3RyaW5nICopcHJpbnRDb2xv
cgogewotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2Nv
bnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOworICAgIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOwogICAgIGlmICghZnJv
bnRlbmRDaGFubmVsKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21h
aW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRo
LWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IGQ5YTJiMWViODlmYzg4YjIxOTU0N2Uy
ZjI2NWNlNmQ4OWY1ODgyMDcuLjU3MDU1OTcxMDAyYjRiMmIxNjk2Y2NkODAwZjUyNTcyNWZiMjVj
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3Vs
dApAQCAtMzksMTkgKzM5LDE5IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNr
ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihS
ZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tl
bmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVm
UHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7
IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKIH07CiAKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLWNsYXNzIEFs
dGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBw
dWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKGxvbmcgY2FsbElkKSA9
IDA7CiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKQEAgLTE0OCwzNCArMTQ4
LDM0IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotY2xh
c3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFs
dGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VC
X0NPTU1BTkRTKQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotY2xhc3MgSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRXJy
b3JTdHJpbmcmKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKICNlbmRpZiAvLyBQTEFURk9STShXRUJfQ09NTUFO
RFMpCiAKICNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3Vw
cGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBj
cmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3Rvck5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8TmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9u
ZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1l
c3NhZ2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGxvYWRSZXNvdXJjZShsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZv
aWQgbG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworICAgIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIo
QmFja2VuZERpc3BhdGNoZXImLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwor
ICAgIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0
QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFs
dGVybmF0ZURpc3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0
ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBt
X2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRlOgot
ICAgIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsKKyAgICBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBt
X2FsdGVybmF0ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VC
X0NPTU1BTkRTKQpAQCAtMjMwLDE3ICsyMzAsMTcgQEAgcHJpdmF0ZToKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcigpIHsgfQorTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5OZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQogI2VuZGlmIC8vIFBMQVRGT1JNKFdF
Ql9DT01NQU5EUykKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLVJlZjxJbnNwZWN0b3JO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
LCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCitSZWY8
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2Vu
dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIo
KmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxlbWVu
dGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyOjpOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBi
YWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50
KQorICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIp
CiAgICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0yNDks
MTcgKzI0OSwxNyBAQCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvcgogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVyYWwoIk5ldHdvcmsx
IiksIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6
OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rv
ck9iamVjdD4mJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmpl
Y3Q+JiYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+
IHByb3RlY3QoKnRoaXMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJlc291cmNlIikKICAg
ICAgICAgbG9hZFJlc291cmNlKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZQotICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0
d29yazEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0
Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmsxIiwgJy4nLCBt
ZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0
b3JPYmplY3QmKQordm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2Uo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgewpAQCAtMzI0LDEyICszMjQsMTIgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogI2lm
IFBMQVRGT1JNKFdFQl9FVkVOVFMpCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrM0Zyb250ZW5kRGlz
cGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0g
ICAgSW5zcGVjdG9yTmV0d29yazNGcm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KKyAgICBOZXR3b3JrM0Zyb250ZW5k
RGlzcGF0Y2hlcihGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkgOiBtX2Zyb250ZW5k
Q2hhbm5lbChmcm9udGVuZENoYW5uZWwpIHsgfQogICAgIHZvaWQgcmVzb3VyY2VMb2FkZWQoKTsK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwogfTsK
ICNlbmRpZiAvLyBQTEFURk9STShXRUJfRVZFTlRTKQogCkBAIC0zNzcsMTIgKzM3NywxMiBAQCBw
cml2YXRlOgogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICNpZiBQTEFURk9STShXRUJfRVZFTlRT
KQotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcjo6cmVzb3VyY2VMb2Fk
ZWQoKQordm9pZCBOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcjo6cmVzb3VyY2VMb2FkZWQoKQog
ewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0
aG9kIiksIEFTQ0lJTGl0ZXJhbCgiTmV0d29yazMucmVzb3VyY2VMb2FkZWQiKSk7CiAKLSAgICBt
X2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGpzb25NZXNz
YWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogI2VuZGlmIC8vIFBM
QVRGT1JNKFdFQl9FVkVOVFMpCiAKQEAgLTQ2NSwxNCArNDY1LDE0IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8
aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQ
Pio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypOZXR3b3JrRXJy
b3IqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRl
cihSZWY8LypOZXR3b3JrRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAg
ICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2lu
X25vbl9pbml0X3N0YXRlKTsKQEAgLTQ5Nyw5ICs0OTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJl
ZjxOZXR3b3JrRXJyb3I+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE5ldHdvcmtFcnJvcikgPT0gc2l6ZW9mKElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKE5ldHdvcmtFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVj
dCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAg
UmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsK
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPE5ldHdv
cmtFcnJvcj4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNTEzLDcgKzUxMyw3
IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3Jl
YXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxO
b0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAt
OTU0LDcgKzk1NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKHZvaWQpcmVz
b3VyY2VMb2FkZWQKIHsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsKKyAgICBGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsKICAg
ICBpZiAoIWZyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2Ft
ZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZl
cmVudC1kb21haW4uanNvbi1yZXN1bHQKaW5kZXggOWIzYWYyODE0N2NmZjkwMDg0NTU1YjQwMjRl
ZjAyN2Q3NjljMDNmZi4uMDE4NDc4OTFiNTJkMmQ3MzRmNjNmOWQ1MjM0MDkxMzI3ZGRiM2NiYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9z
YW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEy
IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBw
dWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RG
Ojptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRj
aGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNw
YXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAg
UmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
ICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9z
aGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggMzhhZDc5OTNl
YjhlYWQwMzZmYjRkMDMzMjg0NmYzMjMzNmEzYzQ3Yy4uM2E2MWM1MjMxZjQ1YTJjMzExZDQ4YjZk
OTgyMzhmN2RjYTA0YjZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVy
cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVz
dWx0CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNz
IEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVy
KFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihS
ZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRj
aGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogfTsKIAogCkBAIC0zNTYsMTQgKzM1NiwxNCBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRl
PGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RF
UD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qS2V5UGF0aCov
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJl
ZjwvKktleVBhdGgqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1f
cmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0
X3N0YXRlKTsKQEAgLTM4MSw5ICszODEsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxLZXlQYXRo
PiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUg
PT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihLZXlQYXRoKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
S2V5UGF0aCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAg
ICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEtleVBhdGg+Kj4oJnJlc3VsdCkpOwogICAgICAg
ICB9CiAgICAgfTsKQEAgLTM5Niw3ICszOTYsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3Rh
dGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4g
QnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
KTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJl
c3VsdAppbmRleCBhZjFkNTMwOTdjYTY3YWEwYTI4ZjRiMDRiNjA5ZjNhOTNiNjBiMTkxLi4wMjM3
YWUyYTQ3MWQ1NWRlNjQ4YWUwNjRkYTNjNTIxYzY5NmI4MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xh
cmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKQEAgLTM5LDEyICszOSwx
MiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewog
cHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdU
Rjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0
Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlz
cGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAg
IFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
KyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9Owog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDRkYTk3ZjQ4NGZmNjM1
ZmM2M2MzNDZjYTE4ZGUzMjE4YTY5MjBiNGYuLjQ2ZmNlZDlkYjg5OTRiODQ3MWI4N2ExY2UwMmMw
YTQyMTUxZTM1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtMzks
MTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRj
aGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tl
bmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6
bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZh
dGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGZiNGFlZDIw
MTcwZGI5ZDUzZjI4MjM0YTU3OWNmNDA1NjExYmIzMmMuLmY1ZDU2YjM2NjQ5OTNkZGQ0MDJhN2Jh
MDBkMjg3ZTQ2NTU1OTJiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKQEAg
LTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERp
c3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxC
YWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBX
VEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBw
cml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXgg
OWZiYjVmNTMzNDlmZTEyM2YwMDlkYzYzMGRiYWQ0ODQ3YTU5ZDFmMy4uYjVmNGRhYTRhNDBhOGU4
YTFkMjVmM2VlYTQwYzUyZjFmMGQ2OTk2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2Jq
ZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNv
bi1yZXN1bHQKQEAgLTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAot
Y2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3Bh
dGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRj
aGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERp
c3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVy
LmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKQEAgLTM2MywxNCArMzYzLDE0IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVt
cGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUg
fCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypFcnJv
ciovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVy
KFJlZjwvKkVycm9yKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBt
X3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5p
dF9zdGF0ZSk7CkBAIC0zOTUsOSArMzk1LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8RXJyb3I+
IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9
PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJy
b3IpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAg
ICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9
IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjptb3Zl
KCpyZWludGVycHJldF9jYXN0PFJlZjxFcnJvcj4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAg
ICB9OwpAQCAtNDExLDcgKzQxMSw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVp
bGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVy
PE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAg
ICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KSk7CiAgICAgfQogfTsKIApAQCAtNDI1LDE0ICs0MjUsMTQgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQg
U1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4o
dGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKk9wdGlvbmFsUGFyYW1l
dGVyQnVuZGxlKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAg
IEJ1aWxkZXIoUmVmPC8qT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvck9iamVjdD4m
JiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAg
ICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwg
YnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTQ0Myw5ICs0NDMsOSBAQCBw
dWJsaWM6CiAgICAgICAgIFJlZjxPcHRpb25hbFBhcmFtZXRlckJ1bmRsZT4gcmVsZWFzZSgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1Nl
dCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNh
bm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPE9wdGlvbmFsUGFy
YW1ldGVyQnVuZGxlPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC00NTcsNyAr
NDU3LDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0
PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWls
ZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiAKICAg
ICB2b2lkIHNldENvbHVtbk5hbWVzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+PiB2YWx1ZSkKQEAgLTUxMywxNCArNTEzLDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNU
RVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRo
aXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypQYXJhbWV0ZXJCdW5kbGUq
L0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihS
ZWY8LypQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAg
ICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2lu
X25vbl9pbml0X3N0YXRlKTsKQEAgLTU4MCw5ICs1ODAsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJl
ZjxQYXJhbWV0ZXJCdW5kbGU+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01Q
SUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwot
ICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6
ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3Bl
Y3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5v
bk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8
UmVmPFBhcmFtZXRlckJ1bmRsZT4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAt
NjAxLDcgKzYwMSw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0Zp
ZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRz
U2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1
cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAg
fQogfTsKIApAQCAtNjIxLDE0ICs2MjEsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBT
VEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVp
bGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAg
ICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKk9iamVjdFdpdGhQcm9wZXJ0eU5hbWVD
b25mbGljdHMqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAg
QnVpbGRlcihSZWY8LypPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzKi9JbnNwZWN0b3JP
YmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0
KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVs
ZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC02NzQsOSArNjc0
LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8T2JqZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0
cz4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRF
ID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01Q
SUxFX0FTU0VSVChzaXplb2YoT2JqZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cykgPT0gc2l6
ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMp
ID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAgICAgICAgICAg
IFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFz
ZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1f
cmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpy
ZWludGVycHJldF9jYXN0PFJlZjxPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzPio+KCZy
ZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC02OTMsNyArNjkzLDcgQEAgcHVibGljOgog
ICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC03MTYsMTQgKzcxNiwx
NCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIg
ewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0Owog
CiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RT
dGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxC
dWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxk
ZXIoUmVmPC8qUGFyYW1ldGVyQnVuZGxlKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBv
YmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qUGFyYW1ldGVyQnVuZGxlKi9JbnNwZWN0b3JP
YmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0
KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVs
ZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC03NzYsOSArNzc2
LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8UGFyYW1ldGVyQnVuZGxlPiByZWxlYXNlKCkKICAg
ICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0
LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCks
IGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihQYXJhbWV0
ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKLSAg
ICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1
bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAgICByZXR1cm4gV1RG
Ojptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxQYXJhbWV0ZXJCdW5kbGU+Kj4oJnJlc3VsdCkp
OwogICAgICAgICB9CiAgICAgfTsKQEAgLTc5Niw3ICs3OTYsNyBAQCBwdWJsaWM6CiAgICAgICov
CiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmlu
Zy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMu
anNvbi1yZXN1bHQKaW5kZXggMDQ1Y2NiOGYyMGNmNTgzMDg3NDE4ZjA2OGZiNWEwMDUxODliMzcz
Yi4uZjQ5MDc1NjA1OTU4OGQ4Zjc1N2U1ODhkNGEwM2M0ZThiMGUzZjZjYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZv
aWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRj
aGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRj
aGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAg
ICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKQEAgLTM2NywxNCAr
MzY3LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVp
bGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1
bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYg
Y2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAg
QnVpbGRlcihSZWY8LypUeXBlTmVlZGluZ0Nhc3QqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypUeXBlTmVlZGluZ0Nhc3QqL0luc3Bl
Y3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShv
YmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBO
b0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTQyMCw5
ICs0MjAsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxUeXBlTmVlZGluZ0Nhc3Q+IHJlbGVhc2Uo
KQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVs
ZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFR5
cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsK
IAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBt
X3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVj
dD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPFR5cGVOZWVkaW5nQ2FzdD4qPigmcmVz
dWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNDM5LDcgKzQzOSw3IEBAIHB1YmxpYzoKICAg
ICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtNDY3LDE0ICs0NjcsMTQg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsK
ICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAog
ICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3Rh
dGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVp
bGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVy
KFJlZjwvKlJlY3Vyc2l2ZU9iamVjdDEqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9i
amVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypSZWN1cnNpdmVPYmplY3QxKi9JbnNwZWN0b3JP
YmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0
KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVs
ZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC00ODUsOSArNDg1
LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8UmVjdXJzaXZlT2JqZWN0MT4gcmVsZWFzZSgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1Nl
dCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoUmVjdXJzaXZlT2JqZWN0MSkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlY3Vy
c2l2ZU9iamVjdDEpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAK
LSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9y
ZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+
IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAgICByZXR1cm4g
V1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxSZWN1cnNpdmVPYmplY3QxPio+KCZyZXN1
bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC00OTksNyArNDk5LDcgQEAgcHVibGljOgogICAg
ICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIHNldE9iaihSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj4gdmFsdWUpCkBAIC01
MTgsMTQgKzUxOCwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNs
YXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwg
U1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0g
ICAgICAgIEJ1aWxkZXIoUmVmPC8qUmVjdXJzaXZlT2JqZWN0MiovSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKlJlY3Vyc2l2ZU9iamVj
dDIqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdU
Rjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChT
VEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsK
QEAgLTUzNiw5ICs1MzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxSZWN1cnNpdmVPYmplY3Qy
PiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUg
PT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihSZWN1cnNpdmVPYmplY3QyKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChzaXplb2YoUmVjdXJzaXZlT2JqZWN0MikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNh
bm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPFJlY3Vyc2l2ZU9i
amVjdDI+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTU1MCw3ICs1NTAsNyBA
QCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIAogICAgIHZvaWQg
c2V0T2JqKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3Qx
PiB2YWx1ZSkKQEAgLTY5NiwxNiArNjk2LDE2IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0
b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4CiB9
CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OnJ1bnRpbWVDYXN0KFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlPiYmIHZhbHVlKQorUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRl
c3Q6OlR5cGVOZWVkaW5nQ2FzdD4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpU
ZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+OjpydW50aW1lQ2FzdChSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
JiYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1
bHQ7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0OwogICAgIGJvb2wgY2FzdFN1
Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChyZXN1bHQpOwogICAgIEFTU0VSVF9VTlVTRUQoY2Fz
dFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6
YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUocmVzdWx0LmdldCgpKTsKICNlbmRpZiAgLy8gIUFT
U0VSVF9ESVNBQkxFRAotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3QpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+KHJlc3VsdC5nZXQoKSkpOworICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGlu
Z0Nhc3QpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0p
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBl
TmVlZGluZ0Nhc3QqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3RCYXNlKj4ocmVzdWx0Lmdl
dCgpKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggZTQyOGY0NWZmZDlkNmJlMGVk
Y2U3MTg3OTk3M2I5N2VjNzQzZjE5Ni4uNTAxN2U3MTYzZTdkMzg2ZmVlNjdlOTVmYWIzYWM1MWYx
OTAwNmMyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFN0cmluZyBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBuYW1lLmlz
RW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiSlNDb250ZXh0IikgOiBuYW1lOwogfQogCi12b2lkIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uKQordm9pZCBKU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbikKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2Vy
KCZtX2dsb2JhbE9iamVjdC52bSgpKTsKIApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cigmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKLSAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JD
b250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246
Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgbV9nbG9iYWxPYmplY3QuaW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0
cm95ZWQpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNz
YWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
LmgKaW5kZXggOGM2ZWFiNzc2NjA4YjU0ODUwYjBhNGNkYjIzYjRiMjIzYmUyOGRkMS4uZDZiNDcx
Y2Y3NjU2NWM5YjAyNjk5ODIwMmIyODFlNmNhMThmZWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgKQEAg
LTMzLDcgKzMzLDggQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7Ci1lbnVtIGNsYXNzIEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb247CitjbGFz
cyBGcm9udGVuZENoYW5uZWw7CitlbnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFzb247CiB9CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJp
bmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVn
Z2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBhdXRv
bWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzAwMzczMDY4NjQwNGEx
OTdlOWE0OTE1NTgzOWYzMjYwYTNlODFmMy4uZmEwNTIyMzU5NWM5OTE5ZTQzNmYzMmY0Zjc1OWEz
NTJhNjMzZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg0MCw4ICs4NDAsOCBAQCBfX1pO
N1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMHBhdXNlQW5pbWF0aW9uQXRUaW1lRVBOU18x
M1JlbmRlckVsZW1lbnRFUktOMwogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMjFw
YXVzZVRyYW5zaXRpb25BdFRpbWVFUE5TXzEzUmVuZGVyRWxlbWVudEVSS04zV1RGNlN0cmluZ0Vk
CiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIzNnNldEFsbG93c05ld0FuaW1hdGlv
bnNXaGlsZVN1c3BlbmRlZEViCiBfX1pON1dlYkNvcmUxOUhUTUxUZXh0QXJlYUVsZW1lbnQ4c2V0
VmFsdWVFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIx
NWNvbm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEVi
Ci1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVuZEVO
OUluc3BlY3RvcjI1SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbkUKK19fWk43V2ViQ29yZTE5SW5z
cGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3RvcjE1RnJvbnRlbmRD
aGFubmVsRWIKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4ZGlzY29ubmVjdEZy
b250ZW5kRU45SW5zcGVjdG9yMTZEaXNjb25uZWN0UmVhc29uRQogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRFYgogX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjZzZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEVQTlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKaW5kZXggYTcwNGNkOTg0ZWE4ZDM4ZWYwZjFjNWVlMjkwZGM1Mzg2YThiNWYwYy4uM2U2ZjYz
MjE2MTNiNjNkYjBkZWU3NTQwYTI0YmQ5YzU2ZTYwODVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Oklu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbgogewogfQogCi12
b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12
b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRy
OwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRl
eCAwYjgxMzM1ZjUxY2UwYTZjOGY1MGI2Y2QzNzQ0YWQ2N2UwM2M5MzNkLi5mMDhhY2UyMGY3MTcx
ODNhZDkwZDQ2ZmZkZTA2ZDNhNjM0Y2ZhNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC0zMiw3
ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hl
cjsKK2NsYXNzIEFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIH0KQEAgLTQ3LDE0ICs0NywxNCBA
QCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsK
IAotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IGZpbmFsIDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAg
IHZpcnR1YWwgfkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVBcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzKEZyYW1lKik7CiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CkBAIC03
Miw4ICs3Miw4IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRMb2FkZXIqIGFzc2VydEZyYW1lV2l0
aERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiwgU3RyaW5nIGZyYW1lSWQpOwogCiAgICAgSW5z
cGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6QXBwbGljYXRpb25D
YWNoZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKaW5kZXggZGUxMTdjMTBiYTRmMzQ0YmM3MzFhMWQ5ZjQ3OTAxMGQ4ZDg1OTBi
Yy4uODUzMjFkZDdkZDJmNzhiZWE5OWU1MmUyZjc2MGUwN2UyOTg4MDRhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0zNTEsMTMgKzM1
MSwxMyBAQCBJbnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAgICByZXNl
dCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5l
bCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckNTU0JhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IENTU0JhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3Bl
Y3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDg4
NjY0Yzg5NjBlM2ZjYmZmYzI4NmJjYzU5Zjk0MjFiZWJlNTBhYzMuLmU0YTYwMzc5NTRjMWEyNzBj
N2JjOGQ4NTVhZmNiZWZlNzBmZmI3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5zcGVjdG9yQ1NT
RnJvbnRlbmREaXNwYXRjaGVyOworY2xhc3MgQ1NTRnJvbnRlbmREaXNwYXRjaGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIENoYW5nZVJlZ2lvbk92
ZXJzZXRUYXNrOwogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQgZmluYWwKICAgICA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlz
dGVuZXIKLSAgICAsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlcgorICAgICwgcHVibGljIEluc3BlY3Rvcjo6Q1NTQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldDo6TGlzdGVuZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNTU0FnZW50KTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTkxLDggKzkxLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIENT
U1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTE2Myw4ICsx
NjMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNldFBzZXVkb1N0YXRlcygpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVy
PiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JD
U1NCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpDU1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwogCiAgICAg
SWRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA3
MmYyOTQ2OGNlYWRiNGVkNzVmM2RkNmFlMzM4NzhiOTQzYzRlYTMwLi5hMTliYTRhOTlhMzliODE1
YzlkM2JmMWVhYmJiMTQ5NWQ0YzA0ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIEluc3BlY3RvckNv
bnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50
KiBpbnNwZWN0b3JDCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0Fn
ZW50czo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6
bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX292ZXJsYXkoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQotICAgICwgbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwobnVsbHB0cikKKyAgICAsIG1fZnJvbnRlbmRDaGFubmVsKG51bGxw
dHIpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAg
ICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQp
CkBAIC0xODQsNyArMTg0LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRy
b2xsZXIoKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95
ZWQoKQogewotICAgIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29u
OjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNj
b25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOwogICAgIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmluc3Bl
Y3RvckRlc3Ryb3llZCgpOwogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVsbHB0cjsKQEAgLTIz
MiwxOSArMjMyLDE5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvCiAgICAgICAgIG1faW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQtPndpbmRvd09iamVjdENsZWFyZWQoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQordm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCiB7CiAgICAg
QVNTRVJUKGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsK
LSAgICBBU1NFUlQoIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKLSAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIpOworICAgIEFTU0VSVCghbV9mcm9udGVuZENoYW5u
ZWwpOworICAgIEFTU0VSVCghbV9iYWNrZW5kRGlzcGF0Y2hlcik7CiAKICAgICBtX2lzQXV0b21h
dGljSW5zcGVjdGlvbiA9IGlzQXV0b21hdGljSW5zcGVjdGlvbjsKIAotICAgIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRDaGFubmVsOwotICAgIG1faW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGZyb250ZW5k
Q2hhbm5lbCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5uZWw7CisgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRD
aGFubmVsKTsKIAotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9u
dGVuZENoYW5uZWwsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIG1f
YWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpy
ZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0FnZW50cyk7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsKQEAgLTI1NSwxNiAr
MjU1LDE2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFuCiAjZW5kaWYKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbiByZWFzb24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1faW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKQorICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiAK
LSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAg
bV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwotICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsID0gbnVsbHB0cjsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZy
b250ZW5kKCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOworICAgIG1fZnJvbnRl
bmRDaGFubmVsID0gbnVsbHB0cjsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gZmFs
c2U7CiAKQEAgLTI4NiwxMCArMjg2LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hv
dygpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKKyAgICBpZiAobV9mcm9udGVuZENoYW5uZWwpCiAgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOwogICAgIGVsc2Ug
ewotICAgICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwg
PSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpKSB7CisgICAg
ICAgIGlmIChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gbV9p
bnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkgewogICAgICAgICAg
ICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGNvbm5l
Y3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiAgICAg
ICAgIH0KQEAgLTI5OCw5ICsyOTgsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3co
KQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKIHsKLSAgICBpZiAoIW1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCiAgICAg
ICAgIHJldHVybjsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0RnJvbnRlbmQoRGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKICAgICBtX2luc3BlY3RvckNsaWVudC0+
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogfQogCkBAIC0zNTIsOCArMzUyLDggQEAgUGFnZSYg
SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CiAKIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKLSAgICBpZiAobV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcikKLSAgICAg
ICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CisgICAg
aWYgKG1fYmFja2VuZERpc3BhdGNoZXIpCisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmRp
c3BhdGNoKG1lc3NhZ2UpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZGVIaWdo
bGlnaHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggYjI2NDIyYjc3NTNlMGM0MjZmNTA5OTUxNTZjZGYwM2Q1NDlmM2UyMS4uM2M3ZmI5
OWVmNjJhZDY0Y2ZjMmI2ZTk5ZThlYzAyY2YzZWQzMjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00Miw5ICs0Miw5IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xh
c3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNw
ZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCiBuYW1lc3Bh
Y2UgUHJvdG9jb2wgewpAQCAtOTQsMTIgKzk0LDEyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CiAKLSAgICBib29sIGhhc0Zyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbDsgfQorICAgIGJvb2wgaGFzRnJvbnRlbmQoKSBjb25zdCB7IHJl
dHVybiAhIW1fZnJvbnRlbmRDaGFubmVsOyB9CiAgICAgYm9vbCBoYXNMb2NhbEZyb250ZW5kKCkg
Y29uc3Q7CiAgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBwcml2YXRlOgogICAgIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKICAgICBJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiBtX3RpbWVsaW5lQWdlbnQ7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsK
LSAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG1fZnJv
bnRlbmRDaGFubmVsOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0
Y2g7CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JD
bGllbnQ7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOwor
ICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBWZWN0b3I8SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0SW5zdHJ1bWVudGF0
aW9uQ29va2llczsKICAgICBib29sIG1faXNVbmRlclRlc3Q7CiAgICAgYm9vbCBtX2lzQXV0b21h
dGljSW5zcGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCmluZGV4IDE3ZWI2ODE4MTkxMDMzODRmNTBmMWZlMjI1OWUwMDJkYzYzMjljOGMu
LjBiOGY5NDFiMDIwZDI4ODlhNjViOWQ4ZDE2NzA3Y2NmOWNhMGZmZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjIxLDEwICsyMjEs
MTAgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCgpCiAgICAgQVNTRVJU
KCFtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
K3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01C
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CiAKICAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckhpc3Rvcnk+KCk7CiAgICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRv
cj4obV9oaXN0b3J5LmdldCgpKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcgogICAgICAgICBmb2N1c05vZGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bikKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBmODM5NzkyYmIyNWM5
YTViMzdmNzA1NDcyZmM0NjhhMzcxNjE2MDE4Li45ZmM5NTI1ZGI3Y2ZjNDI1ZmFlOWYxMzliOWZk
ZTdiMTc5YWE2ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaApAQCAtOTEsNyArOTEsNyBAQCBzdHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm8gewogICAg
IGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5lclZlY3RvcjsKIH07CiAKLWNs
YXNzIEluc3BlY3RvckRPTUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
K2NsYXNzIEluc3BlY3RvckRPTUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFz
ZSwgcHVibGljIEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01BZ2VudCk7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMDksOCArMTA5LDggQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFN0cmluZyB0b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxEb2N1bWVudCo+IGRv
Y3VtZW50cygpOwogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTI0Niw4ICsyNDYsOCBAQCBwcml2YXRl
OgogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3Bl
Y3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkRPTUZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
RE9NQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgRE9NTGlzdGVu
ZXIqIG1fZG9tTGlzdGVuZXI7CiAgICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVudE5vZGVUb0lkTWFw
OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIEJhY2tlbmROb2RlSWQ+IE5vZGVU
b0JhY2tlbmRJZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCAzZDBiYmFjNTYxYjhlYjE0NDc0NzI4MmUw
ODg0ZDcwNGE1YmNjYjI3Li5mNzc4ZGQ5NjJjYjJkZGMxNjA2MzE3NDZhOTk1YmRkYTBhOWIyNzhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lkIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yOjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCit2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLmNsZWFyKCk7CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSYgbm9kZSkKICAgICBpZiAoaGFz
QnJlYWtwb2ludCgmbm9kZSwgQXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgQXR0cmlidXRlTW9kaWZpZWQsIGZhbHNl
LCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3Jh
bShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6
bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0o
SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6
bW92ZShldmVudERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKE5vZGUmIHBhcmVudCkK
ICAgICBpZiAoaGFzQnJlYWtwb2ludCgmcGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQpKSB7CiAgICAg
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQocGFyZW50LCBTdWJ0cmVlTW9k
aWZpZWQsIHRydWUsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+
YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0KIApAQCAtMjgwLDExICsyODAs
MTEgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9kZShO
b2RlJiBub2RlKQogICAgIGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBOb2RlUmVtb3ZlZCkpIHsK
ICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBOb2RlUmVt
b3ZlZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+
YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0gZWxzZSBpZiAocGFyZW50Tm9kZSAm
JiBoYXNCcmVha3BvaW50KHBhcmVudE5vZGUsIFN1YnRyZWVNb2RpZmllZCkpIHsKICAgICAgICAg
UmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBTdWJ0cmVlTW9kaWZpZWQs
IGZhbHNlLCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFr
UHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00s
IFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1By
b2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00s
IFdURjo6bW92ZShldmVudERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgaWYgKGhhc0JyZWFrcG9pbnQoJmVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlm
aWVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KGVsZW1l
bnQsIEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAg
bV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1f
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiAgICAgfQogfQog
CkBAIC0zNjcsOSArMzY3LDkgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpwYXVz
ZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNvbnMKICAgICBSZWY8SW5z
cGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJldmVudE5hbWUiLCBmdWxsRXZlbnROYW1lKTsKICAgICBp
ZiAoc3luY2hyb25vdXMpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKElu
c3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIs
IFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1By
b2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFdmVu
dExpc3RlbmVyLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Rl
YnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGOjptb3ZlKGV2
ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRT
dGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpF
dmVudExpc3RlbmVyLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdXJsKQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKICAgICBSZWY8
SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VVJMIiwgYnJlYWtwb2ludFVSTCk7
CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAgbV9kZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6WEhSLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgbV9kZWJ1Z2dlckFnZW50LT5i
cmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpYSFIsIFdURjo6bW92ZShldmVudERhdGEpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCA0NjZmMDNlNTcxY2Y4NjcwNDNkYmNiNWJl
ODRiNjVmYWM3ZGFkMzkxLi5hZmUzY2ZiOWQzMDk1NWRmYTMzMjk1ZWYwOTllYmZmY2EyNDdjZTY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgTm9kZTsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NRGVi
dWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0
b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yOjpE
T01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxT
ZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgcGF1c2VPbk5h
dGl2ZUV2ZW50SWZOZWVkZWQoYm9vbCBpc0RPTUV2ZW50LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFt
ZSwgYm9vbCBzeW5jaHJvbm91cyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpA
QCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9k
b21BZ2VudDsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdn
ZXJBZ2VudDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OkRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAg
SGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7CiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3hockJyZWFrcG9pbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCBmYjA4OWEzOGY4MzIyNmQ1OWNlNTI4NmZi
ZTBhNTI4OGI5MDU3OTE4Li44ZTUyM2ZmYjhjZDRmZGZmYmQ0ZDZhNjZlMzM0ZDNmNTgwYjA3ZmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcApAQCAtNjYsMTMgKzY2LDEzIEBAIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6fkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdl
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpET01TdG9y
YWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IDM2MWI2MTNjYzFkNzU3ZDQ0
NjZkZjI4OWY3ZTk2ZmFlZDBhMmFjNWQuLmJlYmQxZWY0MTJmMmRiZmI2MTNhNzEzYWJkNDhhNzI0
NDJkMzZiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmgKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBET01TdG9yYWdlRnJv
bnRlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNwZWN0b3JE
T01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01MSwxNCArNTEsMTQgQEAgY2xhc3MgU3RvcmFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRPTVN0b3JhZ2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6RE9N
U3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAog
ICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNzgsOCArNzgsOCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5nJiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmLCBGcmFtZSomKTsKIAogICAgIElu
c3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1fZW5hYmxlZDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRl
eCA0NGRhYTg2NTc2N2UzY2I3MjRkYTk3NGEwMjhjYjlkZTI2ZGY4MjUzLi45MTM0ZGZlNDdjNzlj
NmM2ZWY0NDEzNDQ1MjBiNzA0NmUxZDVkYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQ2FsbGJhY2sgRXhlY3V0ZVNRTENhbGxiYWNrOwordHlw
ZWRlZiBJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRl
U1FMQ2FsbGJhY2sgRXhlY3V0ZVNRTENhbGxiYWNrOwogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCkBAIC0yMjIsMTMgKzIyMiwxMyBAQCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp+SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50KG51bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IDJlODY4OTc1ZjE2ZmNiMTY3OGRi
ZGIzZGFjZjIxZTE3Y2VkMThjY2UuLjNmZGFhMmNiNzQxOGU1MjMwYTJmZjliYWFkMDRmNmU2ZjNm
MmFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuaApAQCAtNDcsMTQgKzQ3LDE0IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JEYXRhYmFzZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VzKCk7CiAKQEAgLTcyLDggKzcyLDggQEAgcHJpdmF0ZToK
ICAgICBEYXRhYmFzZSogZGF0YWJhc2VGb3JJZChjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQpOwog
ICAgIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UqIGZpbmRCeUZpbGVOYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U+PiBEYXRhYmFzZVJlc291cmNlc01hcDsKICAgICBEYXRhYmFzZVJlc291cmNlc01hcCBtX3Jl
c291cmNlczsKICAgICBib29sIG1fZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRleCA0NmVkZjMxM2M2
ODYzZTZjYWYyN2FkYjJkZjRiNjIzZDhhNzY4Y2VlLi42YzNjOWUyM2Q2NmYwZGQyMjNjNDNhNzkx
YmRjNzFhNWI1Y2NiNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluc3BlY3Rv
ckRhdGFiYXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UoUmVmUHRyPERhdGFi
YXNlPiYmIGRhdGFiYXNlCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6
YmluZChJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciogZGF0YWJhc2VGcm9udGVu
ZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQoSW5zcGVj
dG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciogZGF0YWJhc2VGcm9udGVuZERpc3BhdGNo
ZXIpCiB7CiAgICAgYXV0byBqc29uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkRhdGFiYXNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQobV9pZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCmluZGV4
IDI5NTY3MmMxN2E5OWIzNWU4YjQ3ODg3YmEyYmNmZGM3ODA4ODE1MjYuLjZkYjg1YzljNDhkYTY5
OTAxYTM4NzU2M2E1MDBhOGY0NjA2ZDY1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaApAQCAtNDQsNyArNDQsNyBAQCBj
bGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxEYXRhYmFzZT4mJiwgY29uc3QgU3RyaW5n
JiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKIAot
ICAgIHZvaWQgYmluZChJbnNwZWN0b3I6Okluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRj
aGVyKik7CisgICAgdm9pZCBiaW5kKEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNo
ZXIqKTsKICAgICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgp
OyB9CiAgICAgdm9pZCBzZXREYXRhYmFzZShSZWZQdHI8RGF0YWJhc2U+JiYgZGF0YWJhc2UpIHsg
bV9kYXRhYmFzZSA9IGRhdGFiYXNlOyB9CiAgICAgU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZv
cndhcmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5n
LmgKaW5kZXggNmMyN2QyMDAzNTRlNzliN2M4YjZkYzBiNDE2ZTc2MTMzNWNjZjFlYy4uMjUwOGJi
MTkzMjcxOGQ4YTlhOThmODRkOGJjZmYwYTQ0ZWZlYmU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci10eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK3R5cGVkZWYgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogfQogCiAjZW5kaWYgLy8gIWRlZmluZWQoSW5z
cGVjdG9yRm9yd2FyZGluZ19oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggN2E2NDk1ZjEzNDQxNzZmNDExNDgxMTFh
YTRhMDZlYTZmODQzYmQ5ZS4uOTQ5Y2JlNzBkZTJmN2U1MzdjOGY1Nzc2NDY1YTQ0YmE5MjE2MTA0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCkBAIC03NywxMSArNzcsMTEgQEAgdXNpbmcgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6SW5kZXhlZERCOjpLZXlSYW5nZTsKIHVzaW5nIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4
ZWREQjo6T2JqZWN0U3RvcmU7CiB1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6
Ok9iamVjdFN0b3JlSW5kZXg7CiAKLXR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKLXR5cGVkZWYgSW5zcGVj
dG9yOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVlc3RE
YXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjazsKLXR5cGVk
ZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OlJlcXVlc3REYXRhYmFzZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwotdHlwZWRl
ZiBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1ZXN0RGF0YUNhbGxiYWNrOwotdHlwZWRlZiBJbnNwZWN0
b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q2xlYXJPYmpl
Y3RTdG9yZUNhbGxiYWNrIENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjazsKK3R5cGVkZWYgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKK3R5
cGVkZWYgSW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVl
c3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjazsKK3R5
cGVkZWYgSW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlcXVl
c3REYXRhYmFzZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwordHlwZWRlZiBJbnNw
ZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFDYWxs
YmFjayBSZXF1ZXN0RGF0YUNhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWREQkJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrIENsZWFyT2Jq
ZWN0U3RvcmVDYWxsYmFjazsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIApAQCAtNTc1
LDEyICs1NzUsMTIgQEAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNwZWN0b3JJbmRleGVk
REJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQogewotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbmRl
eGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
KyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggNzcyMGIzYTlhYWVj
OTlkYjIwN2U5YzkzNDQ5NWM2OWY1NzdmMTMyMS4uNGQyYzE2OTgyMjhkNjMzZDM5ZGYyOTg5NWI3
MGJkYzkwMWNhMDIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTQ3LDEzICs0NywxMyBAQCBjbGFzcyBJbnNwZWN0b3JQ
YWdlQWdlbnQ7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1Ymxp
YyBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CitjbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yUGFn
ZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBm
cm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0
b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggYzU5MDJi
YTc3N2IwMzYwZTEwMWI3YTVmMDFlYmEyODI4NTU2YzM5YS4uYmU2NDQ5NmU0NjM4ZDAwYzNlYzI4
OTA4NjU2YWU2NzdhNzM4OTc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC01NiwxMyArNTYsMTMgQEAgSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6On5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpCiAgICAgcmVzZXQo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Cisg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmgKaW5kZXggMTY2ZTlhNjE4ZjE1YzM1MWEwOTJhMmYwYWNmYzNkNDAzYTBi
N2NjYS4uNWFiYzEzNzUzMjU2ZDg0NDUyNmUyYjM1OThmNGFjMTJiM2NlNTc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAg
LTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JM
YXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
dG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RvckxheWVyVHJlZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVh
c29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZvaWQg
cmVzZXQoKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCkBA
IC04MSw4ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGJpbmRQc2V1ZG9FbGVtZW50KFBz
ZXVkb0VsZW1lbnQqKTsKICAgICB2b2lkIHVuYmluZFBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVu
dCopOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yTGF5ZXJUcmVl
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVu
ZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogCiAgICAg
SGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1h
cDsKICAgICBIYXNoTWFwPFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5k
ZXggOTFjNzM4MDJmNWU3MDQwMzA4NGYwM2Q0ZjNmOTJhYTM5ZjRiZThiNi4uNmMxNmIyY2ZmMjUx
ZmM0Yzg2MWI5OGJjOGE4MDdmOWM0ZDgzN2Q0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMzNywxMyArMzM3LDEzIEBAIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNv
bikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKQEAgLTY1Nyw3
ICs2NTcsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMoRXJy
b3JTdHJpbmcmLCBib29sIHNob3cpCiAgICAgbV9vdmVybGF5LT5zZXRTaG93aW5nUGFpbnRSZWN0
cyhzaG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlv
blN0YXR1cyhFcnJvclN0cmluZyYsIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OlJlc3VsdCogc3RhdHVzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4
ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0KiBzdGF0dXMpCiB7CiAgICAgYm9vbCBkaXNhYmxlZEJ5U2NyaXB0
Q29udHJvbGxlciA9IGZhbHNlOwogICAgIGJvb2wgZGlzYWJsZWRJblNldHRpbmdzID0gZmFsc2U7
CkBAIC02NjgsMTQgKzY2OCwxNCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0
RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yUGFnZUJhYwogICAgIH0KIAog
ICAgIGlmICghZGlzYWJsZWRCeVNjcmlwdENvbnRyb2xsZXIpIHsKLSAgICAgICAgKnN0YXR1cyA9
IEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6QWxsb3dlZDsK
KyAgICAgICAgKnN0YXR1cyA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6UmVzdWx0OjpBbGxvd2VkOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRp
c2FibGVkSW5TZXR0aW5ncykKLSAgICAgICAgKnN0YXR1cyA9IEluc3BlY3RvclBhZ2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6RGlzYWJsZWQ7CisgICAgICAgICpzdGF0dXMgPSBJ
bnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6RGlzYWJsZWQ7
CiAgICAgZWxzZQotICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0OjpGb3JiaWRkZW47CisgICAgICAgICpzdGF0dXMgPSBJbnNwZWN0
b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6Rm9yYmlkZGVuOwogfQog
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJy
b3JTdHJpbmcmLCBib29sIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCmluZGV4IGJmZDU3NzUxNzcwY2U3NjBiZDdjY2QzODlhYTJiY2RkNTQw
NTdlMTguLmNjNmUxMGZhZmNlZmU4YTgzY2U0NWJlNTM5YjIwZjI2NDJhMzI0OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTY0LDcgKzY0
LDcgQEAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEwNyw3ICsxMDcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
aXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldERvY3VtZW50Q29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwg
Y29uc3QgU3RyaW5nJiBodG1sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd1Bh
aW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6Oklu
c3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdCopIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJ
bnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdCopIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChFcnJvclN0cmlu
ZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb3VjaEVtdWxhdGlvbkVu
YWJsZWQoRXJyb3JTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpAQCAt
MTM5LDggKzEzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJvb2wgaXNF
bmFibGVkKTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25u
ZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBBUEkKICAgICBQYWdl
KiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CkBAIC0xNjgsOCArMTY4LDggQEAgcHJpdmF0ZToK
ICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1
aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CiAgICAgUGFnZSogbV9wYWdlOwogICAgIElu
c3BlY3RvckNsaWVudCogbV9jbGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yUGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlBhZ2VGcm9u
dGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNw
ZWN0b3JPdmVybGF5KiBtX292ZXJsYXk7CiAgICAgbG9uZyBtX2xhc3RTY3JpcHRJZGVudGlmaWVy
OwogICAgIFN0cmluZyBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCmluZGV4
IDZlY2Q3YzBmYmVmYjUyZDYwYmViMTJlZDFiYzIyOWIwOWYwZmY5ZGYuLjJmNjg3NTMyMDU5Njk3
NDgxOGY2MmE2NWQxOGU5NzYzZDM0NDY3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcApAQCAtMTY3LDEwICsxNjcsMTAgQEAgV2Vi
Q29yZTo6U2Vzc2lvblN0YXRlIEluc3BlY3RvclJlcGxheUFnZW50OjpzZXNzaW9uU3RhdGUoKSBj
b25zdAogICAgIHJldHVybiBtX3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnNlc3Npb25TdGF0ZSgp
OwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yUmVw
bGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yUmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5u
ZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSZXBsYXlCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3Rvcjo6UmVwbGF5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclJlcGxh
eUFnZW50KHRoaXMpOwogICAgIEFTU0VSVChzZXNzaW9uU3RhdGUoKSA9PSBXZWJDb3JlOjpTZXNz
aW9uU3RhdGU6OkluYWN0aXZlKTsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEluc3BlY3RvclJl
cGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKgogICAgICAgICBtX3NlZ21lbnRzTWFwLmFkZCgoKml0KS0+aWRlbnRpZmllcigpLCAq
aXQpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JSZXBs
YXlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25u
ZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCmluZGV4IDM2MzJjNGY0MTNlNGNmMmQwYzM0OWUyZmMy
ZTIzN2I1MWQwYzEyMzUuLjMzYmYyOWMxMWE1MTBjYmE5MzNmODVhZTVhMmU1ZjIyNDA2NTYwNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5o
CkBAIC01OCwxNCArNTgsMTQgQEAgdHlwZWRlZiBpbnQgU2VnbWVudElkZW50aWZpZXI7CiAKIGNs
YXNzIEluc3BlY3RvclJlcGxheUFnZW50IGZpbmFsCiAgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlCi0gICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JSZXBsYXlCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworICAgICwgcHVibGljIEluc3BlY3Rvcjo6UmVwbGF5QmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSZXBs
YXlBZ2VudCk7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvclJl
cGxheUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAv
LyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgogICAgIHZvaWQgZnJhbWVOYXZp
Z2F0ZWQoRG9jdW1lbnRMb2FkZXIqKTsKQEAgLTExNCw4ICsxMTQsOCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gZmluZFNlZ21lbnQoRXJyb3JTdHJpbmcmLCBT
ZWdtZW50SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6U2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0
ZSgpIGNvbnN0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yUmVw
bGF5RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpSZXBsYXlGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJl
cGxheUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFBhZ2UmIG1f
cGFnZTsKIAogICAgIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVwbGF5U2Vzc2lvbj4sIFdURjo6SW50
SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IG1fc2Vz
c2lvbnNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAKaW5kZXggNDkyMmYzMTg5OTZjNTg4NDZlNmVmZGI0ZDQxNjE2MDg4ZmZh
YTJkMC4uZjliYmY4MDhlMGIyMTYyYjZlYzgxODNhNjA3OThhZTQwYjUxOTE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApA
QCAtNzEsNyArNzEsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi10eXBlZGVm
IEluc3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6TG9h
ZFJlc291cmNlQ2FsbGJhY2sgTG9hZFJlc291cmNlQ2FsbGJhY2s7Cit0eXBlZGVmIEluc3BlY3Rv
cjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6TG9hZFJlc291cmNlQ2FsbGJhY2sg
TG9hZFJlc291cmNlQ2FsbGJhY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTczLDEz
ICsxNzMsMTMgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KIHsKIH0KIAotdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRy
OwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IGU4NDY1OTFiMWQ0ZjUy
OTEyMzAyN2MwY2FhNWM2Nzc5NTk3ZDNkMTUuLjg0YzNiZmRjZTRkODExNGRlNTM2NzA5ZGYyMTYw
NTQ5NGMwZTA0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuaApAQCAtNzMsMTQgKzczLDE0IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFt
ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJlc291
cmNlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
dG9yOjpJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIElu
c3BlY3RvclJlc291cmNlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBw
dWJsaWMgSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JD
bGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24gY2FsbGJhY2tzLgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTEz
OCw4ICsxMzgsOCBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VB
Z2VudDsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hl
cjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRh
PiBtX3Jlc291cmNlc0RhdGE7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX2NhY2hl
RGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKaW5kZXggNmY4MjM3NmM4MWNlZmM5NzY2NTExM2ZiZWJkMmQ5MTAyZTlhM2VmYy4u
NmU0NzFjNDRhZTU0ZjBhM2E2NzY3MjI0ODk3MGVjZGYwNjk4MTFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzk5LDcgKzM5
OSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JT
dHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvCiAKICAgICAgICAgLy8gVmlzdWFsIFN0dWRp
byBkaXNhZ3JlZXMgd2l0aCBvdGhlciBjb21waWxlcnMgYXMgdG8gd2hldGhlciAnY2xhc3MnIGlz
IG5lZWRlZCBoZXJlLgogI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGVudW0gY2xhc3MgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1cyBzdGF0dXM7CisgICAgICAg
IGVudW0gY2xhc3MgUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXMgc3RhdHVzOwogI2Vs
c2UKICAgICAgICAgZW51bSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5U3Rh
dHVzIHN0YXR1czsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGI5MjJjNzhjZmY5NmVhNDNmZDM5OTBiYjZi
OGQ3ZjAyODU1OTI2YjkuLjFhNGQ2ZTc3MzJiNTZiODU2YTE1MjA2MTQwMWY0M2ViOGNlNThmNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAKQEAgLTYyLDEwICs2MiwxMCBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp+SW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQog
ewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JU
aW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJv
bnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpUaW1l
bGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0ZW50SW5zcGVjdG9yVGltZWxp
bmVBZ2VudCh0aGlzKTsKIApAQCAtNzMsMTQgKzczLDE0IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvCiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVsaW5lQWdlbnQobnVs
bHB0cik7CiAKLSAgICBpZiAocmVhc29uICE9IEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Oklu
c3BlY3RlZFRhcmdldERlc3Ryb3llZCkgeworICAgIGlmIChyZWFzb24gIT0gSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpIHsKICAgICAgICAgaWYg
KG1fc2NyaXB0RGVidWdTZXJ2ZXIpCiAgICAgICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLT5y
ZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGVhNDQ4NWIzMmQzMmNkNjNh
NzllMmFmYTNmZjc4NWZkMWFkOWM2MzQuLjQ1YWY2MzU5OWY4Y2U3ZDM1ZjcxOTExZGE4OTE2Mjdk
MGNmOWVjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaApAQCAtMTA3LDcgKzEwNyw3IEBAIGVudW0gY2xhc3MgVGltZWxpbmVSZWNv
cmRUeXBlIHsKIAogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCBmaW5hbAogICAgIDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZQotICAgICwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9y
VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICAsIHB1YmxpYyBJbnNwZWN0b3I6
OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9y
OjpTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0
b3JUaW1lbGluZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTExNyw4
ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlwZSwgSW5zcGVjdG9y
Q2xpZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KEVy
cm9yU3RyaW5nJiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCA9IG51bGxwdHIpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC0y
MjksOCArMjI5LDggQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFn
ZW50OwogICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciogbV9zY3JpcHREZWJ1Z1NlcnZlcjsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVy
PiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUaW1lbGluZUJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogCiAgICAgVmVjdG9yPFRpbWVs
aW5lUmVjb3JkRW50cnk+IG1fcmVjb3JkU3RhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDNiYjE0MDNlYjBiZTY3NWY5
ODk0MmU0MGM4OWU1NTI5YTQ3YjAxNzIuLmQ4NGJiMDU5YmZkYmMwNTMyMjM3YTQ0YzI2NDhhYThh
YjUzOTRlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsIDogcHVibGljIFdv
cmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3IgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlckZyb250ZW5kQ2hhbm5lbChJ
bnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXIqIGZyb250ZW5kRGlzcGF0Y2hlciwgV29y
a2VyR2xvYmFsU2NvcGVQcm94eSogcHJveHkpCisgICAgZXhwbGljaXQgV29ya2VyRnJvbnRlbmRD
aGFubmVsKEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBmcm9udGVuZERpc3Bh
dGNoZXIsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHByb3h5KQogICAgICAgICA6IG1fZnJvbnRl
bmREaXNwYXRjaGVyKGZyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgLCBtX3Byb3h5KHByb3h5
KQogICAgICAgICAsIG1faWQoc19uZXh0SWQrKykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIo
bV9pZCwgbWVzc2FnZU9iamVjdCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9yV29ya2VyRnJvbnRl
bmREaXNwYXRjaGVyKiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNwZWN0b3I6Oldvcmtl
ckZyb250ZW5kRGlzcGF0Y2hlciogbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgV29ya2VyR2xv
YmFsU2NvcGVQcm94eSogbV9wcm94eTsKICAgICBpbnQgbV9pZDsKICAgICBib29sIG1fY29ubmVj
dGVkOwpAQCAtMTE0LDEzICsxMTQsMTMgQEAgSW5zcGVjdG9yV29ya2VyQWdlbnQ6On5JbnNwZWN0
b3JXb3JrZXJBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JX
b3JrZXJBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyRnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7
CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvcldvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9z
aG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQgPSBmYWxzZTsKICAgICBFcnJvclN0cmlu
ZyB1bnVzZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5oCmluZGV4IDY4NjlkNWE2ODA0ZjcyOTgwYjA2NzJiMDliNmNhM2NiODgwMmZhZmIuLjRl
NzNjZmI5MTcwZjIzNDBiYjA0ODljNmQ5MWFmM2M5ZjM5OGE1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0zOCw3ICszOCw3IEBA
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3Mg
SW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOworY2xhc3MgV29ya2VyRnJvbnRlbmRE
aXNwYXRjaGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwxNCArNDgsMTQgQEAg
Y2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQcm94eTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rv
ckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IGZpbmFsIDogcHVibGlj
IEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yV29ya2VyQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCos
IEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbgogICAgIGJvb2wgc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCkgY29uc3Q7
CkBAIC03Niw4ICs3Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVXb3JrZXJGcm9udGVu
ZENoYW5uZWwoV29ya2VyR2xvYmFsU2NvcGVQcm94eSosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2b2lkIGRlc3Ryb3lXb3JrZXJGcm9udGVuZENoYW5uZWxzKCk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvcldvcmtlckJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX3Nob3VsZFBh
dXNlRGVkaWNhdGVkV29ya2VyT25TdGFydDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDdhN2I3NjI0MjU5ZmJjYjYyNjlmMTI1ZTk2YWU1
ZTJhNmQ2YmU2NTQuLmUxMjNjMGIzNTlkNjc4MmRiMjQ3MDJkZjA3ZjgyODI4ZTFjNzFlNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU5
LDEzICs1OSwxMyBAQCBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLAogewogfQogCi12b2lkIFBhZ2VS
dW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UnVu
dGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwog
fQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBQYWdlUnVudGltZUFnZW50
Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFz
b24gcmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VSdW50aW1lQWdlbnQuaAppbmRleCBmODJjZmMwMTBjNzI2OTIzY2QzOTNjOTZiODAzM2ZmOTcy
ODkzODhiLi5lN2IyYzI0ZDhkMGU1NDQ5Y2U3MmYxMTk0YzhkMjM0YjczMGZhYWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTU2LDggKzU2LDgg
QEAgcHVibGljOgogICAgIFBhZ2VSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dE1hbmFnZXIqLCBQYWdlKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+UGFn
ZVJ1bnRpbWVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogCkBAIC03NCw4ICs3NCw4
IEBAIHByaXZhdGU6CiAKICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6UnVu
dGltZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwogICAgIGJvb2wgbV9tYWluV29ybGRDb250ZXh0Q3JlYXRlZDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCA3NzdjZjcyMzNhZDcyZTQyNmYxOGI0ODBmZmJlN2QyOThkMTRlY2VjLi5mMWZlNDEwMDVh
ZGZlYTRiYzAxZTBhZDViNzdmNThmMGI5NmMyNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMDgsMTgg
KzEwOCwxOCBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAogV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6fldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogewogICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+cmVzZXQoKTsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0RnJv
bnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95
ZWQpOwogfQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVu
ZCgpCiB7CiAgICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9mcm9udGVuZENo
YW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4obV93b3JrZXJHbG9i
YWxTY29wZSk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOworICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRDaGFubmVsLmdl
dCgpKTsKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQobV9mcm9udGVu
ZENoYW5uZWwuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQogCi12b2lkIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAg
ICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXgg
Zjg3Nzk0Mzc4MzkzYTMxZDMyMGJhNDRlMjI4OWIzMzU2MTQ1ZjJmZC4uOTY3NDA4M2NkZWNhZGM5
MWU1MDMwMjIyN2ZkYzRkMWE5MThiZWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00MSwxMCArNDEsNiBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVz
cGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci19Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwpA
QCAtNjEsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcigpOwogCiAgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoKTsKLSAgICB2b2lkIGRpc2Nv
bm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pOworICAg
IHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7CiAg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCByZXN1bWUoKTsKIApAQCAtODEsMTAgKzc3LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEluc3RydW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cjsKICAgICBXb3JrZXJSdW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50OwotICAgIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKKyAgICBJbnNwZWN0
b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKICAgICBSZWY8V1RGOjpTdG9w
d2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFZl
Y3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUsIDI+IG1faW5qZWN0ZWRTY3JpcHRJ
bnN0cnVtZW50YXRpb25Db29raWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCA3NjkwNDllMzIyZjVhNjU5OTQzYWE2NzBi
MDJiZDkyNTMyZDNiNzhjLi45ZWEyODVjNmVkZTJkM2NmMjVhNWI2Mjg4ZWE4MzlmY2IzZTc2YmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNw
cApAQCAtNTIsMTIgKzUyLDEyIEBAIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29ya2VyUnVudGltZUFn
ZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hCiB7CiB9CiAKLXZv
aWQgV29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFdvcmtlclJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcyk7CiB9CiAKLXZvaWQgV29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgV29ya2Vy
UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmlu
ZGV4IDgxNGM2NmQ2YmM5ZDQ2MTgzMTkxNGE5YmZiNDFlMjg4MmUxYzBkMzcuLjg3OGJkZDI0OGIw
OGJlMWM4YWY0ZWY0NTcyNzMzNGU3MDhhOTBjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAg
IFdvcmtlclJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFdv
cmtlckdsb2JhbFNjb3BlKik7CiAgICAgdmlydHVhbCB+V29ya2VyUnVudGltZUFnZW50KCkgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cnVuKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX3dv
cmtlckdsb2JhbFNjb3BlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAg
Ym9vbCBtX3BhdXNlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRl
eCBkY2MzNGRkYzNmMTU5ZTYyOGQ2NTc5ZmE0NGYzZjBhNjFjOWFmNDNhLi4xNGVjNjJlYmI1ZjZk
Y2QyY2ZmMjBlNTRkYmEyN2ZkNjFjMWQ2MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCkBAIC01OTQsNyArNTk0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGlu
c3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQogICAgIAotICAgIHZpcnR1YWwgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciopIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciop
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JG
cm9udGVuZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9G
cm9udCgpIG92ZXJyaWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3Bw
CmluZGV4IDVjZjg0OWEyZmE1Mzc1MDZhOTExZTlkYmE3MzQ4NmIwNmZlMjZhMGUuLjY3NmM0Y2E5
MjRkNzEyNTI0YWMyNDhlZjJjMTU1MTk3MzcxNDQyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZURlYnVnZ2FibGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgUGFnZURlYnVnZ2FibGU6Omhh
c0xvY2FsRGVidWdnZXIoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UuaW5zcGVjdG9yQ29udHJv
bGxlcigpLmhhc0xvY2FsRnJvbnRlbmQoKTsKIH0KIAotdm9pZCBQYWdlRGVidWdnYWJsZTo6Y29u
bmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCwgYm9vbCBp
c0F1dG9tYXRpY0luc3BlY3Rpb24pCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
bikKIHsKICAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQo
KSkgewogICAgICAgICBtX2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQgPSB0cnVlOwpAQCAt
NzgsMTMgKzc4LDEzIEBAIHZvaWQgUGFnZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwsIGJvb2wKIAogICAgIEluc3BlY3RvckNv
bnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxl
cigpOwogICAgIGluc3BlY3RvckNvbnRyb2xsZXIuc2V0SGFzUmVtb3RlRnJvbnRlbmQodHJ1ZSk7
Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQocmVpbnRlcnByZXRfY2Fz
dDxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqPihjaGFubmVsKSwgaXNBdXRvbWF0
aWNJbnNwZWN0aW9uKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLmNvbm5lY3RGcm9udGVuZChy
ZWludGVycHJldF9jYXN0PEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKj4oY2hhbm5lbCksIGlz
QXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2FibGU6OmRpc2Nvbm5l
Y3QoKQogewogICAgIEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIgPSBt
X3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXIuZGlz
Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ry
b3llZCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogICAgIGluc3BlY3Rv
ckNvbnRyb2xsZXIuc2V0SGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpOwogCiAgICAgaWYgKG1fZm9y
Y2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlRGVidWdnYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJs
ZS5oCmluZGV4IDQxZWZiYzcxN2NmYzFiZTZlYzJkNzFlOTE1ODhjYTQ2MjYyY2EyMDEuLjdmN2Fh
OWJmZWYwY2FmMzBlYzQ4M2NhMDNlZGM1OGIxOWYwZTZmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VEZWJ1Z2dhYmxlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3Ry
aW5nIHVybCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBoYXNMb2NhbERlYnVn
Z2VyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4NjQ2ZTA2ZjNlYTc4YTc2NGY2ZTkwMmE4
NzJkNzc1YjM3MzhhN2FkLi4xMGJhM2NkYTY2MmUzMGU3ZTFkMTc1ZGRiOWI5N2M4NGI5OWMyOWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNTU4LDcgKzE1NTgsNyBA
QCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCkKICAgICBBU1NF
UlQocGFnZSk7CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRXaW5kb3cpOwogCi0gICAgcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwogCiAgICAgbV9mcm9udGVuZENsaWVudCA9IG51bGxwdHI7CiAgICAg
bV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCA0MzdjMTA4YzkzNWJlNWYyMTNiNWRjZWQz
NWQ2YzkzMjUxNjNhMGUwLi43ODQ1YjYxZmE4ZGNmYWY5ZjY3ZmFhMGQ5NDI1ZDBmOWIyYjVkNjE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNw
cApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OmRpc2Nvbm5l
Y3RGcm9tSW5zcGVjdG9yKCkKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW10g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgZG93bmNhc3Q8V29y
a2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkud29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAgICAgfSwgV29y
a2VyRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4
cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRH
ZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggZTgyN2I5ZWZiMmM4Yzc4OTg1NDQy
NTQ0MTJhNDU5MTMxMTQwZmExOC4uMjM5NjcxODg1N2VjNGFmMjhiYmE0NGJmYWZiODBmNDA2NDM5
NDQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBv
cnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAg
LTIyOSw3ICsyMjksNyBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD93aW5k
b3dPYmplY3RDbGVhcmVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFF
WFhaLCA/d2luZG93T2JqZWN0Q2xlYXJlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdl
YkNvcmVAQFVFQUFYWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9wYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRAV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBBQlYyM0AwQFosID9wYXRoQnlB
cHBlbmRpbmdDb21wb25lbnRAV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBBRUJWMjNAMEBaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFosID9zZXRQcm9maWxlckVuYWJsZWRASW5zcGVjdG9y
Q29udHJvbGxlckBXZWJDb3JlQEBRRUFBWF9OQFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYVzRJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uQEluc3BlY3RvckBAQFosID9kaXNjb25uZWN0RnJvbnRl
bmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUFBWFc0SW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbkBJbnNwZWN0b3JAQEBaKQorICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZGlzY29u
bmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFc0RGlzY29ubmVj
dFJlYXNvbkBJbnNwZWN0b3JAQEBaLCA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRy
b2xsZXJAV2ViQ29yZUBAUUVBQVhXNERpc2Nvbm5lY3RSZWFzb25ASW5zcGVjdG9yQEBAWikKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBA
WUFfTlBCVk5vZGVAMUBAWiwgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBF
QlZOb2RlQDFAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pc1ByZWxvYWRlZEBDYWNo
ZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaLCA/aXNQcmVs
b2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUVCQV9OQUVCVlN0cmluZ0BXVEZA
QEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpT
VmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NS
ZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFosID9qc0FycmF5QFdlYkNvcmVA
QFlBP0FWSlNWYWx1ZUBKU0NAQFBFQVZFeGVjU3RhdGVAM0BQRUFWSlNET01HbG9iYWxPYmplY3RA
MUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tCmluZGV4IDc4OTNmOGIyM2E4OTRmNzI1ZjkxOTc0OTJhMDdmZGZiN2UzYjQ0MGYuLjM0NDNk
Y2Q0Y2I3OTNlZGU4NTY0YThkMTM4YTY2YTNkYzExNzA2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTcz
MCw3ICs3MzAsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAgICAgaWYgKG5vdGlmeUlu
c3BlY3RvckNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBb
X2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgcGFnZV0pCi0gICAgICAgICAgICBpbnNwZWN0ZWRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICAgICAgICAg
IGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogICAgIH0K
IAogICAgIFtfd2ViVmlldyBjbG9zZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA4MjI0ZDRlZThiNTVh
ODM1ZWI5NDQ0NmFlOTg1MjNiMDI3YTFlYWYzLi42OGViMWVjMTBiZTA3OGY1NDg1MWQwZmUyODU2
NDMwY2NiNTkzZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yVmlldyhib29sIG5vdGlm
eUluc3BlY3RvckNvbnRybwogICAgIGNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsK
IAogICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0gICAgICAgIG1faW5zcGVj
dGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJv
eWVkKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJ
bnNwZWN0b3JEZXN0cm95ZWQpOwogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+dXBkYXRlSGln
aGxpZ2h0KCk7CiAgICAgfQogICAgIDo6RGVzdHJveVdpbmRvdyhtX2Zyb250ZW5kSHduZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
CmluZGV4IDQ1NzBmOTEzNDdjZmUwNTgxMzllMDc1OGM2MjBhOTM4NTA4NjA5OTUuLmJmMDQ3NjA1
ZjEzMjUyZTNlZjkwYjBhOTZmMjllMWIzYzI0NTcyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0yNzEsNyArMjcxLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICAgICBt
X3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9wYWdlLT5jb3Jl
UGFnZSgpKQotICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29u
OjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246310</attachid>
            <date>2015-02-09 19:39:27 -0800</date>
            <delta_ts>2015-02-14 00:08:50 -0800</delta_ts>
            <desc>Patch (fix Windows)</desc>
            <filename>bug-141372-20150209193928.patch</filename>
            <type>text/plain</type>
            <size>298591</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YTAyNTFjOTg3MGU3YzBlMmY0MGViNmRiNTE1ZTkxZmY5OTA5OWU5Li5lYWNkOGI1Yjc2ZDQ0Mjky
ZTcxMmZjZTIzZmFjNWViYjk2N2RkZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDcgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6OkFnZW50UmVnaXN0cnkpOgorICAgICAgICAoSW5z
cGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjphcHBlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpBZ2Vu
dFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QWdlbnRS
ZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6QWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjpkaXNjYXJkQWdlbnRzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSk6
IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFw
cGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0
cnk6OmFwcGVuZEV4dHJhQWdlbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2VudHMpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVy
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6
OnNlbmRJZkFjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJE
aXNwYXRjaGVyRm9yRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnNl
bmRSZXNwb25zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpyZXBv
cnRQcm90b2NvbEVycm9yKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OmdldEludGVnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RG91YmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmlu
Zyk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZEZhaWx1cmUp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpzZW5kSWZBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlZ2lzdGVyRGlzcGF0
Y2hlckZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9j
b2xFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Qm9v
bGVhbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpnZXRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0VmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAo
SW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcjo6flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rv
clN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6On5JbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWw6On5Gcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw6On5JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0RGVzdHJv
eWVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRsZUNvbnNvbGVBc3NlcnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cGF1c2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1ApOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyQnJlYWtEZXRhaWxzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dl
bmVyYXRvci5weToKKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfZm9ybWFsX291
dF9wYXJhbWV0ZXIpOgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl9zdGFja19v
dXRfcGFyYW1ldGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9n
ZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXIpOgorICAgICAgICAoQWx0ZXJuYXRlKToKKyAgICAgICAgKHZvaWQpOgorICAgICAgICAoQWx0
ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIpOiBEZWxldGVkLgorICAgICAgICAoQWx0
ZXJuYXRlSW5zcGVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAg
ICAoQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuX2dlbmVyYXRlX2FsdGVybmF0
ZV9oYW5kbGVyX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9kb21haW5zLkFsdGVybmF0ZSk6Cisg
ICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfZGlz
cGF0Y2hlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAgICAgIChDcHBCYWNrZW5kRGlz
cGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0ZXJuYXRlX2hhbmRsZXJfZm9yd2Fy
ZF9kZWNsYXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRlSW5zcGVjdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5k
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9oYW5kbGVyX2NsYXNzX2Rlc3Ry
dWN0b3JfZm9yX2RvbWFpbik6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9sYXJnZV9kaXNwYXRjaGVyX3N3aXRjaF9pbXBsZW1l
bnRhdGlvbl9mb3JfZG9tYWluKToKKyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9y
X2NvbW1hbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBG
cm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbl9mb3JfZXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5OgorICAgICAgICAoT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9ldmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1k
b21haW4uanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxp
YXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpjb25uZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
OjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oOgorCiAyMDE1LTAyLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVmFyYXJncyBmcmFtZSBzZXQtdXAgc2hvdWxkIGJlIGZhY3RvcmVkIG91dCBmb3IgdXNl
IGJ5IG90aGVyIEpJVHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NWRjNDRlMzA0YWNiNjdhMjgwZjBiYzcyN2Ri
MDkwOWY1ZDA1NTBiLi42NmFlYTI4ZmQzODdjMWYzYTk3MTViNDk1MzZhNWE4MmQzNjg4NTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDE1LTAyLTA5ICBCcmlhbiBKLiBCdXJnICA8
YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUg
c29tZSB1bm5lY2Vzc2FyeSBJbnNwZWN0b3IgcHJlZml4ZXMgZnJvbSBjbGFzcyBuYW1lcyBpbiBJ
bnNwZWN0b3IgbmFtZXNwYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDEzNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0
ZWRQYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3Nh
Z2VGcm9tRnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3Zl
RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3
aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJkaW5nLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpXb3JrZXJG
cm9udGVuZENoYW5uZWw6OldvcmtlckZyb250ZW5kQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6On5Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5l
Y3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2Vy
UnVudGltZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAg
ICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2FibGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6OmRpc2Nv
bm5lY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNsb3NlRHVt
bXlJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6ZGlzY29u
bmVjdEZyb21JbnNwZWN0b3IpOgorCiAyMDE1LTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIFdFQkNPUkVfRVhQT1JUIHRv
IHByZXBhcmUgdG8gc3RhcnQgdXNpbmcgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkZjhhZmZhMDg1NjM3OGZl
YTRlZTkxNTQ0NjAwZTNmNjhlZGRkYWUuLmNkOGRjNzI3MTE1YzY4NTM1MTI0OGY1MzYwYjQ4ZTI4
ZTQ3N2RjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEou
IEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5h
bWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9y
L1dlYktpdEV4cG9ydHMuZGVmLmluOgorCiAyMDE1LTAyLTA1ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIDY0LWJpdCBidWlsZCBmaXggYWZ0ZXIg
cjE3OTcwMiBhbmQgcjE3OTcwOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGI4YTI2NmNkNWZiZjIwMmZk
YTlhMGNmNGMxODI2MjZlZDMyMTE0ZDYuLjdlNDkzZGU2NDIyOTliMzllYjk3ZDQ2NTA1ZTUzOWI4
ZjMzODg4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMi0wOSAg
QnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgSW5zcGVjdG9yIHByZWZpeGVzIGZyb20g
Y2xhc3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5hbWVzcGFjZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW06CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgZGVzdHJv
eUluc3BlY3RvclZpZXc6XSk6CisKIDIwMTUtMDItMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4u
ZmFibGV0QGNyZi5jYW5vbi5mcj4gYW5kIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGEgYmFyZWJv
bmUgUmVhZGFibGVTdHJlYW0gaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggODcxNDlmYTVl
MzUxODhlODBhNWQyYjY1NTQ1NDQ2NTI2YTMzOTQ1Ni4uOWFhOTRlYmIxNTg5MjI0YTFjMzU3YzE3
OTRiZThiYzY3MTM3Y2IxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1
LTAyLTA5ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBJbnNwZWN0b3IgcHJlZml4
ZXMgZnJvbSBjbGFzcyBuYW1lcyBpbiBJbnNwZWN0b3IgbmFtZXNwYWNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEzNzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
ZGVzdHJveUluc3BlY3RvclZpZXcpOgorCiAyMDE1LTAyLTA5ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBbV2luXSBPQkpJRF9DTElFTlQgY29tcGFy
aXNvbnMgYnJva2VuIGluIDY0LWJpdCBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNzY2MGQ4YjlhNWRj
OTIzY2I0MWVhNWUwYzMxMDY5Yzg4MDZiMDJkLi40NDYxZWJjZWQ5NDRkZTIxNzk2NTcyMThlMTNh
NWFlM2EwYjFiZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDItMDkgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNs
YXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNj
b25uZWN0ZWQpOgorCiAyMDE1LTAyLTA5ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5j
b20+CiAKICAgICAgICAgU2VsZWN0aW9uIGZsaWNrZXJzIHdoZW4gdHJ5aW5nIHRvIGNoYW5nZSBz
aXplIG9mIHNlbGVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggNTBlMTE0ODc0ZDE2Nzk0YWEwNTY3YWNiMjUxMTBj
NjFjYmYwNGJhOC4uNWY3NjkwZTY3N2I0ZWU1YmY2YjE1MDcyY2JlNGRkYTc0ODQ4NWQzYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5j
cHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29s
ZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsIG1lc3NhZ2VMZXZlbFZhbHVlKE1lcwogICAgIHJldHVy
biBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6TGV2ZWw6Okxv
ZzsKIH0KIAotdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JDb25z
b2xlRnJvbnRlbmREaXNwYXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyLCBJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdl
bmVyYXRlUHJldmlldykKKyAgICB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENv
bnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJl
dmlldykKIHsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1l
c3NhZ2U+IGpzb25PYmogPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVz
c2FnZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9z
b3VyY2UpKQpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJv
bnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAg
Y29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZUFkZGVkKFdURjo6bW92ZShqc29uT2Jq
KSk7CiB9CiAKLXZvaWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xl
KEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3Bh
dGNoZXIpCit2b2lkIENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShJ
bnNwZWN0b3I6OkNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3Bh
dGNoZXIpCiB7CiAgICAgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZVJlcGVhdENv
dW50VXBkYXRlZChtX3JlcGVhdENvdW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRleCBlZjFjNzlkMTVjN2NlODczZjcwYWVh
MTVkMTJkOTkzN2NlZGJmN2ZhLi44NDc2ZjFjNmQ4YmQ0N2U5ZDE0NWZjMWEzMzE3NmJhOWU3ZDVh
OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5oCkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICBDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CiAgICAgfkNvbnNvbGVNZXNzYWdlKCk7CiAK
LSAgICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hl
ciosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KTsKLSAgICB2
b2lkIHVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERp
c3BhdGNoZXIqKTsKKyAgICB2b2lkIGFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yOjpDb25zb2xlRnJv
bnRlbmREaXNwYXRjaGVyKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcpOworICAgIHZvaWQgdXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUoSW5zcGVjdG9yOjpD
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7CiAKICAgICBNZXNzYWdlU291cmNlIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAppbmRleCA2MzlkMDQ4YjI3YWVmOTdl
ZDNmYzJkMmUwODhmNWViNjMzMDlhNWE2Li42MzQwNGNmNTQyNTRhZDZhM2VhYTFhNWYyN2M0OWI5
MTc3MmM4NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50QmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnRCYXNlLmgKQEAgLTMxLDEwICszMSwxMCBAQAogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEZy
b250ZW5kQ2hhbm5lbDsKIAotZW51bSBjbGFzcyBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHsK
K2VudW0gY2xhc3MgRGlzY29ubmVjdFJlYXNvbiB7CiAgICAgSW5zcGVjdGVkVGFyZ2V0RGVzdHJv
eWVkLAogICAgIEluc3BlY3RvckRlc3Ryb3llZAogfTsKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIGRvbWFpbk5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJl
YXNvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7IH0KIAogcHJvdGVj
dGVkOgpAQCAtNTcsNyArNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBTdHJpbmcgbV9uYW1lOwog
fTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDQwMTA4ZWI0
OWI0ZTliZGQ0ODMzZjVhOGZhZDM1MzdlYmJkYmFiNGMuLmJjYzA5ODgyMTRhNjFkZjFlYTY3MzQz
ZDUzMjI2MTUyNWU3ZWY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApAQCAtMzEsMTcgKzMxLDE3
IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpJ
bnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KCkKK0FnZW50UmVnaXN0cnk6OkFnZW50UmVnaXN0cnkoKQog
ewogfQogCi12b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2VudCkKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6YXBwZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQogewogICAgIG1fYWdl
bnRzLmFwcGVuZChXVEY6Om1vdmUoYWdlbnQpKTsKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjphcHBl
bmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQor
dm9pZCBBZ2VudFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3JBZ2VudEJhc2U+IGFnZW50KQogewogICAgIG1fZXh0cmFEb21haW5zLmFwcGVuZChhZ2Vu
dC0+ZG9tYWluTmFtZSgpKTsKIApAQCAtNDksMTkgKzQ5LDE5IEBAIHZvaWQgSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeTo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdl
bnRCYXNlCiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3Zv
aWQgQWdlbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7IGkrKykK
ICAgICAgICAgbV9hZ2VudHNbaV0tPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVu
ZENoYW5uZWwsIGJhY2tlbmREaXNwYXRjaGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uIHJlYXNvbikKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7IGkrKykKICAgICAgICAgbV9hZ2VudHNbaV0tPndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdl
bnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW50cygpCit2b2lkIEFnZW50UmVnaXN0cnk6OmRpc2NhcmRB
Z2VudHMoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2VudHMuc2l6ZSgpOyBp
KyspCiAgICAgICAgIG1fYWdlbnRzW2ldLT5kaXNjYXJkQWdlbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgK
aW5kZXggOGI3NzU3ZjhjYTU1YjkyMzNmNWVkY2NjOGMzYmIyOWY3ZGY2NmNlZS4uOTYyZjAwNmRm
NzI3MTNjMmQ5NDdmZTg3NTc5NGM4Nzk4MDk1NmM0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgKQEAgLTMy
LDE5ICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xhc3MgQmFja2VuZERp
c3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudEJh
c2U7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNzIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbDsKLWVudW0gY2xhc3MgSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjsKIAot
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSB7CitlbnVtIGNs
YXNzIERpc2Nvbm5lY3RSZWFzb247CisKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEFnZW50UmVn
aXN0cnkgewogcHVibGljOgotICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnkoKTsKKyAgICBBZ2Vu
dFJlZ2lzdHJ5KCk7CiAKICAgICB2b2lkIGFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
QWdlbnRCYXNlPik7CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopOwotICAg
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbiByZWFzb24pOworICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lkIGRpc2NhcmRBZ2Vu
dHMoKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpAQCAt
NTUsOCArNTYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRoZXNlIGFyZSBkZWNsYXJl
ZCBoZXJlIHRvIGF2b2lkIE1TVkMgZnJvbSB0cnlpbmcgdG8gY3JlYXRlIGRlZmF1bHQgaXBsZW1l
bnRhdGlvbnMgd2hpY2ggd291bGQKICAgICAvLyBpbnZvbHZlIGdlbmVyYXRpbmcgYSBjb3B5IGNv
bnN0cnVjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIHRoZSBWZWN0b3Igb2Yg
c3RkOjp1bmlxdWVfcHRycy4KLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KGNvbnN0IEluc3Bl
Y3RvckFnZW50UmVnaXN0cnkmKSA9IGRlbGV0ZTsKLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
JiBvcGVyYXRvcj0oY29uc3QgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRlOworICAg
IEFnZW50UmVnaXN0cnkoY29uc3QgQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRlOworICAgIEFnZW50
UmVnaXN0cnkmIG9wZXJhdG9yPShjb25zdCBBZ2VudFJlZ2lzdHJ5JikgPSBkZWxldGU7CiAKICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4+IG1fYWdlbnRzOwog
I2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcAppbmRleCAzMTU2NGQ4NzQ1NGVlNTUxZWU2OTI1MDIzYTc1YmM1N2ExOTRl
MzBlLi5mODhjZmJkYWJjMWRjOWNlYWY4ZjUwMzBjNjc1ZDQ5NGQ3NjAzODE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMzQsMjUgKzM0LDI1IEBACiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCi1JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxs
YmFja0Jhc2UoUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRj
aGVyLCBpbnQgaWQpCitCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFja0Jh
c2UoUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpCiAg
ICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlcikpCiAg
ICAgLCBtX2lkKGlkKQogICAgICwgbV9hbHJlYWR5U2VudChmYWxzZSkKIHsKIH0KIAotYm9vbCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjppc0FjdGl2ZSgpIGNvbnN0
Citib29sIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0aXZlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gIW1fYWxyZWFkeVNlbnQgJiYgbV9iYWNrZW5kRGlzcGF0Y2hlci0+aXNB
Y3RpdmUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlOjpzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYgZXJyb3IpCit2b2lkIEJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRGYWlsdXJlKGNvbnN0IEVycm9yU3RyaW5nJiBl
cnJvcikKIHsKICAgICBBU1NFUlQoZXJyb3IubGVuZ3RoKCkpOwogICAgIHNlbmRJZkFjdGl2ZShu
dWxscHRyLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNh
bGxiYWNrQmFzZTo6c2VuZElmQWN0aXZlKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcGFydGlh
bE1lc3NhZ2UsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3IpCit2b2lkIEJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2ZShSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYmIHBhcnRpYWxNZXNzYWdlLCBjb25zdCBFcnJvclN0cmluZyYgaW52b2NhdGlvbkVy
cm9yKQogewogICAgIGlmIChtX2FscmVhZHlTZW50KQogICAgICAgICByZXR1cm47CkBAIC02MSwy
MCArNjEsMjAgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
OjpzZW5kSWZBY3RpdmUoUmVmUHRyPEluc3BlY3Rvck9iamUKICAgICBtX2FscmVhZHlTZW50ID0g
dHJ1ZTsKIH0KIAotUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKQorUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKGluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhY2tlbmREaXNwYXRjaGVy
KGZyb250ZW5kQ2hhbm5lbCkpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIEluc3Bl
Y3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKQordm9pZCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlcikKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IG1fZGlzcGF0Y2hlcnMuYWRkKGRvbWFpbiwgZGlzcGF0Y2hlcik7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIFJlZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gcGFyc2VkTWVzc2FnZTsKICAgICBpZiAoIUluc3BlY3RvclZhbHVl
OjpwYXJzZUpTT04obWVzc2FnZSwgcGFyc2VkTWVzc2FnZSkpIHsKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgfQogCiAgICAgU3RyaW5nIGRvbWFpbiA9IG1ldGhvZC5zdWJzdHJpbmco
MCwgcG9zaXRpb24pOwotICAgIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
KiBkb21haW5EaXNwYXRjaGVyID0gbV9kaXNwYXRjaGVycy5nZXQoZG9tYWluKTsKKyAgICBTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZG9tYWluRGlzcGF0Y2hlciA9IG1fZGlzcGF0Y2hl
cnMuZ2V0KGRvbWFpbik7CiAgICAgaWYgKCFkb21haW5EaXNwYXRjaGVyKSB7CiAgICAgICAgIHJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgTWV0aG9kTm90Rm91bmQsICInIiArIGRvbWFpbiAr
ICInIGRvbWFpbiB3YXMgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybjsKQEAgLTEyOSw5ICsx
MjksOSBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiAgICAgZG9tYWluRGlzcGF0Y2hlci0+ZGlzcGF0Y2goY2FsbElkLCBk
b21haW5NZXRob2QsIG1lc3NhZ2VPYmplY3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25nIGNhbGxJZCwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJiByZXN1bHQsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0
aW9uRXJyb3IpCit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UobG9uZyBjYWxs
SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcmVzdWx0LCBjb25zdCBFcnJvclN0cmluZyYg
aW52b2NhdGlvbkVycm9yKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwp
CisgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGludm9jYXRpb25FcnJvci5sZW5ndGgoKSkgewpAQCAtMTQyLDE1ICsxNDIsMTUgQEAgdm9pZCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgY2FsbElkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWMKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXNwb25zZU1lc3Nh
Z2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0
T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIHJlc3VsdCk7CiAgICAgcmVzcG9uc2VNZXNz
YWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgY2FsbElkKTsKLSAgICBtX2luc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJlc3BvbnNlTWVzc2Fn
ZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRv
RnJvbnRlbmQocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyog
Y29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkgY29uc3QKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29s
RXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3QKIHsKICAgICByZXBvcnRQcm90b2Nv
bEVycm9yKGNhbGxJZCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UsIG51bGxwdHIpOwogfQogCi12
b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0
IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiYmIGRhdGEpIGNvbnN0Cit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2Nv
bEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiYmIGRhdGEpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBl
cnJvckNvZGVzW10gPSB7CiAgICAgICAgIC0zMjcwMCwgLy8gUGFyc2VFcnJvcgpAQCAtMTY1LDcg
KzE2NSw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29s
RXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiAgICAgQVNTRVJUX0FSRyhlcnJvckNv
ZGUsICh1bnNpZ25lZCllcnJvckNvZGUgPCBXVEZfQVJSQVlfTEVOR1RIKGVycm9yQ29kZXMpKTsK
ICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKIAotICAg
IGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250ZW5kQ2hh
bm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXJyb3Ig
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyog
Y29uc3QgY2FsbElkLCBDCiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlLT5zZXRWYWx1ZShBU0NJ
SUxpdGVyYWwoImlkIiksIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOwogCi0gICAgbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlLT50b0pTT05T
dHJpbmcoKSk7CisgICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZCht
ZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblZh
bHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBEZWZhdWx0VmFsdWVUeXBlPgpA
QCAtMjI3LDM3ICsyMjcsMzcgQEAgc3RydWN0IEFzTWV0aG9kQnJpZGdlcyB7CiAgICAgc3RhdGlj
IGJvb2wgYXNWYWx1ZShJbnNwZWN0b3JWYWx1ZSYgdmFsdWUsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4mIG91dHB1dCkgeyByZXR1cm4gdmFsdWUuYXNWYWx1ZShvdXRwdXQpOyB9CiB9OwogCi1pbnQg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCitpbnQgQmFja2VuZERpc3Bh
dGNoZXI6OmdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYg
bmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
PiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8aW50LCBp
bnQsIGludD4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwgQXNN
ZXRob2RCcmlkZ2VzOjphc0ludGVnZXIsICJJbnRlZ2VyIik7CiB9CiAKLWRvdWJsZSBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQorZG91YmxlIEJhY2tlbmREaXNwYXRjaGVy
OjpnZXREb3VibGUoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJv
dG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8ZG91YmxlLCBkb3Vi
bGUsIGRvdWJsZT4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycywgMCwg
QXNNZXRob2RCcmlkZ2VzOjphc0RvdWJsZSwgIk51bWJlciIpOwogfQogCi1TdHJpbmcgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1N0cmluZyBCYWNrZW5kRGlzcGF0Y2hl
cjo6Z2V0U3RyaW5nKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHBy
b3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPFN0cmluZywgU3Ry
aW5nLCBTdHJpbmc+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsICIi
LCBBc01ldGhvZEJyaWRnZXM6OmFzU3RyaW5nLCAiU3RyaW5nIik7CiB9CiAKLWJvb2wgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEJvb2xlYW4oSW5zcGVjdG9yT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCitib29sIEJhY2tlbmREaXNwYXRjaGVy
OjpnZXRCb29sZWFuKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHBy
b3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlPGJvb2wsIGJvb2ws
IGJvb2w+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMsIGZhbHNlLCBB
c01ldGhvZEJyaWRnZXM6OmFzQm9vbGVhbiwgIkJvb2xlYW4iKTsKIH0KIAotUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChJbnNwZWN0
b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QoSW5zcGVjdG9y
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAg
cmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+LCBJbnNwZWN0b3JPYmplY3QqPihvYmplY3QsIG5hbWUsIHZhbHVlRm91
bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6OmFzT2JqZWN0LCAi
T2JqZWN0Iik7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmdldEFycmF5KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4mIHByb3RvY29sRXJyb3JzKQorUmVmUHRyPEluc3BlY3RvckFycmF5PiBCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0QXJyYXkoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYg
cHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UmVmUHRyPElu
c3BlY3RvckFycmF5PiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiwgSW5zcGVjdG9yQXJyYXkqPihv
YmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRyLCBBc01ldGhv
ZEJyaWRnZXM6OmFzQXJyYXksICJBcnJheSIpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShJbnNwZWN0b3JPYmplY3QqIG9i
amVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1JlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKEluc3BlY3Rvck9iamVjdCogb2JqZWN0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9w
ZXJ0eVZhbHVlPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4sIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4s
IEluc3BlY3RvclZhbHVlKj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9y
cywgbnVsbHB0ciwgQXNNZXRob2RCcmlkZ2VzOjphc1ZhbHVlLCAiVmFsdWUiKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaAppbmRleCAwZjBhMjQ1OWExOWNmMWU3ZDQ2Y2I0MmQ1NjdjYmM3ZDAy
ZjRjNmFkLi5iMzAzNzAwYTIwOWJiMjIyNjZiYWU4ZjRlNGRlOGRkMzI2ZmI5NGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5oCkBAIC0zMywyNyArMzMsMjggQEAKIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9u
dGVuZENoYW5uZWw7CisKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNw
ZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPElu
c3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFzcyBTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyPiB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVy
KQorICAgIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBi
YWNrZW5kRGlzcGF0Y2hlcikKICAgICAgICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmRE
aXNwYXRjaGVyKSB7IH0KLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgflN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRj
aGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSA9IDA7CiBwcm90
ZWN0ZWQ6Ci0gICAgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOworICAgIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
IH07CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IHsKK2NsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8
QmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKik7CisgICAg
c3RhdGljIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEZyb250ZW5kQ2hhbm5lbCopOwog
CiAgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ2FsbGJhY2tCYXNlIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FsbGJhY2tCYXNlPiB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsYmFja0Jhc2Uo
UmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICBDYWxs
YmFja0Jhc2UoUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwogCiAgICAgICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZW5kRmFpbHVyZShjb25zdCBFcnJv
clN0cmluZyYpOwpAQCAtNjMsMTMgKzY0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZW5k
SWZBY3RpdmUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBwYXJ0aWFsTWVzc2FnZSwgY29uc3Qg
RXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBS
ZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAg
ICAgIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICAgICAg
aW50IG1faWQ7CiAgICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudDsKICAgICB9OwogCi0gICAgdm9p
ZCBjbGVhckZyb250ZW5kKCkgeyBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7
IH0KLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsgfQorICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9mcm9udGVuZENoYW5u
ZWwgPSBudWxscHRyOyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9m
cm9udGVuZENoYW5uZWw7IH0KIAogICAgIGVudW0gQ29tbW9uRXJyb3JDb2RlIHsKICAgICAgICAg
UGFyc2VFcnJvciA9IDAsCkBAIC04MCw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU2VydmVy
RXJyb3IKICAgICB9OwogCi0gICAgdm9pZCByZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29u
c3QgU3RyaW5nJiBkb21haW4sIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
Kik7CisgICAgdm9pZCByZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBk
b21haW4sIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAgdm9pZCBkaXNwYXRj
aChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2VuZFJlc3BvbnNlKGxvbmcgY2Fs
bElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHJlc3VsdCwgY29uc3QgRXJyb3JTdHJpbmcm
IGludm9jYXRpb25FcnJvcik7CiAgICAgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxv
bmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkgY29uc3Q7CkBAIC05NSwxMCArOTYsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IGdldEFycmF5KEluc3BlY3Rvck9iamVjdCosIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPiYgcHJvdG9jb2xFcnJvcnMpOwogCiBwcml2YXRlOgotICAgIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCkgeyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBGcm9udGVuZENo
YW5uZWwpCisgICAgICAgIDogbV9mcm9udGVuZENoYW5uZWwoRnJvbnRlbmRDaGFubmVsKSB7IH0K
IAotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWw7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyKj4gbV9kaXNwYXRjaGVyczsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRD
aGFubmVsOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hl
cio+IG1fZGlzcGF0Y2hlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oCmluZGV4IGZhMGE4ZWFlODM5ZjVmZTQ3MTc0ZTRjYmJjOWRlNTc0MzJhNmI5
NjEuLmEyYmY2ZjNjMjRmZTlhMzMwZGEzY2ZkYWVhN2IyY2NmNjhjMzgzNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAot
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbCB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKCkgeyB9Cisg
ICAgdmlydHVhbCB+RnJvbnRlbmRDaGFubmVsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA2NTUzZDU2YWNmZWI2NTk2
MzAyYWVmNjNjNjFjYTQ1ZmE5YzI1NWEwLi41YjQzNTA0NDliYTgxNDgzOWRmODg0YTk2NjJhZGRi
OTlmZTE4MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVj
dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCi0g
ICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQorICAgICwgbV9mcm9udGVu
ZENoYW5uZWwobnVsbHB0cikKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6
Y3JlYXRlKCkpCiAgICAgLCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9ucyh0
cnVlKQogICAgICwgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24oZmFsc2UpCkBAIC05NCwyMiArOTQs
MjIgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp+SlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyKCkKIAogdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXI6Omdsb2JhbE9iamVjdERlc3Ryb3llZCgpCiB7Ci0gICAgZGlzY29ubmVjdEZyb250ZW5k
KEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7Cisg
ICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERl
c3Ryb3llZCk7CiAKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlzY29ubmVjdCgpOwog
fQogCi12b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlzQXV0
b21hdGljSW5zcGVjdGlvbikKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGJvb2wg
aXNBdXRvbWF0aWNJbnNwZWN0aW9uKQogewotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcik7Cisg
ICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUKCFtX2JhY2tlbmREaXNw
YXRjaGVyKTsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENoYW5u
ZWw7Ci0gICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5l
bCA9IGZyb250ZW5kQ2hhbm5lbDsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9hZ2VudHMuZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBtX2luc3BlY3RvckFn
ZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhtX2FnZW50cy5leHRyYURvbWFpbnMoKSk7CkBAIC0x
MTksMTYgKzExOSwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAogI2VuZGlmCiB9CiAKLXZv
aWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQo
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVh
c29uKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFt
X2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hZ2VudHMud2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKIAotICAgIG1faW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNsZWFyKCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRy
OworICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKKyAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLmNsZWFyKCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwog
CiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAtMTQwLDggKzE0MCw4
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJv
bnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewotICAgIGlmIChtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKQotICAgICAg
ICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBp
ZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlz
cGF0Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjphcHBlbmRBUElCYWNrdHJhY2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCkBAIC0y
MzEsMTIgKzIzMSwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogewogICAgIFN0cmluZyBk
b21haW5OYW1lID0gYWdlbnQtPmRvbWFpbk5hbWUoKTsKIAotICAgIGlmIChtX2luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5nZXQoKSk7CisgICAgaWYgKG1fZnJvbnRlbmRDaGFubmVsKQorICAgICAgICBhZ2VudC0+ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLCBtX2JhY2tlbmREaXNw
YXRjaGVyLmdldCgpKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZEV4dHJhQWdlbnQoV1RGOjptb3Zl
KGFnZW50KSk7CiAKLSAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYg
KG1fZnJvbnRlbmRDaGFubmVsKQogICAgICAgICBtX2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4
dHJhRG9tYWluKGRvbWFpbk5hbWUpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCA3NjBmNzBmYTI4ZDBkNjVlYzQ3NmQ1MmViM2VkZGY4YjliZmVm
ZmRmLi5lMWEyYzIwM2M5ZjZiNTU1YjIyMjRjNzZhNDA2YzU0ZjJiZTQ0YWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBK
U1ZhbHVlOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xhc3MgQmFja2VuZERpc3BhdGNo
ZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7
CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudDsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIApAQCAtNzEsOCArNzEs
OCBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTQzo6
SlNHbG9iYWxPYmplY3QmKTsKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
KCk7CiAKLSAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pOworICAgIHZvaWQgY29ubmVjdEZy
b250ZW5kKEZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAg
ICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lkIGRp
c3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2xv
YmFsT2JqZWN0RGVzdHJveWVkKCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNw
ZWN0b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdWdtZW50
aW5nQ2xpZW50OyB9IAogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNv
bnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBjbGll
bnQpIG92ZXJyaWRlIHsgbV9hdWdtZW50aW5nQ2xpZW50ID0gY2xpZW50OyB9CiAKLSAgICB2aXJ0
dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0KKyAgICB2aXJ0dWFs
IEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9mcm9udGVuZENoYW5uZWw7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2Vu
dChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgb3ZlcnJpZGU7CiAjZW5kaWYK
IApAQCAtMTEwLDkgKzExMCw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQWdlbnQqIG1faW5z
cGVjdG9yQWdlbnQ7CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2NvbnNvbGVBZ2VudDsK
ICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7Ci0gICAgSW5zcGVj
dG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBBZ2VudFJlZ2lz
dHJ5IG1fYWdlbnRzOworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7Cisg
ICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIFJl
ZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAgYm9vbCBtX2luY2x1
ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9uczsKICAgICBib29sIG1faXNBdXRvbWF0aWNJ
bnNwZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGU2MmVjMmVjMDRiMGE4YjNiNmFjYWYy
MTBkOTg4Njg3ZWZlNDE4YTAuLmJmMjQxYmE3NzgyZDljMDljYTZkYWQzNjA5MmI4MjFhNzJhODM4
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBJbnNwZWN0b3JBZ2Vu
dDo6fkluc3BlY3RvckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9u
dGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5o
CmluZGV4IDM4YzllZWYyNzczMWE2OGRmMDA4OTVhNzVkNzVlNmY1ODViMWQzNGMuLmRmZWUyNWY2
NjI5Yjk5YjRjZmY4NWUyZjliODY5MjQzOTc3MDdmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaApAQCAtMzgs
MjIgKzM4LDIyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCitjbGFzcyBCYWNrZW5kRGlz
cGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckVudmlyb25tZW50OwotY2xhc3MgSW5zcGVjdG9ySW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVu
ZERpc3BhdGNoZXJzOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyczsKIGNsYXNz
IEluc3BlY3Rvck9iamVjdDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rv
ckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvckluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBZ2VudCBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
QWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluc3Bl
Y3RvckFnZW50KEluc3BlY3RvckVudmlyb25tZW50Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEluc3BlY3RvckVudmlyb25tZW50JiBtX2Vudmlyb25tZW50OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVy
OworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcGVuZGluZ0V2YWx1YXRlVGVz
dENvbW1hbmRzOwogICAgIHN0ZDo6cGFpcjxSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+PiBtX3BlbmRpbmdJbnNwZWN0RGF0YTsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDA1MDUxMTkzMTdlM2EyMTRkYjg4OTFlOTkyN2I3NmQx
NzQyNTdhZmUuLjJmZjllMmY4OGM5MDk4Zjk3MWFhYzkwYmFmODhhZWUwZDU4MzFlOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6fkluc3BlY3RvckNvbnNvbGVBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ29uc29sZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250
ZW5kQ2hhbm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xl
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFu
bmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpDb25zb2xlQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OndpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggNzI2MmMwNzVhZDIwMjEyMWI1M2Mw
YjViNjM4MmFiZjhhYzE2ZmYxZC4uMmZhODExYWU3ZTYyZjBjNDk3ZDA4NzcxNjE0YWMxZTRmZjk0
MzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTQ4LDE1ICs0OCwxNSBAQCBj
bGFzcyBTY3JpcHRBcmd1bWVudHM7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiB0eXBlZGVmIFN0
cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQ29u
c29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3RvckNv
bnNvbGVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
SW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3Rvcjo6Q29uc29sZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29uc29sZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQ29uc29sZUFnZW50KCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKQEAgLTgxLDggKzgxLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPik7CiAKICAgICBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlz
cGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
ICAgICBDb25zb2xlTWVzc2FnZSogbV9wcmV2aW91c01lc3NhZ2U7CiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4+IG1fY29uc29sZU1lc3NhZ2VzOwogICAgIGludCBt
X2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCAzYWU3NjA5Y2FlMjBiN2FmMGFmMzYzNzM2OWI3ZjQyYzc0ODJmZDIwLi42ZmVi
OGEyNDhlNjYzOWRjNjhkYzZjZWRiNjVlZjcyNzFlNzliMmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNjgsMTggKzY4LDE4IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6On5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5k
RGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JE
ZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbiByZWFzb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFy
KCk7CiAKLSAgICBib29sIHNraXBSZWNvbXBpbGUgPSByZWFzb24gPT0gSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkOworICAgIGJvb2wgc2tpcFJlY29t
cGlsZSA9IHJlYXNvbiA9PSBEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95
ZWQ7CiAgICAgZGlzYWJsZShza2lwUmVjb21waWxlKTsKIH0KIApAQCAtMTgxLDcgKzE4MSw3IEBA
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhj
ZXB0aW9uUGF1c2VSZWFzb24oY29uc3QKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFu
ZGxlQ29uc29sZUFzc2VydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHNjcmlw
dERlYnVnU2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkFzc2VydCwgYnVpbGRBc3NlcnRQYXVz
ZVJlYXNvbihtZXNzYWdlKSk7CisgICAgICAgIGJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkFzc2VydCwgYnVpbGRBc3NlcnRQYXVzZVJl
YXNvbihtZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9i
amVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgYWN0aW9ucywgYm9vbCBpc1JlZ2V4LCBib29sIGF1dG9Db250aW51ZSkKQEAg
LTQ3MSw3ICs0NzEsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9u
RGV0YWlscyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgaW5qZWN0ZWRTY3Jp
cHQuZ2V0RnVuY3Rpb25EZXRhaWxzKGVycm9yU3RyaW5nLCBmdW5jdGlvbklkLCAmZGV0YWlscyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0
YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFr
UmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpCit2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYmIGRhdGEpCiB7CiAgICAgaWYgKG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVk
KQogICAgICAgICByZXR1cm47CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpCiAKIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6cGF1c2UoRXJyb3JTdHJpbmcmKQogewotICAgIHNjaGVkdWxlUGF1c2VP
bk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6UGF1c2VPbk5leHRTdGF0ZW1lbnQsIG51bGxwdHIpOworICAgIHNjaGVkdWxlUGF1c2VPbk5l
eHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpQYXVzZU9uTmV4dFN0YXRlbWVudCwgbnVsbHB0cik7CiAKICAgICBtX2phdmFTY3JpcHRQYXVz
ZVNjaGVkdWxlZCA9IHRydWU7CiB9CkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyopCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRC
eUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7CiAgICAgaWYgKHNjcmlwdERlYnVn
U2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQ
YXVzZU9uRXhjZXB0aW9ucykKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BWaW9sYXRp
b25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CisgICAgICAgIGJyZWFrUHJvZ3JhbShJbnNw
ZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwg
YnVpbGRDU1BWaW9sYXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CiB9CiAKIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQpCkBAIC02NjQsMjIgKzY2NCwyMiBAQCB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgRGVwcmVjYQogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKIAog
ICAgIC8vIElmIGEgaGlnaCBsZXZlbCBwYXVzZSBwYXVzZSByZWFzb24gaXMgbm90IGFscmVhZHkg
c2V0LCB0cnkgdG8gaW5mZXIgYSByZWFzb24gZnJvbSB0aGUgZGVidWdnZXIuCi0gICAgaWYgKG1f
YnJlYWtSZWFzb24gPT0gSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6T3RoZXIpIHsKKyAgICBpZiAobV9icmVha1JlYXNvbiA9PSBJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok90aGVyKSB7CiAgICAgICAgIHN3aXRjaCAoc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5yZWFzb25Gb3JQYXVzZSgpKSB7CiAgICAgICAgIGNhc2UgSlNDOjpE
ZWJ1Z2dlcjo6UGF1c2VkRm9yQnJlYWtwb2ludDogewogICAgICAgICAgICAgSlNDOjpCcmVha3Bv
aW50SUQgZGVidWdnZXJCcmVha3BvaW50SWQgPSBzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNpbmdC
cmVha3BvaW50SUQoKTsKICAgICAgICAgICAgIGlmIChkZWJ1Z2dlckJyZWFrcG9pbnRJZCAhPSBt
X2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCkgewotICAgICAgICAgICAgICAgIG1fYnJl
YWtSZWFzb24gPSBJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpC
cmVha3BvaW50OworICAgICAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3I6OkRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQ7CiAgICAgICAgICAg
ICAgICAgbV9icmVha0F1eERhdGEgPSBidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihkZWJ1Z2dl
ckJyZWFrcG9pbnRJZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEpTQzo6RGVidWdnZXI6OlBhdXNlZEZvckRlYnVnZ2VyU3RhdGVt
ZW50OgotICAgICAgICAgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkRlYnVnZ2VyU3RhdGVtZW50OworICAgICAgICAgICAgbV9i
cmVha1JlYXNvbiA9IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6RGVidWdnZXJTdGF0ZW1lbnQ7CiAgICAgICAgICAgICBtX2JyZWFrQXV4RGF0YSA9IG51bGxw
dHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBKU0M6OkRlYnVnZ2VyOjpQYXVz
ZWRGb3JFeGNlcHRpb246Ci0gICAgICAgICAgICBtX2JyZWFrUmVhc29uID0gSW5zcGVjdG9yRGVi
dWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXhjZXB0aW9uOworICAgICAgICAgICAg
bV9icmVha1JlYXNvbiA9IEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6RXhjZXB0aW9uOwogICAgICAgICAgICAgbV9icmVha0F1eERhdGEgPSBidWlsZEV4Y2Vw
dGlvblBhdXNlUmVhc29uKGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUsIGluamVjdGVkU2NyaXB0KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEpTQzo6RGVidWdnZXI6OlBhdXNlZEF0
U3RhdGVtZW50OgpAQCAtNzU1LDcgKzc1NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkQ29udGludWUoKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXN1bWVkKCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKEluc3BlY3RvckRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24sIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiYgZGF0YSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQ
cm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVh
a1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKQogewogICAgIG1fYnJlYWtS
ZWFzb24gPSBicmVha1JlYXNvbjsKICAgICBtX2JyZWFrQXV4RGF0YSA9IFdURjo6bW92ZShkYXRh
KTsKQEAgLTgxNCw3ICs4MTQsNyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFzc2Vy
dFBhdXNlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y2xlYXJCcmVha0RldGFpbHMoKQogewotICAgIG1fYnJlYWtSZWFzb24gPSBJbnNw
ZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpPdGhlcjsKKyAgICBtX2Jy
ZWFrUmVhc29uID0gSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpPdGhlcjsKICAgICBtX2JyZWFrQXV4RGF0YSA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaAppbmRleCA5YmUzMjMzMTUxMDk0NTU4NzhiMDFjMzRiMDYxOGM1NjM4
MTQ0NTJjLi4xNDlhOThlN2ZiYjFiYWYwNzYyZmQ4OTc3YWE5MjQwMjBkY2ZhMzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIEluc3BlY3Rv
clZhbHVlOwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBw
dWJsaWMgSW5zcGVjdG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JBZ2VudEJhc2UsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9y
OjpEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwq
LCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtOTEsOSArOTEsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBoYW5kbGVDb25zb2xlQXNzZXJ0KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiAKLSAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVj
dG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKTsKKyAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRT
dGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJy
ZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpOwogICAgIHZvaWQgY2Fu
Y2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKLSAgICB2b2lkIGJyZWFrUHJvZ3JhbShJbnNwZWN0
b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3BlY3Rv
cjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKTsKICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2Nr
ZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogCiAgICAgY2xhc3MgTGlzdGVu
ZXIgewpAQCAtMTU1LDggKzE1NSw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPEpT
Qzo6QnJlYWtwb2ludElELCBTdHJpbmc+IERlYnVnU2VydmVyQnJlYWtwb2ludElEVG9CcmVha3Bv
aW50SWRlbnRpZmllcjsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6RGVidWdnZXJCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBMaXN0ZW5lciogbV9saXN0ZW5lciB7
bnVsbHB0cn07CiAgICAgSlNDOjpFeGVjU3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGUge251bGxw
dHJ9OwogICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKQEAg
LTE2NSw3ICsxNjUsNyBAQCBwcml2YXRlOgogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVh
a3BvaW50TWFwIG1famF2YVNjcmlwdEJyZWFrcG9pbnRzOwogICAgIERlYnVnU2VydmVyQnJlYWtw
b2ludElEVG9CcmVha3BvaW50SWRlbnRpZmllciBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZp
ZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyOwogICAgIEpTQzo6QnJlYWtwb2ludElE
IG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEOwotICAgIEluc3BlY3RvckRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gbV9icmVha1JlYXNvbjsKKyAgICBJbnNwZWN0b3I6
OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gbV9icmVha1JlYXNvbjsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKICAgICBib29sIG1fZW5hYmxl
ZCB7ZmFsc2V9OwogICAgIGJvb2wgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQge2ZhbHNlfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDljOTcyNWE1ZmIwODc3ODEzMzhm
M2VlNTdiZDE1M2RkZmE1NDM2MTkuLmY0NTM5MzVlYjA4N2VkNjMyNDBhMGQ5ODM3OTIzMmJlOTQ4
YThiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMjk2LDkgKzI5Niw5
IEBAIHN0YXRpYyB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zRm9yVHlwZVByb2ZpbGluZyhW
TSYgdm0sIGJvb2wgc2hvdWxkRW5hYmxlVHlwCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7Ci0gICAgaWYg
KHJlYXNvbiAhPSBJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0
cm95ZWQgJiYgbV9pc1R5cGVQcm9maWxpbmdFbmFibGVkKQorICAgIGlmIChyZWFzb24gIT0gRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkICYmIG1faXNUeXBlUHJvZmls
aW5nRW5hYmxlZCkKICAgICAgICAgc2V0VHlwZVByb2ZpbGVyRW5hYmxlZFN0YXRlKGZhbHNlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCAwN2U0ZmVjZjk3MGNkOTcwMmE0
YmY5ZWI1MDNhNmVmOTg2NmQyNWU0Li41N2QwYmMyNTA1NmU4ZWY0ZDA4MTlmYjc1MGZjMWUzZjIz
YzI0Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNTAsMTIgKzUwLDEyIEBA
IGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9y
UnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
clJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZB
VEUgSW5zcGVjdG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUnVudGltZUFnZW50KTsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JSdW50aW1lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IGZhbHNlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZGM0NGNjN2ZmNjEy
MTFiNjc3MjZiMzBjYmI0ZjRhMGNiMzg4MTdmMS4uZTc3M2U3MTAwYjQwYWUxZTNlYTk0MjJlOGUx
MzlhMDhkMTI5OGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cApAQCAtNDAsMTMgKzQwLDEzIEBAIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluCiB7CiB9CiAKLXZv
aWQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBKU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCog
ZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclJ1
bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVu
ZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRpbWVC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAot
dm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEpTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0
UmVhc29uIHJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmgKaW5kZXggYzY1MDY4ZTY4OWVjNDUzYTNjMjU0M2E2ZjhkNDg1N2VlMDhjZjc5
Ny4uZjg3MGNkNzQwZThjOGZiODAzNGNiNWQzYTUxNTA0ZWZhY2MyN2FhZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCB7CiBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiwgSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCBKU0M6OlZNJiBnbG9iYWxWTSgpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwg
Y29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOwpAQCAtNTAsOCArNTAsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZSB7IH0K
IAogcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yUnVudGltZUZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3RvclJ1
bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9i
YWxPYmplY3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFn
ZW50LmgKaW5kZXggOGY3YjQ3MDQxYWQ4MjA4NmVkNGJmYWVjNzIwYzQzMmE2ODRkZTMxNS4uODky
NjI5YWJmNjY2ZGRlZjk0YmM2Zjg2MWZmMTY2ZmYxMmY2Y2VjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFi
bGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaApAQCAtNDUsMTQgKzQ1LDE0IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
bnVsbHB0cik7CiAgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURpc3Bh
dGNoZXIobV9hbHRlcm5hdGVEaXNwYXRjaGVyLmdldCgpKTsKICAgICAgICAgbV9hbHRlcm5hdGVE
aXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcik7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICAgICAgbV9hbHRlcm5h
dGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0Y2hlcihudWxscHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDhhOGU3YWQx
MDJjNDRkNTI5OGVmYWJkNTZjY2VkMDI5MzJiODJlMWUuLjI0NTZhYzU5MTlkOGEwZDU2NTlkNmY3
MWNjMDc1ODhmNmM3NzY4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQqIGF1Z21lbnRhYmxlSW5zcGVj
dG9yQ29udHJvbGxlckNsaWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlckNsaWVudCopID0gMDsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgPSAwOwog
CiAgICAgYm9vbCBjb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhIWZyb250ZW5kQ2hhbm5lbCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKaW5kZXggZGQ2YWE0NzhjOGQ0
OGUyNzk2MzRjYzAwZWMwNWM5YmI1MjU1N2I4My4uNzJmYjBkZDNkMzdjMWIxZmIyZTkyMDdjOWYy
YzFkM2IyNGIzMjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAt
MzQsNyArMzQsOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsOworY2xhc3MgRnJvbnRlbmRDaGFubmVsOworCiBzdHJ1Y3QgUmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUluZm87CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUgewpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gV2ViCiAgICAg
dmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29ubmVjdChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGlj
SW5zcGVjdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEZyb250ZW5kQ2hhbm5l
bCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2Nvbm5lY3QoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1v
dGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5kaWNhdGluZyhib29sKSB7IH0gLy8gRGVmYXVsdCBpcyB0byBkbyBub3RoaW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKaW5kZXgg
NTQyNTExMTRlNjNhYzU0YTgzNTQzODY2YWRiNTQyMzdlYzk0MWJlYi4uMDYwNjI3ZmJkNDUyZTQ3
N2IyMDYyMDViYjQ2ZWFkM2RiODQxOWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAK
IHR5cGVkZWYgVmVjdG9yPFJlbW90ZUluc3BlY3RvckJsb2NrPiBSZW1vdGVJbnNwZWN0b3JRdWV1
ZTsKIAotY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24+LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKK2NsYXNzIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uPiwgcHVibGljIEZyb250
ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24oUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSosIE5TU3RyaW5nICpjb25uZWN0aW9uSWRl
bnRpZmllciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
OjpEZWJ1Z2dhYmxlVHlwZSk7CiAgICAgdmlydHVhbCB+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CmluZGV4IDAyMTE1
YWUxYmZmMzM2MGQyMjY0ZjBhNDAxZGVjYjE0ZjhlYzQ1NWMuLmRmOTBiZTkyZDViNGY1MzRhZWYw
YzNlMDZmZWNhZjUzMTk1ZDYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQpA
QCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIENwcEdlbmVyYXRvcjoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gJyVzKicgJSBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBFbnVt
VHlwZSk6CiAgICAgICAgICAgICBpZiBfdHlwZS5pc19hbm9ueW1vdXM6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICdJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JXMqJyAlIChf
dHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0KHBhcmFtZXRlci5wYXJhbWV0
ZXJfbmFtZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuICclc0JhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6JXMqJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1lLCB1Y2ZpcnN0KHBh
cmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgIHJldHVybiAnSW5zcGVjdG9yOjpQcm90b2NvbDo6JXM6OiVzKicgJSAoX3R5cGUudHlwZV9k
b21haW4oKS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkKIApAQCAtMjcwLDcgKzI3MCw3
IEBAIGNsYXNzIENwcEdlbmVyYXRvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gY3BwX25hbWUK
ICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUpOgogICAgICAgICAgICAgaWYg
X3R5cGUuaXNfYW5vbnltb3VzOgotICAgICAgICAgICAgICAgIHJldHVybiAnSW5zcGVjdG9yJXNC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiVzJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFp
bl9uYW1lLCB1Y2ZpcnN0KHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuICclc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JXMnICUgKF90eXBlLnR5cGVf
ZG9tYWluKCkuZG9tYWluX25hbWUsIHVjZmlyc3QocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkK
ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3I6OlBy
b3RvY29sOjolczo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIF90eXBl
LnJhd19uYW1lKCkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1w
bGF0ZXMucHkKaW5kZXggMDAyODZhYThlM2VkMjY4NDMwMGY4ZWE3YzYwYzY0Mjk3ZmE5ZGRiZi4u
MDVmMzUzMDk3NGUwNTlkN2Y5YzY0ZjlmZTg5NjBlNDUzMmNhZmY4ZSAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRv
cl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTY2LDEyICs2NiwxMiBA
QCAke2luY2x1ZGVzfQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRl
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNr
ZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6
Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2
YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNo
ZXI7CiB9OwogIiIiKQogCkBAIC04Myw2MSArODMsNjEgQEAgcHJpdmF0ZToKICNlbmRpZiAvLyAh
ZGVmaW5lZCgke2hlYWRlckd1YXJkU3RyaW5nfSkiIiIpCiAKICAgICBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlckhlYWRlckRvbWFpbkhhbmRsZXJJbnRlcmZhY2VEZWNsYXJhdGlvbiA9ICgKLSAg
ICAiIiJjbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworICAgICIi
ImNsYXNzIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJu
YXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmly
dHVhbCB+QWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAke2Nv
bW1hbmREZWNsYXJhdGlvbnN9CiB9OyIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySGVhZGVy
RG9tYWluSGFuZGxlckRlY2xhcmF0aW9uID0gKAotICAgICIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNy
b30gSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAg
IiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKIHB1YmxpYzoKICR7Y29tbWFuZERlY2xhcmF0aW9uc30KIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KCk7CisgICAgdmlydHVhbCB+JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigp
OwogfTsiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckRvbWFpbkRpc3BhdGNoZXJE
ZWNsYXJhdGlvbiA9ICgKLSAgICAiIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99IEluc3BlY3RvciR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Oklu
c3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKKyAgICAiIiIke2NsYXNzQW5k
RXhwb3J0TWFjcm99ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1Ymxp
YyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMgUmVmPCR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgJHtkb21haW5OYW1l
fUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChs
b25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYg
bWVzc2FnZSkgb3ZlcnJpZGU7CiAke2NvbW1hbmREZWNsYXJhdGlvbnN9CiBwcml2YXRlOgotICAg
IEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVy
KEJhY2tlbmREaXNwYXRjaGVyJiwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciopOworICAgICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0g
ICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3RvciR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0
ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogYWx0
ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNw
YXRjaGVyOyB9CiBwcml2YXRlOgotICAgIEFsdGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworICAgIEFsdGVybmF0ZSR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwogI2Vu
ZGlmCiB9OyIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyQXN5bmNDb21tYW5kRGVj
bGFyYXRpb24gPSAoCi0gICAgIiIiICAgICR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtjYWxsYmFj
a05hbWV9IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNh
bGxiYWNrQmFzZSB7CisgICAgIiIiICAgICR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtjYWxsYmFj
a05hbWV9IDogcHVibGljIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAgIHB1
YmxpYzoKLSAgICAgICAgJHtjYWxsYmFja05hbWV9KFJlZjxJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICAke2NhbGxiYWNrTmFtZX0oUmVm
PEJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwogICAgICAgICB2b2lkIHNlbmRTdWNjZXNz
KCR7b3V0UGFyYW1ldGVyc30pOwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkICR7Y29tbWFuZE5h
bWV9KCR7aW5QYXJhbWV0ZXJzfSkgPSAwOyIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySW1w
bGVtZW50YXRpb25TbWFsbFN3aXRjaCA9ICgKLSAgICAiIiJ2b2lkIEluc3BlY3RvciR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCisgICAgIiIidm9pZCAk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25z
dCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewotICAg
IFJlZjxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRo
aXMpOwogCiAke2Rpc3BhdGNoQ2FzZXN9CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXFwnJywgIiR7ZG9tYWluTmFtZX0i
LCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6
TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2RvbWFpbk5hbWV9IiwgJy4nLCBt
ZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkxhcmdlU3dpdGNoID0gKAotIiIidm9pZCBJbnNwZWN0b3Ike2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJp
bmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQorIiIidm9pZCAke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewotICAgIFJl
ZjxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMp
OwogCi0gICAgdHlwZWRlZiB2b2lkIChJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXI6OipDYWxsSGFuZGxlcikobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB0eXBlZGVmIHZvaWQgKCR7ZG9tYWluTmFtZX1CYWNr
ZW5kRGlzcGF0Y2hlcjo6KkNhbGxIYW5kbGVyKShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiBtZXNzYWdlKTsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxl
cj4gRGlzcGF0Y2hNYXA7CiAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKERpc3Bh
dGNoTWFwLCBkaXNwYXRjaE1hcCwgKCkpOwogICAgIGlmIChkaXNwYXRjaE1hcC5pc0VtcHR5KCkp
IHsKQEAgLTE1NCw3ICsxNTQsNyBAQCAke2Rpc3BhdGNoQ2FzZXN9CiAKICAgICBIYXNoTWFwPFN0
cmluZywgQ2FsbEhhbmRsZXI+OjppdGVyYXRvciBpdCA9IGRpc3BhdGNoTWFwLmZpbmQobWV0aG9k
KTsKICAgICBpZiAoaXQgPT0gZGlzcGF0Y2hNYXAuZW5kKCkpIHsKLSAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2RvbWFpbk5h
bWV9IiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNo
ZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcXCcnLCAiJHtkb21haW5OYW1lfSIsICcu
JywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xNjIsMTMgKzE2MiwxMyBAQCAke2Rpc3BhdGNoQ2FzZXN9CiB9IiIiKQogCiAgICAgQmFj
a2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkRvbWFpbkNvbnN0cnVjdG9yID0gKAotICAgICIi
IlJlZjxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+IEluc3BlY3RvciR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgIiIiUmVmPCR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcj4gJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0
b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2Vu
dCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3RvciR7ZG9tYWlu
TmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNw
YXRjaGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5z
cGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAg
OiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hl
cikKKyR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6JHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgJHtkb21haW5O
YW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQoYWdlbnQp
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgLCBtX2Fs
dGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTE4NCwxNSArMTg0LDE1IEBAIEluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyCiAke2luUGFyYW1ldGVyRGVjbGFyYXRpb25zfQogICAgIGlmIChwcm90
b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0
cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgXCclc1wnIGNhbid0IGJlIHBy
b2Nlc3NlZCIsICIke2RvbWFpbk5hbWV9LiR7Y29tbWFuZE5hbWV9Iik7Ci0gICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHBy
b3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3Rv
Y29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9y
TWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uQXN5bmNDb21t
YW5kID0gKAotIiIiSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6JHtjYWxsYmFja05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUmVmPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlz
cGF0Y2hlciksIGlkKSB7IH0KKyIiIiR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFja05hbWV9KFJlZjxCYWNrZW5kRGlzcGF0Y2hl
cj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQogCi12b2lkIElu
c3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiR7Y2FsbGJhY2tO
YW1lfTo6c2VuZFN1Y2Nlc3MoJHtmb3JtYWxQYXJhbWV0ZXJzfSkKK3ZvaWQgJHtkb21haW5OYW1l
fUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFja05hbWV9OjpzZW5kU3VjY2Vzcygk
e2Zvcm1hbFBhcmFtZXRlcnN9KQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNz
YWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICR7b3V0UGFyYW1ldGVyQXNzaWdubWVu
dHN9CkBAIC0yMDAsMjYgKzIwMCwyNiBAQCAke291dFBhcmFtZXRlckFzc2lnbm1lbnRzfQogfSIi
IikKIAogICAgIEZyb250ZW5kRGlzcGF0Y2hlckRvbWFpbkRpc3BhdGNoZXJEZWNsYXJhdGlvbiA9
ICgKLSIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gSW5zcGVjdG9yJHtkb21haW5OYW1lfUZyb250
ZW5kRGlzcGF0Y2hlciB7CisiIiIke2NsYXNzQW5kRXhwb3J0TWFjcm99ICR7ZG9tYWluTmFtZX1G
cm9udGVuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIEluc3BlY3RvciR7ZG9tYWluTmFtZX1G
cm9udGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKSB7IH0KKyAgICAke2RvbWFpbk5hbWV9RnJvbnRlbmREaXNwYXRjaGVyKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5k
Q2hhbm5lbCkgeyB9CiAke2V2ZW50RGVjbGFyYXRpb25zfQogcHJpdmF0ZToKLSAgICBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworICAgIEZyb250
ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiB9OyIiIikKIAogICAgIFByb3RvY29sT2Jq
ZWN0QnVpbGRlckRlY2xhcmF0aW9uUHJlbHVkZSA9ICgKICIiIiAgICB0ZW1wbGF0ZTxpbnQgU1RB
VEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxk
ZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAg
ICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8Lyoke29iamVjdFR5cGV9Ki9JbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qJHtvYmpl
Y3RUeXBlfSovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1
bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNT
RVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3Rh
dGUpOwpAQCAtMjMyLDkgKzIzMiw5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZjwke29iamVjdFR5
cGV9PiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RB
VEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZigke29iamVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChzaXplb2YoJHtvYmplY3RUeXBlfSkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5v
dF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPCR7b2JqZWN0VHlwZX0+
Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTI0NSwxOSArMjQ1LDE5IEBAICR7
Y29uc3RydWN0b3JFeGFtcGxlfQogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRz
U2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+
KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBC
dWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9IiIi
KQogCiAgICAgUHJvdG9jb2xPYmplY3RSdW50aW1lQ2FzdCA9ICgKLSIiIlJlZlB0cjwke29iamVj
dFR5cGV9PiBCaW5kaW5nVHJhaXRzPCR7b2JqZWN0VHlwZX0+OjpydW50aW1lQ2FzdChSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4mJiB2YWx1ZSkKKyIiIlJlZlB0cjwke29iamVjdFR5
cGV9PiBCaW5kaW5nVHJhaXRzPCR7b2JqZWN0VHlwZX0+OjpydW50aW1lQ2FzdChSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+JiYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQ7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0OwogICAg
IGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChyZXN1bHQpOwogICAgIEFTU0VS
VF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIEJpbmRpbmdUcmFpdHM8JHtvYmplY3RUeXBlfT46OmFzc2VydFZhbHVlSGFzRXhw
ZWN0ZWRUeXBlKHJlc3VsdC5nZXQoKSk7CiAjZW5kaWYgIC8vICFBU1NFUlRfRElTQUJMRUQKLSAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoJHtvYmplY3RUeXBlfSkgPT0gc2l6ZW9mKEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9ibGVtKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8JHtvYmplY3RUeXBlfSo+KHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0QmFzZSo+KHJlc3VsdC5nZXQoKSkpOworICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
Zigke29iamVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2Fz
dF9wcm9ibGVtKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JHtvYmplY3RUeXBlfSo+KHN0YXRp
Y19jYXN0PEluc3BlY3Rvck9iamVjdEJhc2UqPihyZXN1bHQuZ2V0KCkpKTsKIH0KICIiIikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9oZWFkZXIucHkKaW5kZXggYTI0MWM1MzA2YTQyMTI3MzM1M2IwMDVjODUwNmY4
NDhmNTkyOTQzOC4uMjNlN2Q5OTczYzZmMjA3ZGI5NDI4MzUzZjc3ZTQwMmMzZGRkMTcxOSAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tl
bmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKQEAgLTgyLDcgKzgyLDcgQEAgY2xhc3MgQ3BwQmFja2Vu
ZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMgPSBb
XQogICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUyknKQogICAgICAgICBmb3IgZG9tYWluIGluIGRvbWFpbnM6Ci0gICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sICdj
bGFzcyBBbHRlcm5hdGVJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRjaGVyOycgJSBkb21haW4uZG9t
YWluX25hbWUpKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYud3JhcF93aXRoX2d1YXJk
X2Zvcl9kb21haW4oZG9tYWluLCAnY2xhc3MgQWx0ZXJuYXRlJXNCYWNrZW5kRGlzcGF0Y2hlcjsn
ICUgZG9tYWluLmRvbWFpbl9uYW1lKSkKICAgICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpJykKICAgICAgICAgcmV0dXJu
ICdcbicuam9pbihsaW5lcykKIApAQCAtMTk3LDQgKzE5Nyw0IEBAIGNsYXNzIENwcEJhY2tlbmRE
aXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIHJldHVybiBzZWxm
LndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgVGVtcGxhdGUoQ3BwVGVtcGxhdGVz
LkJhY2tlbmREaXNwYXRjaGVySGVhZGVyRG9tYWluRGlzcGF0Y2hlckRlY2xhcmF0aW9uKS5zdWJz
dGl0dXRlKE5vbmUsICoqaGFuZGxlcl9hcmdzKSkKIAogICAgIGRlZiBfZ2VuZXJhdGVfZGlzcGF0
Y2hlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZChzZWxmLCBjb21tYW5kKToKLSAgICAgICAgcmV0
dXJuICIgICAgdm9pZCAlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpOyIgJSBjb21tYW5kLmNvbW1hbmRfbmFtZQorICAgICAgICByZXR1cm4g
IiAgICB2b2lkICVzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2Up
OyIgJSBjb21tYW5kLmNvbW1hbmRfbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50
YXRpb24ucHkKaW5kZXggNTgyZGU0YjRhNGNhZGJhY2FiZmY5MmQwZmMzMWM5MGU5MzE2NDFhMS4u
ZGNkNjY0YTcwNjk3ZjY1ZDgyOGY4MTM3ZTJmOGE1NWYyZTUyNDNjNCAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIENwcEJh
Y2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAg
ICAgZGVzdHJ1Y3Rvcl9hcmdzID0gewogICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4u
ZG9tYWluX25hbWUKICAgICAgICAgfQotICAgICAgICBkZXN0cnVjdG9yID0gJ0luc3BlY3RvciUo
ZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yJShkb21haW5O
YW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0nICUgZGVzdHJ1Y3Rvcl9hcmdzCisg
ICAgICAgIGRlc3RydWN0b3IgPSAnJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6On4lKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfScgJSBkZXN0
cnVjdG9yX2FyZ3MKICAgICAgICAgcmV0dXJuIHNlbGYud3JhcF93aXRoX2d1YXJkX2Zvcl9kb21h
aW4oZG9tYWluLCBkZXN0cnVjdG9yKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uc19mb3JfZG9tYWluKHNlbGYsIGRvbWFpbik6CkBAIC0xMjMsNyArMTIzLDcg
QEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5l
cmF0b3IpOgogICAgICAgICAgICAgICAgICdkb21haW5OYW1lJzogZG9tYWluLmRvbWFpbl9uYW1l
LAogICAgICAgICAgICAgICAgICdjb21tYW5kTmFtZSc6IGNvbW1hbmQuY29tbWFuZF9uYW1lCiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlcy5hcHBlbmQoJyAgICAgICAgICAgIHsgIiUo
Y29tbWFuZE5hbWUpcyIsICZJbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVy
OjolKGNvbW1hbmROYW1lKXMgfSwnICUgYXJncykKKyAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgn
ICAgICAgICAgICAgeyAiJShjb21tYW5kTmFtZSlzIiwgJiUoZG9tYWluTmFtZSlzQmFja2VuZERp
c3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyB9LCcgJSBhcmdzKQogCiAgICAgICAgIHN3aXRjaF9h
cmdzID0gewogICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCkBA
IC0xOTIsNyArMTkyLDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgICdzdWNjZXNzT3V0UGFyYW0n
OiBvdXRfc3VjY2Vzc19hcmd1bWVudAogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpbl9w
YXJhbWV0ZXJfZGVjbGFyYXRpb25zLmFwcGVuZCgnICAgICUocGFyYW1ldGVyVHlwZSlzIGluXyUo
cGFyYW1ldGVyTmFtZSlzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OiUoa2V5ZWRHZXRN
ZXRob2QpcyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJO
YW1lKXMiKSwgJShzdWNjZXNzT3V0UGFyYW0pcywgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOycgJSBw
YXJhbV9hcmdzKQorICAgICAgICAgICAgaW5fcGFyYW1ldGVyX2RlY2xhcmF0aW9ucy5hcHBlbmQo
JyAgICAlKHBhcmFtZXRlclR5cGUpcyBpbl8lKHBhcmFtZXRlck5hbWUpcyA9IEJhY2tlbmREaXNw
YXRjaGVyOjolKGtleWVkR2V0TWV0aG9kKXMocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxp
dGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiksICUoc3VjY2Vzc091dFBhcmFtKXMsIHByb3RvY29s
RXJyb3JzLmdldCgpKTsnICUgcGFyYW1fYXJncykKIAogICAgICAgICAgICAgaWYgcGFyYW1ldGVy
LmlzX29wdGlvbmFsOgogICAgICAgICAgICAgICAgIG9wdGlvbmFsX2luX3BhcmFtZXRlcl9zdHJp
bmcgPSAnJShwYXJhbWV0ZXJOYW1lKXNfdmFsdWVGb3VuZCA/ICUocGFyYW1ldGVyRXhwcmVzc2lv
bilzIDogbnVsbHB0cicgJSBwYXJhbV9hcmdzCkBAIC0yMDksNyArMjA5LDcgQEAgY2xhc3MgQ3Bw
QmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVu
ZCgnICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOycpCi0gICAgICAgICAgICBvdXRfcGFyYW1l
dGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7JykKKyAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJf
YXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFBy
b3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJv
cik7JykKICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAg
ICAgIHJldHVybjsnKQogICAgICAgICAgICAgbWV0aG9kX3BhcmFtZXRlcnMuYXBwZW5kKCdjYWxs
YmFjay5jb3B5UmVmKCknKQogCkBAIC0yNTEsOSArMjUxLDkgQEAgY2xhc3MgQ3BwQmFja2VuZERp
c3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogCiAgICAgICAgIGxp
bmVzID0gW10KICAgICAgICAgaWYgbGVuKGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzKSA9PSAwOgot
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkIEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFj
a2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0JiknICUgY29tbWFuZF9hcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd2
b2lkICUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyhsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiknICUgY29tbWFuZF9hcmdzKQogICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd2b2lkIEluc3BlY3RvciUoZG9tYWlu
TmFtZSlzQmFja2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5hbWUpcyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKScgJSBjb21tYW5kX2FyZ3MpCisgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShj
b21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2Up
JyAlIGNvbW1hbmRfYXJncykKICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKIAogICAgICAgICBp
ZiBsZW4oY29tbWFuZC5jYWxsX3BhcmFtZXRlcnMpID4gMDoKQEAgLTI3MCw3ICsyNzAsNyBAQCBj
bGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRv
cik6CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEVycm9yU3RyaW5nIGVycm9yOycpCiAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7JykKICAgICAgICAgaWYgY29tbWFuZC5pc19hc3luYzoKLSAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjxJbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0Jh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JShjYWxsYmFja05hbWUpcz4gY2FsbGJhY2sgPSBhZG9w
dFJlZigqbmV3IEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjolKGNhbGxiYWNrTmFtZSlzKG1fYmFja2VuZERpc3BhdGNoZXIuY29weVJlZigpLCBjYWxsSWQp
KTsnICUgY29tbWFuZF9hcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgUmVmPCUo
ZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolKGNhbGxiYWNrTmFtZSlzPiBj
YWxsYmFjayA9IGFkb3B0UmVmKCpuZXcgJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OiUoY2FsbGJhY2tOYW1lKXMobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNh
bGxJZCkpOycgJSBjb21tYW5kX2FyZ3MpCiAgICAgICAgIGlmIGxlbihjb21tYW5kLnJldHVybl9w
YXJhbWV0ZXJzKSA+IDA6CiAgICAgICAgICAgICBsaW5lcy5leHRlbmQob3V0X3BhcmFtZXRlcl9k
ZWNsYXJhdGlvbnMpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIG1fYWdlbnQtPiUoY29tbWFu
ZE5hbWUpcyglKGludm9jYXRpb25QYXJhbWV0ZXJzKXMpOycgJSBjb21tYW5kX2FyZ3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IGJkYjhkYmMyN2MzODE0
NzA1Y2MwZDBmZjI0NGI3OWFkYjM1YzJlNTEuLjc5ODE1N2EwNjA4OWU1MjMyODVjM2Q0YmYxZmEw
YWQ3MTExNmViM2UgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5
CkBAIC0xMDUsNyArMTA1LDcgQEAgY2xhc3MgQ3BwRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50
YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgICdmb3JtYWxQYXJhbWV0ZXJz
JzogIiwgIi5qb2luKGZvcm1hbF9wYXJhbWV0ZXJzKQogICAgICAgICB9CiAKLSAgICAgICAgbGlu
ZXMuYXBwZW5kKCd2b2lkIEluc3BlY3RvciUoZG9tYWluTmFtZSlzRnJvbnRlbmREaXNwYXRjaGVy
OjolKGV2ZW50TmFtZSlzKCUoZm9ybWFsUGFyYW1ldGVycylzKScgJSBldmVudF9hcmdzKQorICAg
ICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJShkb21haW5OYW1lKXNGcm9udGVuZERpc3BhdGNoZXI6
OiUoZXZlbnROYW1lKXMoJShmb3JtYWxQYXJhbWV0ZXJzKXMpJyAlIGV2ZW50X2FyZ3MpCiAgICAg
ICAgIGxpbmVzLmFwcGVuZCgneycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsnKQog
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0
ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiJShkb21haW5OYW1lKXMuJShldmVudE5hbWUp
cyIpKTsnICUgZXZlbnRfYXJncykKQEAgLTExNiw2ICsxMTYsNiBAQCBjbGFzcyBDcHBGcm9udGVu
ZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
InBhcmFtcyIpLCBXVEY6Om1vdmUocGFyYW1zT2JqZWN0KSk7JykKIAogICAgICAgICBsaW5lcy5h
cHBlbmQoJycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygp
KTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7JykKICAgICAgICAg
bGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJuICJcbiIuam9pbihsaW5lcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
ZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCA2ZDUyMDFmMDcyN2Ni
MzRiYjY0NDc3NjRjY2YwMjhhOTRmMzZjNTAyLi5mYjJkZTRmNjFmM2ZjMDFkN2E0NjA4MDhhOTg1
NWM1YWRhMmY5MDAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVt
ZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5CkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1l
bnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAg
IGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9ldmVudF9zaWduYXR1cmUoZG9tYWluLCBldmVu
dCkpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXIt
PmZyb250ZW5kQ2hhbm5lbCgpOycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgp
OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICghZnJvbnRlbmRDaGFubmVsKScpCiAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm47JykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCcnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGNmZjk4
OWUxNjE4OGFhNDQwNzNiOWI1YjlhM2ZiMzY0ZDY1YjM0ZWYuLjUzYmEzMmY5YzVmNWRiMTFiNDIz
NDVlMzQ3MmY4NDE5OGIxMzI2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJp
YnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQKQEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xh
c3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNo
ZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVy
KFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdl
dCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciA6IHB1Ymxp
YyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0
ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1
YWwgfkFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgaW50
IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGlu
dCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29u
c3QgU3RyaW5nJiBpbl9xdWVyeSkgPSAwOwpAQCAtMTQ4LDEwICsxNDgsMTAgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFsdGVybmF0ZURhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI7CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKK2NsYXNzIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAg
ICAvLyBOYW1lZCBhZnRlciBwYXJhbWV0ZXIgJ3NjcmVlbkNvbG9yJyB3aGlsZSBnZW5lcmF0aW5n
IGNvbW1hbmQvZXZlbnQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcy4KICAgICBl
bnVtIGNsYXNzIFNjcmVlbkNvbG9yIHsKQEAgLTE2Niw0MSArMTY2LDQxIEBAIHB1YmxpYzoKICAg
ICAgICAgWWVsbG93ID0gNSwKICAgICAgICAgQmxhY2sgPSA2LAogICAgIH07IC8vIGVudW0gY2xh
c3MgUHJpbnRDb2xvcgotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYg
aW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0
X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4q
IG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBv
cHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxF
cnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9v
dXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsK
LSAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrIDog
cHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZSB7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMo
RXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVt
bk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9u
b3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGlt
ZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5D
b2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBv
cHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIGNsYXNzIEV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sgOiBwdWJsaWMgQmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICBFeGVjdXRlU1FMQXN5bmNPcHRp
b25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlk
KTsKICAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91Ymxl
PiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcik7CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoRXJyb3JTdHJpbmcmLCBpbnQgaW5f
ZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmPEV4ZWN1dGVTUUxBc3luY09w
dGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s+JiYgY2FsbGJhY2spID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29u
c3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90
aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0
ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyogb3V0X3NjcmVlbkNvbG9yLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKLSAgICBjbGFzcyBFeGVjdXRl
U1FMQXN5bmNDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UgeworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhF
cnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1l
cywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91
dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xv
cikgPSAwOworICAgIGNsYXNzIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrIDogcHVibGljIEJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXhlY3V0
ZVNRTEFzeW5jQ2FsbGJhY2soUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+JiYsIGludCBpZCk7CisgICAgICAgIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxCYWNr
ZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsKICAgICAgICAgdm9pZCBzZW5kU3VjY2VzcyhSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29u
c3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIHBheWxvYWQsIGludCBkYXRh
YmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNx
bEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyYgcHJpbnRDb2xvcik7CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTEFzeW5j
KEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnks
IFJlZjxFeGVjdXRlU1FMQXN5bmNDYWxsYmFjaz4mJiBjYWxsYmFjaykgPSAwOwogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgfkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KCk7CisgICAgdmlydHVhbCB+RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07
CiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7Citj
bGFzcyBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJp
ZGU7CisgICAgc3RhdGljIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoQmFj
a2VuZERpc3BhdGNoZXIqLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2Qs
IFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiBwcml2YXRlOgotICAg
IHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgZXhlY3V0
ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGV4ZWN1dGVTUUxTeW5jKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0g
ICAgdm9pZCBleGVjdXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7
CisgICAgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVTUUxT
eW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZv
aWQgZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIoQmFja2VuZERpc3BhdGNoZXImLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciop
OworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQg
c2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIo
QWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikg
eyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRl
OgotICAgIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlcjsKKyAgICBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
KiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07CiAKQEAgLTI1MywxNSArMjUzLDE1
IEBAIHByaXZhdGU6CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKCkgeyB9CitEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAKLVJlZjxJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCitSZWY8RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoKmJh
Y2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVjdG9yU3VwcGxlbWVudGFs
QmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiBiYWNr
ZW5kRGlzcGF0Y2hlciwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQor
ICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCiAg
ICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxwdHIpCkBAIC0yNzAsOSAr
MjcwLDkgQEAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3IKICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCB0
aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmpl
Y3Q+JiYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
bG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYm
IG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBwcm90
ZWN0KCp0aGlzKTsKIAogICAgIGlmIChtZXRob2QgPT0gImV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMiKQogICAgICAgICBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KGNhbGxJZCwgbWVzc2FnZSk7CkBAIC0yODMsMTkgKzI4MywxOSBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJp
bmcmIG1ldAogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZVNRTEFzeW5jIikKICAgICAg
ICAgZXhlY3V0ZVNRTEFzeW5jKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZQotICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0
YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0
Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRhdGFiYXNlIiwgJy4nLCBt
ZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90
b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNz
YWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwot
ICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldElu
dGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgp
LCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
KyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJx
dWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29s
RXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5n
Ojpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3Nl
ZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzIik7Ci0gICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RG
Ojptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJh
bXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9u
ZwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9z
cWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0gICAgSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7Cisg
ICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50
Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhl
cnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3Rl
cywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFz
ZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMs
ICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CkBAIC0zNDUs
OSArMzQ1LDkgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVj
dXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQog
Ci1JbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgYmFj
a2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsg
fQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzQ2FsbGJhY2soUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBp
bnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEY6Om1vdmUoYmFja2Vu
ZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJh
Y2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+
PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiog
bm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiB0aW1lc3RhbXAs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50
PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJv
cj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHNj
cmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJp
bmc+KiBwcmludENvbG9yKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6c2VuZFN1Y2Nlc3Mo
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBh
eWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNv
bG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3Ip
CiB7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIGlmIChjb2x1bW5OYW1lcykKQEAgLTM3MywxNiArMzczLDE2IEBA
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsCiAgICAgc2VuZElmQWN0aXZlKFdURjo6bW92ZShqc29u
TWVzc2FnZSksIEVycm9yU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90
b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgp
OwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNz
YWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwot
ICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldElu
dGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
bnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgp
LCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
KyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJx
dWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29s
RXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5n
Ojpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3Nl
ZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIpOwotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdU
Rjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFy
YW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zOTUsMjYgKzM5NSwyNiBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KGxvbgogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBSZWY8SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzQ2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7
CisgICAgUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKCpuZXcg
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzQ2FsbGJhY2sobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJ
ZCkpOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGVy
cm9yLCBpbl9kYXRhYmFzZUlkLCBpbl9xdWVyeSwgY2FsbGJhY2suY29weVJlZigpKTsKIAogICAg
IGlmIChlcnJvci5sZW5ndGgoKSkgewogICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOwotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIElu
c3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7
CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2Fn
ZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBj
YWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3Rv
Y29sRXJyb3JzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3Nh
Z2UuZ2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtc0NvbnRhaW5lcik7Ci0g
ICAgaW50IGluX2RhdGFiYXNlSWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50
ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBu
dWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3F1ZXJ5ID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwor
ICAgIGludCBpbl9kYXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFy
YW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwg
cHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9xdWVyeSA9IEJhY2tlbmREaXNw
YXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1
ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xF
cnJvcnMtPmxlbmd0aCgpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6
OmZvcm1hdCgiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2Vk
IiwgIkRhdGFiYXNlLmV4ZWN1dGVTUUxTeW5jIik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3Jz
KSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNh
bGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RG
Ojptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQz
Niw3ICs0MzYsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZQogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNv
bG9yczsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyBv
dXRfc2NyZWVuQ29sb3I7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+
ZXhlY3V0ZVNRTFN5bmMoZXJyb3IsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5LCBvdXRfY29sdW1u
TmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxv
YWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAm
b3V0X3NjcmVlbkNvbG9yLCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5n
dGgoKSkgewpAQCAtNDU0LDkgKzQ1NCw5IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlCiAgICAg
bV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3Vs
dCksIGVycm9yKTsKIH0KIAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkg
OiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RG
Ojptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNDYWxs
YmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkg
OiBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0
Y2hlciksIGlkKSB7IH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJp
bmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2
YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3Is
IGNvbnN0IFN0cmluZyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmlu
dENvbG9yKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNR
TEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUg
dGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCB2YWx1ZXMsIEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWUgcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgc2Ny
ZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0
PiYmIGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKICAgICBqc29uTWVzc2FnZS0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIp
LCBjb2x1bW5OYW1lcyk7CkBAIC00NzIsMTYgKzQ3MiwxNiBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6c2Vu
ZFN1YwogICAgIHNlbmRJZkFjdGl2ZShXVEY6Om1vdmUoanNvbk1lc3NhZ2UpLCBFcnJvclN0cmlu
ZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVj
dXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkK
K3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2Nv
bEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwog
ICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdl
LmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAg
IGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVn
ZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVs
bHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAg
ICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlzcGF0
Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVy
eSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJy
b3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpm
b3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIs
ICJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMp
KTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2Fs
bElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6
Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDk0
LDEyICs0OTQsMTIgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpl
eGVjdXRlU1FMQXN5bmMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3AKIAogICAgIEVycm9yU3RyaW5n
IGVycm9yOwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5
bmNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7CisgICAg
UmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxs
YmFjaz4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlS
ZWYoKSwgY2FsbElkKSk7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZVNRTEFzeW5jKGVycm9yLCBpbl9k
YXRhYmFzZUlkLCBpbl9xdWVyeSwgY2FsbGJhY2suY29weVJlZigpKTsKIAogICAgIGlmIChlcnJv
ci5sZW5ndGgoKSkgewogICAgICAgICBjYWxsYmFjay0+ZGlzYWJsZSgpOwotICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3Rvcjo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CisgICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2Vu
ZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBlcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiB9CkBAIC02ODQsMTQgKzY4NCwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRF
PgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVy
PFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9y
T2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVj
dCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmll
bGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNzE2LDkgKzcx
Niw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPEVycm9yPiByZWxlYXNlKCkKICAgICAgICAgewog
ICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRf
aXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9y
T2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAg
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVs
bCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8
RXJyb3I+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTczMiw3ICs3MzIsNyBA
QCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24t
cmVzdWx0CmluZGV4IDkwNTg3MTA5OGU0NzVhMzljYTZmOTA2ZDU1NTYwZjgwOTk0ZDcxMTQuLjQ1
MDIzMGQ4MDA3MDQwMDhiZjQ3MTY2MjZkODVmODJlY2Y2YmE5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Nv
bW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApA
QCAtMzksMTggKzM5LDE4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRl
cm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQ
dHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRy
PEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
IHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKIH07CiAKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7
CitjbGFzcyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9CisgICAgdmlydHVhbCB+QWx0
ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBp
bl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJp
bmcqIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxs
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmlu
ZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSA9IDA7
CiB9OwpAQCAtMTQzLDEwICsxNDMsMTAgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjsKK2NsYXNzIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7CiAjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLWNsYXNzIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICAvLyBOYW1lZCBhZnRlciBwYXJh
bWV0ZXIgJ3NjcmVlbkNvbG9yJyB3aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZlbnQgZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycy4KICAgICBlbnVtIGNsYXNzIFNjcmVlbkNvbG9yIHsKQEAg
LTE2MSwyNyArMTYxLDI3IEBAIHB1YmxpYzoKICAgICAgICAgWWVsbG93ID0gNSwKICAgICAgICAg
QmxhY2sgPSA2LAogICAgIH07IC8vIGVudW0gY2xhc3MgUHJpbnRDb2xvcgotICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29u
c3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29s
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9j
b2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9v
dXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0
X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2Ny
ZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0
PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNv
bnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9z
Y3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5f
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcq
IG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQs
IGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzKiBvdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9y
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoRXJy
b3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9j
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1l
c3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1
ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGlu
dCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0
IFN0cmluZyogaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRfb3V0X3ZhbHVlcywgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBvcHRf
b3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBvcHRfb3V0
X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+
JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9vdXRfcHJpbnRDb2xvcikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoRXJyb3JT
dHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgSW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBT
dHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvciwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvdXRfY29sdW1uTmFt
ZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBv
dXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29s
b3IpID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIgeworY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6
IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8RGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJy
aWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAg
ICB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgZXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNz
YWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyJiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAg
ICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKKyAg
ICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRl
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikg
eyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CisgICAgdm9p
ZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgQWx0ZXJuYXRl
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwogI2VuZGlm
CiB9OwogCkBAIC0yMzQsMTUgKzIzNCwxNSBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigp
IHsgfQogCi1SZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIGFnZW50KQorUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCpi
YWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAot
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNo
ZXIsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAg
ICA6IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRj
aGVyKQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRj
aGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcihudWxscHRyKQpAQCAtMjUxLDQ2ICsyNTEsNDYgQEAgSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3IKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4o
QVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5n
JiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIGlmIChtZXRob2Qg
PT0gImV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMiKQogICAgICAgICBleGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZSBpZiAobWV0aG9kID09
ICJleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiKQogICAgICAgICBleGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMoY2FsbElkLCBtZXNzYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJEYXRhYmFzZSIs
ICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpN
ZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLicsIG1ldGhvZCwg
Iicgd2FzIG5vdCBmb3VuZCIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3Bl
Y3Rvck9iamVjdCYgbWVzc2FnZSkKIHsKICAgICBhdXRvIHByb3RvY29sRXJyb3JzID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyOwogICAgIG1lc3NhZ2UuZ2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtc0NvbnRhaW5lcik7CiAgICAgYm9vbCBjb2x1bW5OYW1l
c192YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+IGluX2NvbHVtbk5hbWVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5
KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCAmY29s
dW1uTmFtZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEJhY2tlbmREaXNwYXRj
aGVyOjpnZXRBcnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiY29sdW1u
TmFtZXMiKSwgJmNvbHVtbk5hbWVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
ICAgICBib29sIG5vdGVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fbm90ZXMg
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5n
ZXQoKSwgQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAmbm90ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xF
cnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9ub3RlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoIm5vdGVzIiksICZu
b3Rlc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCB0aW1lc3Rh
bXBfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxkb3VibGU+IGluX3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRE
b3VibGUocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAm
dGltZXN0YW1wX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBpbl90aW1lc3RhbXAgPSBCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ0
aW1lc3RhbXAiKSwgJnRpbWVzdGFtcF92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7
CiAgICAgYm9vbCB2YWx1ZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidmFsdWVz
IiksICZ2YWx1ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0gQmFja2VuZERpc3BhdGNo
ZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidmFsdWVz
IiksICZ2YWx1ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wg
cGF5bG9hZF92YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWU+IGluX3BheWxvYWQgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0VmFs
dWUocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgJnBheWxv
YWRfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPiBpbl9wYXlsb2FkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFZh
bHVlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICZwYXls
b2FkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIGRhdGFiYXNl
SWRfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJ
SUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgJmRhdGFiYXNlSWRfdmFsdWVGb3VuZCwgcHJvdG9jb2xF
cnJvcnMuZ2V0KCkpOworICAgIGludCBpbl9kYXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6
OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNl
SWQiKSwgJmRhdGFiYXNlSWRfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAg
IGJvb2wgc3FsRXJyb3JfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4gaW5fc3FsRXJyb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzcWxFcnJv
ciIpLCAmc3FsRXJyb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fc3FsRXJyb3IgPSBCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJz
cWxFcnJvciIpLCAmc3FsRXJyb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwog
ICAgIGJvb2wgc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFN0cmluZyBpbl9z
Y3JlZW5Db2xvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksICZzY3JlZW5Db2xv
cl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3RyaW5nIGluX3NjcmVl
bkNvbG9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0
KCksIEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgJnNjcmVlbkNvbG9yX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIGFsdGVybmF0ZUNvbG9yc192YWx1ZUZv
dW5kID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGluX2Fs
dGVybmF0ZUNvbG9ycyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShwYXJh
bXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksICZhbHRl
cm5hdGVDb2xvcnNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwo
ImFsdGVybmF0ZUNvbG9ycyIpLCAmYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQsIHByb3RvY29s
RXJyb3JzLmdldCgpKTsKICAgICBib29sIHByaW50Q29sb3JfdmFsdWVGb3VuZCA9IGZhbHNlOwot
ICAgIFN0cmluZyBpbl9wcmludENvbG9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Omdl
dFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIp
LCAmcHJpbnRDb2xvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3Ry
aW5nIGluX3ByaW50Q29sb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksICZwcmludENvbG9yX3Zh
bHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xFcnJvcnMt
Pmxlbmd0aCgpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZvcm1h
dCgiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIkRh
dGFiYXNlLmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMiKTsKLSAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9j
b2xFcnJvcnMpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xF
cnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNz
YWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJCiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAg
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5D
b2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKKyAgICBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKICAgICBt
X2FnZW50LT5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGVycm9yLCBjb2x1bW5OYW1lc192
YWx1ZUZvdW5kID8gaW5fY29sdW1uTmFtZXMuY29weVJlZigpIDogbnVsbHB0ciwgbm90ZXNfdmFs
dWVGb3VuZCA/ICZpbl9ub3RlcyA6IG51bGxwdHIsIHRpbWVzdGFtcF92YWx1ZUZvdW5kID8gJmlu
X3RpbWVzdGFtcCA6IG51bGxwdHIsIHZhbHVlc192YWx1ZUZvdW5kID8gaW5fdmFsdWVzLmNvcHlS
ZWYoKSA6IG51bGxwdHIsIHBheWxvYWRfdmFsdWVGb3VuZCA/IGluX3BheWxvYWQuY29weVJlZigp
IDogbnVsbHB0ciwgZGF0YWJhc2VJZF92YWx1ZUZvdW5kID8gJmluX2RhdGFiYXNlSWQgOiBudWxs
cHRyLCBzcWxFcnJvcl92YWx1ZUZvdW5kID8gaW5fc3FsRXJyb3IuY29weVJlZigpIDogbnVsbHB0
ciwgc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCA/ICZpbl9zY3JlZW5Db2xvciA6IG51bGxwdHIsIGFs
dGVybmF0ZUNvbG9yc192YWx1ZUZvdW5kID8gaW5fYWx0ZXJuYXRlQ29sb3JzLmNvcHlSZWYoKSA6
IG51bGxwdHIsIHByaW50Q29sb3JfdmFsdWVGb3VuZCA/ICZpbl9wcmludENvbG9yIDogbnVsbHB0
ciwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVl
cywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3Jl
ZW5Db2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgJm91dF9wcmludENvbG9yKTsKIAogICAgIGlm
ICghZXJyb3IubGVuZ3RoKCkpIHsKQEAgLTM0MCwyNCArMzQwLDI0IEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhs
b25nIGNhbGxJCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwg
V1RGOjptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2NvbEVycm9ycyA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdlLmdldE9iamVjdChB
U0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRBcnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgi
Y29sdW1uTmFtZXMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmlu
ZyBpbl9ub3RlcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoIm5vdGVzIiksIG51bGxwdHIsIHByb3RvY29s
RXJyb3JzLmdldCgpKTsKLSAgICBkb3VibGUgaW5fdGltZXN0YW1wID0gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OmdldERvdWJsZShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgidGltZXN0YW1wIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3ZhbHVlcyA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVy
YWwoInZhbHVlcyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGluX3BheWxvYWQgPSBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0VmFsdWUocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwo
InBheWxvYWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIGludCBpbl9k
YXRhYmFzZUlkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJv
dG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gaW5fc3FsRXJyb3IgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBudWxscHRyLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3NjcmVlbkNvbG9yID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFT
Q0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xv
cnMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVy
LmdldCgpLCBBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBudWxscHRyLCBwcm90b2Nv
bEVycm9ycy5nZXQoKSk7Ci0gICAgU3RyaW5nIGluX3ByaW50Q29sb3IgPSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJwcmludENvbG9yIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fY29sdW1uTmFtZXMgPSBCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwo
ImNvbHVtbk5hbWVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJp
bmcgaW5fbm90ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5n
ZXQoKSk7CisgICAgZG91YmxlIGluX3RpbWVzdGFtcCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRE
b3VibGUocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBu
dWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBpbl92YWx1ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgbnVsbHB0ciwgcHJv
dG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiBpbl9wYXlsb2FkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3Jz
LmdldCgpKTsKKyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJ
bnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiks
IG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+IGluX3NxbEVycm9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVj
dChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgbnVsbHB0
ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9zY3JlZW5Db2xvciA9IEJh
Y2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxp
dGVyYWwoInNjcmVlbkNvbG9yIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0g
QmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlM
aXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OworICAgIFN0cmluZyBpbl9wcmludENvbG9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmlu
ZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5n
dGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNv
bWUgYXJndW1lbnRzIG9mIG1ldGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFz
ZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJv
cnMpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigm
Y2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBX
VEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
Mzc5LDcgKzM3OSw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkCiAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gb3V0X3NxbEVycm9yOwogICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3JlZW5Db2xvcjsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gb3V0
X2FsdGVybmF0ZUNvbG9yczsKLSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKKyAgICBEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKICAgICBtX2FnZW50
LT5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIGluX2NvbHVtbk5hbWVzLmNvcHlS
ZWYoKSwgaW5fbm90ZXMsIGluX3RpbWVzdGFtcCwgaW5fdmFsdWVzLmNvcHlSZWYoKSwgaW5fcGF5
bG9hZC5jb3B5UmVmKCksIGluX2RhdGFiYXNlSWQsIGluX3NxbEVycm9yLmNvcHlSZWYoKSwgaW5f
c2NyZWVuQ29sb3IsIGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCksIGluX3ByaW50Q29sb3Is
IG91dF9jb2x1bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMs
ICZvdXRfcGF5bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVu
Q29sb3IsIG91dF9hbHRlcm5hdGVDb2xvcnMsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAo
IWVycm9yLmxlbmd0aCgpKSB7CkBAIC01NzcsMTQgKzU3NywxNCBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGlu
dCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4q
Pih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypF
cnJvciovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQo
V1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJU
KFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUp
OwpAQCAtNjA5LDkgKzYwOSw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPEVycm9yPiByZWxlYXNl
KCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmll
bGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJU
KHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fu
bm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBz
aXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25O
dWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRl
cnByZXRfY2FzdDxSZWY8RXJyb3I+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAg
LTYyNSw3ICs2MjUsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxk
c1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAg
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQK
aW5kZXggYWVkMDNhMWFmYTU0YjgyM2FkODVhYTk5MGZmNTc1N2M3ZWZjYzliOC4uYjc4MTRkOTMw
OTY4MTc5ZGRkYWYzMWQ3MmVlMWU0NjBiMWUxNDg3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12
YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5n
LWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTM5LDIzICszOSwyMyBAQAogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZv
aWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
PiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRj
aGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRj
aGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAg
ICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFsdGVy
bmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRl
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJZCkgPSAw
OwogfTsKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIg
OiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0
ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZU5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNl
MShsb25nIGNhbGxJZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UyKGxvbmcg
Y2FsbElkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQp
ID0gMDsKQEAgLTE2MSwxOCArMTYxLDE4IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9E
SVNQQVRDSEVSUykKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXI7Ci1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
OworY2xhc3MgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFsdGVy
bmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI7CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMShFcnJvclN0cmlu
ZyYpID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfk5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CitjbGFzcyBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEoRXJyb3JTdHJpbmcmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTIoRXJyb3JTdHJpbmcmKSA9IDA7CkBA
IC0xODIsNDYgKzE4Miw0NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJj
ZTYoRXJyb3JTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTcoRXJy
b3JTdHJpbmcmKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclN1cHBsZW1l
bnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIg
ZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRl
KEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3JOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChs
b25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciosIE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdl
KSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElk
LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBs
b2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2Up
OwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKiBtX2FnZW50OworICAgIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoQmFj
a2VuZERpc3BhdGNoZXImLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAg
IE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0QWx0
ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVy
bmF0ZURpc3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJu
YXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2Fs
dGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRlOgotICAg
IEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsKKyAgICBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBtX2Fs
dGVybmF0ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07CiAKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBw
bGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+IGNy
ZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJlZjxOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCBOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVz
c2FnZSkgb3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZv
aWQgbG9hZFJlc291cmNlMihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgbG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgbG9hZFJl
c291cmNlNChsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpOwotICAgIHZvaWQgbG9hZFJlc291cmNlNShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgbG9hZFJlc291cmNlNihs
b25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwot
ICAgIHZvaWQgbG9hZFJlc291cmNlNyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJj
ZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9p
ZCBsb2FkUmVzb3VyY2UzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlNChsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNv
bnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2U2KGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9h
ZFJlc291cmNlNyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlciogbV9hZ2VudDsKKyAgICBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKEJhY2tl
bmREaXNwYXRjaGVyJiwgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVy
bmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5h
dGVEaXNwYXRjaGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0
ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRl
cm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBB
bHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURp
c3BhdGNoZXI7CisgICAgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRl
cm5hdGVEaXNwYXRjaGVyOwogI2VuZGlmCiB9OwogCkBAIC0yNzQsMTYgKzI3NCwxNiBAQCBwcml2
YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcigpIHsgfQotSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5J
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5OZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cigpIHsgfQorTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5OZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQogCi1SZWY8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4gSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQorUmVmPE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXI+IE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKiBhZ2VudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0
Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQorTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNo
ZXIsIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2Vu
dChhZ2VudCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAg
ICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcihudWxscHRyKQpAQCAtMjkyLDE3ICsyOTIsMTcgQEAg
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3IKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3Rl
ckRpc3BhdGNoZXJGb3JEb21haW4oQVNDSUlMaXRlcmFsKCJOZXR3b3JrMSIpLCB0aGlzKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25n
IGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVz
c2FnZSkKK3ZvaWQgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
CiB7Ci0gICAgUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlz
KTsKIAogICAgIGlmIChtZXRob2QgPT0gImxvYWRSZXNvdXJjZTEiKQogICAgICAgICBsb2FkUmVz
b3VyY2UxKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLics
IG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9k
Tm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmsxIiwgJy4nLCBtZXRob2QsICInIHdh
cyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikK
K3ZvaWQgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC0z
MTgsMTMgKzMxOCwxMyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6
OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7
CiB9CiAKLVJlZjxJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciogYWdlbnQpCitSZWY8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4gTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlciwgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoKmJh
Y2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1J
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hl
ciwgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAg
IDogSW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNo
ZXIpCitOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
KEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIqIGFnZW50KQorICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNo
ZXIoYmFja2VuZERpc3BhdGNoZXIpCiAgICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJ
TlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRj
aGVyKG51bGxwdHIpCkBAIC0zMzMsMTEgKzMzMywxMSBAQCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
cgogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihB
U0NJSUxpdGVyYWwoIk5ldHdvcmszIiksIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcm
IG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRo
b2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9y
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgdHlwZWRlZiB2b2lk
IChJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjoqQ2FsbEhhbmRsZXIpKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAg
dHlwZWRlZiB2b2lkIChOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjoqQ2FsbEhhbmRsZXIpKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiBEaXNwYXRjaE1hcDsKICAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoRGlzcGF0Y2hNYXAsIGRpc3BhdGNoTWFwLCAoKSk7CiAgICAg
aWYgKGRpc3BhdGNoTWFwLmlzRW1wdHkoKSkgewpAQCAtMzQ1LDEzICszNDUsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBtZXQKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgICAg
ICAgICBDYWxsSGFuZGxlciBoYW5kbGVyOwogICAgICAgICB9IGNvbW1hbmRzW10gPSB7Ci0gICAg
ICAgICAgICB7ICJsb2FkUmVzb3VyY2UxIiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI6OmxvYWRSZXNvdXJjZTEgfSwKLSAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTIiLCAm
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMiB9LAotICAg
ICAgICAgICAgeyAibG9hZFJlc291cmNlMyIsICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2UzIH0sCi0gICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U0Iiwg
Jkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQgfSwKLSAg
ICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTUiLCAmSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcjo6bG9hZFJlc291cmNlNSB9LAotICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNiIs
ICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2IH0sCi0g
ICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U3IiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTEi
LCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMSB9LAorICAgICAgICAg
ICAgeyAibG9hZFJlc291cmNlMiIsICZOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2UyIH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UzIiwgJk5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNvdXJj
ZTQiLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNCB9LAorICAgICAg
ICAgICAgeyAibG9hZFJlc291cmNlNSIsICZOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2Fk
UmVzb3VyY2U1IH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U2IiwgJk5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTYgfSwKKyAgICAgICAgICAgIHsgImxvYWRSZXNv
dXJjZTciLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyB9LAogICAg
ICAgICB9OwogICAgICAgICBzaXplX3QgbGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChjb21tYW5k
cyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCkBAIC0zNjAs
MTQgKzM2MCwxNCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmRp
c3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldAogCiAgICAgSGFzaE1hcDxTdHJp
bmcsIENhbGxIYW5kbGVyPjo6aXRlcmF0b3IgaXQgPSBkaXNwYXRjaE1hcC5maW5kKG1ldGhvZCk7
CiAgICAgaWYgKGl0ID09IGRpc3BhdGNoTWFwLmVuZCgpKSB7Ci0gICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMyIsICcu
JywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRo
b2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazMiLCAnLicsIG1ldGhvZCwgIicg
d2FzIG5vdCBmb3VuZCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgICgoKnRoaXMp
LippdC0+dmFsdWUpKGNhbGxJZCwgbWVzc2FnZS5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5h
dGVEaXNwYXRjaGVyKSB7CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNw
ZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1v
dmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIobG9uZyBj
YWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpA
QCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
cjo6bG9hZFJlc291cmNlMihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdCksIGVycm9y
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVz
b3VyY2UzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNw
ZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAgLTQxNSw3ICs0MTUsNyBA
QCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRS
ZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNChsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
cjo6bG9hZFJlc291cmNlNChsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9h
bHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U0KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBX
VEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
ck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTUo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgewpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcjo6bG9hZFJlc291cmNlNShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjCiAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdCks
IGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2U2KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAgLTQ2Myw3ICs0
NjMsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNv
dXJjZTYobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyhsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcjo6bG9hZFJlc291cmNlNyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBp
ZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggMWZhYjIzNjNmOTcwZWE4NjdiMjE3
YmEyYTRhZWIyZDgwMjBjMWVjMi4uMDYyYjYyMDk4YTBmNTQ5Mjg5MjRiMDQ5YWVlMmZhNTBlNWMy
ZjIwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5q
c29uLXJlc3VsdApAQCAtMzksMTggKzM5LDE4IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
Ci1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlz
cGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikg
eyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3Bh
dGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRj
aGVyKCkgeyB9CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNw
YXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVl
KGxvbmcgY2FsbElkKSA9IDA7CiB9OwogCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5hdGVDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXI7CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpCiAKLWNsYXNzIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIgeworY2xhc3MgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiBwdWJsaWM6CiAgICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1ldGVyICdyZXR1cm5WYWx1
ZScgd2hpbGUgZ2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGNvbW1hbmRXaXRoRW51bVJldHVyblZh
bHVlLgogICAgIGVudW0gY2xhc3MgUmV0dXJuVmFsdWUgewpAQCAtMTYxLDI1ICsxNjEsMjUgQEAg
cHVibGljOgogICAgICAgICBNYWdlbnRhID0gNywKICAgICAgICAgWWVsbG93ID0gOCwKICAgICB9
OyAvLyBlbnVtIGNsYXNzIFJldHVyblZhbHVlCi0gICAgdmlydHVhbCB2b2lkIGNvbW1hbmRXaXRo
RW51bVJldHVyblZhbHVlKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6UmV0dXJuVmFsdWUqIG91dF9yZXR1cm5WYWx1ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShFcnJvclN0cmluZyYs
IENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlKiBvdXRf
cmV0dXJuVmFsdWUpID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmlydHVhbCB+Q29tbWFu
ZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVjdG9y
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6
SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmRE
aXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqLCBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcm
IG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJy
aWRlOworICAgIHN0YXRpYyBSZWY8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBjcmVh
dGUoQmFja2VuZERpc3BhdGNoZXIqLCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJp
bmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKIHBy
aXZhdGU6Ci0gICAgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgY29t
bWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgbWVzc2FnZSk7CiBwcml2YXRlOgotICAgIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVj
dG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3Rv
ckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwgQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOworICAgIENvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVy
KEFsdGVybmF0ZUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJu
YXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRj
aGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUNvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0
ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CiBwcml2YXRlOgotICAgIEFsdGVy
bmF0ZUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVE
aXNwYXRjaGVyOworICAgIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciog
bV9hbHRlcm5hdGVEaXNwYXRjaGVyOwogI2VuZGlmCiB9OwogCkBAIC0yMzIsMTUgKzIzMiwxNSBA
QCBwcml2YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotSW5zcGVjdG9yQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fkluc3BlY3RvckNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KK0NvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXI6On5Db21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAK
LVJlZjxJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IEluc3BlY3RvckNv
bW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciogYWdlbnQpCitSZWY8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRj
aGVyPiBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNvbW1h
bmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKCpi
YWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IEluc3Bl
Y3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQorQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmRE
aXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlcihudWxscHRyKQpAQCAtMjQ5LDE3ICsyNDksMTcgQEAgSW5zcGVjdG9yQ29tbWFu
ZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERp
c3BhdGNoZXIKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JE
b21haW4oQVNDSUlMaXRlcmFsKCJDb21tYW5kRG9tYWluIiksIHRoaXMpOwogfQogCi12b2lkIElu
c3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
Cit2b2lkIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxs
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
CiB7Ci0gICAgUmVmPEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4gcHJv
dGVjdCgqdGhpcyk7CiAKICAgICBpZiAobWV0aG9kID09ICJjb21tYW5kV2l0aEVudW1SZXR1cm5W
YWx1ZSIpCiAgICAgICAgIGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGNhbGxJZCwgbWVzc2Fn
ZSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3Vu
ZCwgbWFrZVN0cmluZygnXCcnLCAiQ29tbWFuZERvbWFpbiIsICcuJywgbWV0aG9kLCAiJyB3YXMg
bm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0
cmluZygnXCcnLCAiQ29tbWFuZERvbWFpbiIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5k
IikpOwogfQogCi12b2lkIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6
Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9i
amVjdCYpCit2b2lkIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhF
bnVtUmV0dXJuVmFsdWUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShs
b25nIGNhCiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIEluc3BlY3RvckNvbW1h
bmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlIG91dF9yZXR1cm5W
YWx1ZTsKKyAgICBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5W
YWx1ZSBvdXRfcmV0dXJuVmFsdWU7CiAgICAgbV9hZ2VudC0+Y29tbWFuZFdpdGhFbnVtUmV0dXJu
VmFsdWUoZXJyb3IsICZvdXRfcmV0dXJuVmFsdWUpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgo
KSkKQEAgLTMyNiw5ICszMjYsOSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAKLWNsYXNz
IEluc3BlY3RvckV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEV2ZW50RG9t
YWluRnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBJbnNwZWN0b3JFdmVudERvbWFp
bkZyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpIHsgfQorICAgIEV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyKEZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRDaGFubmVsKGZyb250ZW5k
Q2hhbm5lbCkgeyB9CiAgICAgICAgIC8vIE5hbWVkIGFmdGVyIHBhcmFtZXRlciAncGFyYW1ldGVy
JyB3aGlsZSBnZW5lcmF0aW5nIGNvbW1hbmQvZXZlbnQgZXZlbnRXaXRoRW51bVBhcmFtZXRlci4K
ICAgICAgICAgZW51bSBjbGFzcyBQYXJhbWV0ZXIgewogICAgICAgICAgICAgU2hhcmVkID0gMCwK
QEAgLTMzNyw3ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIH07IC8vIGVudW0gY2xhc3MgUGFy
YW1ldGVyCiAgICAgdm9pZCBldmVudFdpdGhFbnVtUGFyYW1ldGVyKFBhcmFtZXRlciBwYXJhbWV0
ZXIpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsOworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTM4Myw3ICszODMsNyBAQCBwcml2
YXRlOgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotdm9pZCBJbnNwZWN0b3JFdmVudERvbWFp
bkZyb250ZW5kRGlzcGF0Y2hlcjo6ZXZlbnRXaXRoRW51bVBhcmFtZXRlcihQYXJhbWV0ZXIgcGFy
YW1ldGVyKQordm9pZCBFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlcjo6ZXZlbnRXaXRoRW51
bVBhcmFtZXRlcihQYXJhbWV0ZXIgcGFyYW1ldGVyKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmpl
Y3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVz
c2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRXZl
bnREb21haW4uZXZlbnRXaXRoRW51bVBhcmFtZXRlciIpKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2
b2lkIEluc3BlY3RvckV2ZW50RG9tYWluRnJvbnRlbmREaXNwYXRjaGVyOjpldmVudFdpdGhFbnVt
UGFyYW1ldGVyKFBhcmFtZXRlciBwYQogICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgicGFyYW1ldGVyIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFu
dFZhbHVlKHBhcmFtZXRlcikpOwogICAgIGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJwYXJhbXMiKSwgV1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOwogCi0gICAgbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9K
U09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRl
bmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCkBAIC05ODgsNyArOTg4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
LSAodm9pZClldmVudFdpdGhFbnVtUGFyYW1ldGVyV2l0aFBhcmFtZXRlcjooUldJUHJvdG9jb2xF
dmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXIpcGFyYW1ldGVyCiB7Ci0g
ICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxl
ci0+ZnJvbnRlbmRDaGFubmVsKCk7CisgICAgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7CiAgICAgaWYgKCFmcm9udGVuZENo
YW5uZWwpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5q
c29uLXJlc3VsdAppbmRleCBjYjEwMzM0YjljODIxNWQ3ZDdkODViMmFmYjRkNGY4NTgyNGIzMTc5
Li5hZWY3OTI5ODAyMjcyYTQzNGRhMTIzOTllNjkwNmFlZmQwZDgyODNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZl
bnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgt
b3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0g
ICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRp
c3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAg
IHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRp
c3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsg
fQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0
cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApAQCAtMjM3
LDEzICsyMzcsMTMgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1jbGFzcyBJbnNwZWN0
b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBEYXRhYmFzZUZyb250ZW5kRGlz
cGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNo
ZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDog
bV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0K
KyAgICBEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCkgOiBtX2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5uZWwpIHsgfQogICAgIHZv
aWQgZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogY29uc3Qgbm90ZXMs
IGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxv
YWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9y
LCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogY29u
c3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogY29uc3QgcHJpbnRDb2xvcik7
CiAgICAgdm9pZCBkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5v
dGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVuQ29sb3Is
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcik7CiBwcml2YXRlOgotICAgIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgRnJv
bnRlbmRDaGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgpAQCAtMjg5LDcgKzI4OSw3IEBAIHByaXZhdGU6CiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVj
dXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91
YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
dmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5D
b2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFs
dGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKQordm9pZCBEYXRh
YmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVycyhSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0
IFN0cmluZyogY29uc3Qgbm90ZXMsIGNvbnN0IGRvdWJsZSogY29uc3QgdGltZXN0YW1wLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyogY29uc3Qgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyogY29uc3QgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVz
c2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4
ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMiKSk7CkBAIC0zMTQsMTAgKzMxNCwxMCBAQCB2b2lkIElu
c3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJh
bWV0ZXJzKFJlZlB0cjxJbgogICAgICAgICBwYXJhbXNPYmplY3QtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoInByaW50Q29sb3IiKSwgKnByaW50Q29sb3IpOwogICAgIGpzb25NZXNzYWdlLT5zZXRP
YmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgV1RGOjptb3ZlKHBhcmFtc09iamVjdCkpOwog
Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChq
c29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5k
TWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcjo6ZGlkRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBj
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnMmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50
Q29sb3IpCit2b2lkIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+
IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+IHNxbEVycm9yLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJp
bnRDb2xvcikKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxp
dGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyIpKTsKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlRnJvbnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVm
UHRyPAogICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xv
ciIpLCBwcmludENvbG9yKTsKICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJh
bCgicGFyYW1zIiksIFdURjo6bW92ZShwYXJhbXNPYmplY3QpKTsKIAotICAgIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNP
TlN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpAQCAtNDIwLDE0ICs0MjAsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFU
RT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRl
cjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAg
ICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rv
ck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmpl
Y3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0Zp
ZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTQ1Miw5ICs0
NTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxFcnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0
X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3Ip
ID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAg
ICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVm
PEVycm9yPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC00NjgsNyArNDY4LDcg
QEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVh
dGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5v
RmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC04
NDksNyArODQ5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClkaWRF
eGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICoqKW5vdGVzIHRpbWVzdGFtcDoo
ZG91YmxlICopdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqKXZhbHVl
cyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopcGF5bG9hZCBzcWxFcnJvcjooUldJ
UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihOU1N0cmluZyAq
KilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKilh
bHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKiopcHJpbnRDb2xvcgogewotICAg
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXIt
PmZyb250ZW5kQ2hhbm5lbCgpOworICAgIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
ID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOwogICAgIGlmICghZnJvbnRlbmRDaGFu
bmVsKQogICAgICAgICByZXR1cm47CiAKQEAgLTg4OSw3ICs4ODksNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKWRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dp
dGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6
KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKXBheWxvYWQgc3FsRXJyb3I6KFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKXNxbEVycm9y
IHNjcmVlbkNvbG9yOihOU1N0cmluZyAqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNB
cnJheS8qPE5TU3RyaW5nPiovICopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5TU3RyaW5n
ICopcHJpbnRDb2xvcgogewotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOworICAgIEZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOwog
ICAgIGlmICghZnJvbnRlbmRDaGFubmVsKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9n
ZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
ZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IGQ5YTJiMWViODlm
Yzg4YjIxOTU0N2UyZjI2NWNlNmQ4OWY1ODgyMDcuLjU3MDU1OTcxMDAyYjRiMmIxNjk2Y2NkODAw
ZjUyNTcyNWZiMjVjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJk
cy5qc29uLXJlc3VsdApAQCAtMzksMTkgKzM5LDE5IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5k
RGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hl
cikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERp
c3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5E
UykKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgOiBw
dWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJu
YXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZU5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKGxv
bmcgY2FsbElkKSA9IDA7CiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKQEAg
LTE0OCwzNCArMTQ4LDM0IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAjaWYgUExBVEZPUk0oV0VCX0NP
TU1BTkRTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
cjsKK2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7CiAjZW5kaWYgLy8g
UExBVEZPUk0oV0VCX0NPTU1BTkRTKQogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotY2xhc3MgSW5z
cGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2Fk
UmVzb3VyY2UoRXJyb3JTdHJpbmcmKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5z
cGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFsIH5O
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKICNlbmRpZiAvLyBQTEFURk9S
TShXRUJfQ09NTUFORFMpCiAKICNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1jbGFzcyBJbnNw
ZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6
SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcios
IEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRp
YyBSZWY8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVy
KiwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9y
T2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGxvYWRSZXNv
dXJjZShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImLCBJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIEluc3BlY3Rvck5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworICAgIE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciopOworICAgIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50
OwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogcHVibGljOgot
ICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURp
c3BhdGNoZXIoQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlz
cGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9
CiBwcml2YXRlOgotICAgIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXIqIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKKyAgICBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07CiAjZW5kaWYgLy8g
UExBVEZPUk0oV0VCX0NPTU1BTkRTKQpAQCAtMjMwLDE3ICsyMzAsMTcgQEAgcHJpdmF0ZToKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotSW5zcGVj
dG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6On5OZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQogI2VuZGlmIC8v
IFBMQVRGT1JNKFdFQl9DT01NQU5EUykKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLVJl
ZjxJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciog
YWdlbnQpCitSZWY8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNw
YXRjaGVyLCBhZ2VudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOwogfQogCi1JbnNwZWN0b3JO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVj
dG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIGFnZW50KQotICAgIDogSW5zcGVj
dG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2VuZERpc3BhdGNoZXIpCitOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmRE
aXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqIGFnZW50KQorICAgIDogU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXIoYmFja2Vu
ZERpc3BhdGNoZXIpCiAgICAgLCBtX2FnZW50KGFnZW50KQogI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKG51bGxw
dHIpCkBAIC0yNDksMTcgKzI0OSwxNyBAQCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyOjpJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvcgogICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnJlZ2lzdGVyRGlzcGF0Y2hlckZvckRvbWFpbihBU0NJSUxpdGVy
YWwoIk5ldHdvcmsxIiksIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwg
UmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQordm9pZCBOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKIHsKLSAgICBSZWY8SW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJl
c291cmNlIikKICAgICAgICAgbG9hZFJlc291cmNlKGNhbGxJZCwgbWVzc2FnZSk7CiAgICAgZWxz
ZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmlu
ZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBC
YWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdv
cmsxIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QmKQordm9pZCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYg
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlcikgewpAQCAtMzI0LDEyICszMjQsMTIgQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIAogI2lmIFBMQVRGT1JNKFdFQl9FVkVOVFMpCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3Jr
M0Zyb250ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlciB7
CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yTmV0d29yazNGcm9udGVuZERpc3BhdGNoZXIoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIDogbV9pbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSB7IH0KKyAgICBOZXR3
b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkg
OiBtX2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5uZWwpIHsgfQogICAgIHZvaWQgcmVzb3Vy
Y2VMb2FkZWQoKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRD
aGFubmVsOwogfTsKICNlbmRpZiAvLyBQTEFURk9STShXRUJfRVZFTlRTKQogCkBAIC0zNzcsMTIg
KzM3NywxMiBAQCBwcml2YXRlOgogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKICNpZiBQTEFURk9S
TShXRUJfRVZFTlRTKQotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcjo6
cmVzb3VyY2VMb2FkZWQoKQordm9pZCBOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcjo6cmVzb3Vy
Y2VMb2FkZWQoKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiTmV0d29yazMucmVzb3VyY2VMb2FkZWQi
KSk7CiAKLSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZENoYW5uZWwt
PnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQog
I2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9FVkVOVFMpCiAKQEAgLTQ2NSwxNCArNDY1LDE0IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAg
cHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jl
c3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAg
ICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8
U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8
LypOZXR3b3JrRXJyb3IqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAg
ICAgICAgQnVpbGRlcihSZWY8LypOZXR3b3JrRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBvYmpl
Y3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7
CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRl
cl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTQ5Nyw5ICs0OTcsOSBAQCBwdWJsaWM6
CiAgICAgICAgIFJlZjxOZXR3b3JrRXJyb3I+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3Rf
cmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE5ldHdvcmtFcnJvcikg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE5ldHdvcmtFcnJvcikgPT0gc2l6ZW9mKElu
c3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwor
ICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFz
ZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nh
c3Q8UmVmPE5ldHdvcmtFcnJvcj4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAt
NTEzLDcgKzUxMyw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0Zp
ZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRz
U2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1
cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAg
fQogfTsKIApAQCAtOTU0LDcgKzk1NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IC0gKHZvaWQpcmVzb3VyY2VMb2FkZWQKIHsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsKKyAgICBG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENo
YW5uZWwoKTsKICAgICBpZiAoIWZyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10
eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKaW5kZXggOWIzYWYyODE0N2NmZjkw
MDg0NTU1YjQwMjRlZjAyN2Q3NjljMDNmZi4uMDE4NDc4OTFiNTJkMmQ3MzRmNjNmOWQ1MjM0MDkx
MzI3ZGRiM2NiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdApAQCAt
MzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5h
dGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNw
YXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlz
cGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJh
Y2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdU
Rjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5k
ZXggMzhhZDc5OTNlYjhlYWQwMzZmYjRkMDMzMjg0NmYzMjMzNmEzYzQ3Yy4uM2E2MWM1MjMxZjQ1
YTJjMzExZDQ4YjZkOTgyMzhmN2RjYTA0YjZlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFs
LXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0
ZXJzLmpzb24tcmVzdWx0CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNz
IEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tl
bmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRj
aGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAg
ICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5k
RGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlz
cGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCkBAIC0zNTYsMTQgKzM1NiwxNCBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAg
IHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9y
ZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAg
ICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVy
PFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVm
PC8qS2V5UGF0aCovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAg
ICBCdWlsZGVyKFJlZjwvKktleVBhdGgqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAg
ICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVk
X2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTM4MSw5ICszODEsOSBAQCBwdWJsaWM6CiAgICAgICAg
IFJlZjxLZXlQYXRoPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihLZXlQYXRoKSA9PSBzaXplb2YoSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FT
U0VSVChzaXplb2YoS2V5UGF0aCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9j
YXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1
bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rv
ck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAg
IHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEtleVBhdGg+Kj4oJnJlc3Vs
dCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTM5Niw3ICszOTYsNyBAQCBwdWJsaWM6CiAgICAg
ICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAg
ICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1p
dGl2ZS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUt
dHlwZS5qc29uLXJlc3VsdAppbmRleCBhZjFkNTMwOTdjYTY3YWEwYTI4ZjRiMDRiNjA5ZjNhOTNi
NjBiMTkxLi4wMjM3YWUyYTQ3MWQ1NWRlNjQ4YWUwNjRkYTNjNTIxYzY5NmI4MjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKQEAg
LTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRy
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERp
c3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxC
YWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBX
VEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBw
cml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNv
bi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDRk
YTk3ZjQ4NGZmNjM1ZmM2M2MzNDZjYTE4ZGUzMjE4YTY5MjBiNGYuLjQ2ZmNlZDlkYjg5OTRiODQ3
MWI4N2ExY2UwMmMwYTQyMTUxZTM1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5
LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJl
c3VsdApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFz
cyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hl
cihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIo
UmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0
KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10
eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0Cmlu
ZGV4IGZiNGFlZDIwMTcwZGI5ZDUzZjI4MjM0YTU3OWNmNDA1NjExYmIzMmMuLmY1ZDU2YjM2NjQ5
OTNkZGQ0MDJhN2JhMDBkMjg3ZTQ2NTU1OTJiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LWVudW0tdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNv
bi1yZXN1bHQKQEAgLTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAot
Y2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3Bh
dGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsg
bV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRj
aGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERp
c3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVy
LmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9i
amVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQKaW5kZXggOWZiYjVmNTMzNDlmZTEyM2YwMDlkYzYzMGRiYWQ0ODQ3YTU5ZDFmMy4uYjVm
NGRhYTRhNDBhOGU4YTFkMjVmM2VlYTQwYzUyZjFmMGQ2OTk2NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2Jq
ZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTM5LDEyICszOSwxMiBAQAogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgewor
Y2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0
QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRp
c3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsg
fQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJh
Y2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tl
bmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKQEAgLTM2MywxNCArMzYzLDE0
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAK
ICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0
YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1
aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRl
cihSZWY8LypFcnJvciovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAg
ICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAg
ICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRl
ZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC0zOTUsOSArMzk1LDkgQEAgcHVibGljOgogICAgICAg
ICBSZWY8RXJyb3I+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FT
U0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7
CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0g
bV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmpl
Y3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAgICByZXR1
cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxFcnJvcj4qPigmcmVzdWx0KSk7CiAg
ICAgICAgIH0KICAgICB9OwpAQCAtNDExLDcgKzQxMSw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAg
ICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtNDI1LDE0ICs0MjUsMTQgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2
YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0
OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0
ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFU
RSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKk9w
dGlvbmFsUGFyYW1ldGVyQnVuZGxlKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmpl
Y3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUqL0luc3Bl
Y3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShv
YmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBO
b0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTQ0Myw5
ICs0NDMsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxPcHRpb25hbFBhcmFtZXRlckJ1bmRsZT4g
cmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09
IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChzaXplb2YoT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZihPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAg
ICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVm
PE9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07
CkBAIC00NTcsNyArNDU3LDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVy
PE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAg
IHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsK
ICAgICB9CiAKICAgICB2b2lkIHNldENvbHVtbk5hbWVzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+PiB2YWx1ZSkKQEAgLTUxMywxNCArNTEzLDE0IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVt
cGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUg
fCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypQYXJh
bWV0ZXJCdW5kbGUqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAg
ICAgQnVpbGRlcihSZWY8LypQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvck9iamVjdD4mJiBvYmpl
Y3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7
CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRl
cl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTU4MCw5ICs1ODAsOSBAQCBwdWJsaWM6
CiAgICAgICAgIFJlZjxQYXJhbWV0ZXJCdW5kbGU+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19u
b3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1
bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3Qp
OworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0g
c2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVm
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9u
TnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1
bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50
ZXJwcmV0X2Nhc3Q8UmVmPFBhcmFtZXRlckJ1bmRsZT4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0K
ICAgICB9OwpAQCAtNjAxLDcgKzYwMSw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMg
QnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWls
ZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwor
ICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKSk7CiAgICAgfQogfTsKIApAQCAtNjIxLDE0ICs2MjEsMTQgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxp
bnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+
Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKk9iamVjdFdpdGhQ
cm9wZXJ0eU5hbWVDb25mbGljdHMqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVj
dCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3Rz
Ki9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6
Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RB
VEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBA
IC02NzQsOSArNjc0LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8T2JqZWN0V2l0aFByb3BlcnR5
TmFtZUNvbmZsaWN0cz4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoT2JqZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZs
aWN0cykgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3Qp
OworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE9iamVjdFdpdGhQcm9wZXJ0eU5h
bWVDb25mbGljdHMpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAK
LSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9y
ZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+
IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAgICByZXR1cm4g
V1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29u
ZmxpY3RzPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC02OTMsNyArNjkzLDcg
QEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVh
dGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5v
RmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC03
MTYsMTQgKzcxNiwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNs
YXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwg
U1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0g
ICAgICAgIEJ1aWxkZXIoUmVmPC8qUGFyYW1ldGVyQnVuZGxlKi9JbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qUGFyYW1ldGVyQnVuZGxl
Ki9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6
Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RB
VEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBA
IC03NzYsOSArNzc2LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8UGFyYW1ldGVyQnVuZGxlPiBy
ZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0g
QWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZihQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNp
emVvZihQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3Rf
Y2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxQYXJhbWV0ZXJCdW5kbGU+
Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTc5Niw3ICs3OTYsNyBAQCBwdWJs
aWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNT
ZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1
bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggMDQ1Y2NiOGYyMGNmNTgzMDg3NDE4ZjA2OGZi
NWEwMDUxODliMzczYi4uZjQ5MDc1NjA1OTU4OGQ4Zjc1N2U1ODhkNGEwM2M0ZThiMGUzZjZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTM5LDEyICszOSwxMiBA
QAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVi
bGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6
bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7
IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hl
cj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0
Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJl
ZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAK
QEAgLTM2NywxNCArMzY3LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAg
ICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RB
VEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9
CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypUeXBlTmVlZGluZ0Nhc3QqL0luc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypUeXBlTmVlZGlu
Z0Nhc3QqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0
KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRl
KTsKQEAgLTQyMCw5ICs0MjAsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxUeXBlTmVlZGluZ0Nh
c3Q+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFU
RSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAgICAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKFR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKFR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNh
bm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPFR5cGVOZWVkaW5n
Q2FzdD4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNDM5LDcgKzQzOSw3IEBA
IHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRl
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0Zp
ZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogfTsKIApAQCAtNDY3
LDE0ICs0NjcsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFz
cyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBt
X3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNU
RVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBCdWlsZGVyKFJlZjwvKlJlY3Vyc2l2ZU9iamVjdDEqL0luc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypSZWN1cnNpdmVPYmplY3Qx
Ki9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6
Om1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RB
VEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBA
IC00ODUsOSArNDg1LDkgQEAgcHVibGljOgogICAgICAgICBSZWY8UmVjdXJzaXZlT2JqZWN0MT4g
cmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09
IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChzaXplb2YoUmVjdXJzaXZlT2JqZWN0MSkgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFJlY3Vyc2l2ZU9iamVjdDEpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5u
b3RfY2FzdCk7CiAKLSAgICAgICAgICAgIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgICAgIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxSZWN1cnNpdmVPYmpl
Y3QxPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC00OTksNyArNDk5LDcgQEAg
cHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmll
bGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiAKICAgICB2b2lkIHNl
dE9iaihSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj4g
dmFsdWUpCkBAIC01MTgsMTQgKzUxOCwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNU
QVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWls
ZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qUmVjdXJzaXZlT2JqZWN0MiovSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKlJl
Y3Vyc2l2ZU9iamVjdDIqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6
IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01Q
SUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9p
bml0X3N0YXRlKTsKQEAgLTUzNiw5ICs1MzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxSZWN1
cnNpdmVPYmplY3QyPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWN1cnNpdmVPYmplY3QyKSA9PSBzaXplb2Yo
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoUmVjdXJzaXZlT2JqZWN0MikgPT0gc2l6ZW9mKEluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAg
ICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVm
PFJlY3Vyc2l2ZU9iamVjdDI+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTU1
MCw3ICs1NTAsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVs
ZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1Nl
dD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJu
IEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0K
IAogICAgIHZvaWQgc2V0T2JqKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1
cnNpdmVPYmplY3QxPiB2YWx1ZSkKQEAgLTY5NiwxNiArNjk2LDE2IEBAIHZvaWQgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRW
YWx1ZUhhc0V4CiB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCi1SZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiBCaW5kaW5nVHJhaXRzPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OnJ1bnRpbWVDYXN0KFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiYmIHZhbHVlKQorUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6
OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+OjpydW50aW1lQ2FzdChSZWZQdHI8SW5z
cGVjdG9yVmFsdWU+JiYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQ7CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0OwogICAg
IGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChyZXN1bHQpOwogICAgIEFTU0VS
VF9VTlVTRUQoY2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5l
ZWRpbmdDYXN0Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUocmVzdWx0LmdldCgpKTsKICNl
bmRpZiAgLy8gIUFTU0VSVF9ESVNBQkxFRAotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNw
ZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3QpID09IHNpemVvZihJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCo+
KHN0YXRpY19jYXN0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSo+KHJlc3VsdC5nZXQo
KSkpOworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0
OjpUeXBlTmVlZGluZ0Nhc3QpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9j
YXN0X3Byb2JsZW0pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3QqPihzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3RCYXNl
Kj4ocmVzdWx0LmdldCgpKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKaW5kZXggZTQyOGY0
NWZmZDlkNmJlMGVkY2U3MTg3OTk3M2I5N2VjNzQzZjE5Ni4uNTAxN2U3MTYzZTdkMzg2ZmVlNjdl
OTVmYWIzYWM1MWYxOTAwNmMyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIFN0cmluZyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAogICAgIHJl
dHVybiBuYW1lLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiSlNDb250ZXh0IikgOiBuYW1lOwog
fQogCi12b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uKQor
dm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbikKIHsKICAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKIApAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2tlcigmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKLSAgICBtX2dsb2JhbE9iamVj
dC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgbV9nbG9iYWxPYmplY3QuaW5z
cGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJ
bnNwZWN0b3JEZXN0cm95ZWQpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6
ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlLmgKaW5kZXggOGM2ZWFiNzc2NjA4YjU0ODUwYjBhNGNkYjIzYjRiMjIzYmUy
OGRkMS4uZDZiNDcxY2Y3NjU2NWM5YjAyNjk5ODIwMmIyODFlNmNhMThmZWM1NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmgKQEAgLTMzLDcgKzMzLDggQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1lbnVtIGNsYXNzIEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb247CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CitlbnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFz
b247CiB9CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNMb2NhbERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgYXV0b21hdGljSW5zcGVj
dGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYzAw
MzczMDY4NjQwNGExOTdlOWE0OTE1NTgzOWYzMjYwYTNlODFmMy4uZmEwNTIyMzU5NWM5OTE5ZTQz
NmYzMmY0Zjc1OWEzNTJhNjMzZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg0MCw4ICs4
NDAsOCBAQCBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMHBhdXNlQW5pbWF0aW9u
QXRUaW1lRVBOU18xM1JlbmRlckVsZW1lbnRFUktOMwogX19aTjdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMjFwYXVzZVRyYW5zaXRpb25BdFRpbWVFUE5TXzEzUmVuZGVyRWxlbWVudEVSS04z
V1RGNlN0cmluZ0VkCiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIzNnNldEFsbG93
c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZEViCiBfX1pON1dlYkNvcmUxOUhUTUxUZXh0QXJl
YUVsZW1lbnQ4c2V0VmFsdWVFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxOUluc3BlY3Rv
ckNvbnRyb2xsZXIxNWNvbm5lY3RGcm9udGVuZEVQTjlJbnNwZWN0b3IyNEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbEViCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5l
Y3RGcm9udGVuZEVOOUluc3BlY3RvcjI1SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbkUKK19fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3Rv
cjE1RnJvbnRlbmRDaGFubmVsRWIKK19fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE4
ZGlzY29ubmVjdEZyb250ZW5kRU45SW5zcGVjdG9yMTZEaXNjb25uZWN0UmVhc29uRQogX19aTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMThzZXRQcm9maWxlckVuYWJsZWRFYgogX19aTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjVldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjZzZXRJbnNw
ZWN0b3JGcm9udGVuZENsaWVudEVQTlNfMjNJbnNwZWN0b3JGcm9udGVuZENsaWVudEUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKaW5kZXggYTcwNGNkOTg0ZWE4ZDM4ZWYwZjFjNWVlMjkwZGM1Mzg2YThi
NWYwYy4uM2U2ZjYzMjE2MTNiNjNkYjBkZWU3NTQwYTI0YmQ5YzU2ZTYwODVmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdl
bgogewogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcikKK3ZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6QXBwbGlj
YXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwogfQogCi12b2lkIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaAppbmRleCAwYjgxMzM1ZjUxY2UwYTZjOGY1MGI2Y2QzNzQ0YWQ2N2UwM2M5MzNkLi5m
MDhhY2UyMGY3MTcxODNhZDkwZDQ2ZmZkZTA2ZDNhNjM0Y2ZhNzY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250
ZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7
CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIH0KQEAgLTQ3
LDE0ICs0NywxNCBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBF
cnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IGZpbmFs
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNl
LCBwdWJsaWMgSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VB
Z2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCgpIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVB
cHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAgICAgdm9pZCBuZXR3b3JrU3RhdGVDaGFu
Z2VkKCk7CkBAIC03Miw4ICs3Miw4IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRMb2FkZXIqIGFz
c2VydEZyYW1lV2l0aERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiwgU3RyaW5nIGZyYW1lSWQp
OwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZGUxMTdjMTBiYTRmMzQ0YmM3MzFhMWQ5ZjQ3
OTAxMGQ4ZDg1OTBiYy4uODUzMjFkZDdkZDJmNzhiZWE5OWU1MmUyZjc2MGUwN2UyOTg4MDRhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBA
IC0zNTEsMTMgKzM1MSwxMyBAQCBJbnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50
KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZy
b250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
ckNTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IENT
U0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQog
Ci12b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCmluZGV4IDg4NjY0Yzg5NjBlM2ZjYmZmYzI4NmJjYzU5Zjk0MjFiZWJlNTBhYzMuLmU0YTYw
Mzc5NTRjMWEyNzBjN2JjOGQ4NTVhZmNiZWZlNzBmZmI3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3Mg
SW5zcGVjdG9yQ1NTRnJvbnRlbmREaXNwYXRjaGVyOworY2xhc3MgQ1NTRnJvbnRlbmREaXNwYXRj
aGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIENo
YW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQgZmluYWwKICAg
ICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JET01B
Z2VudDo6RE9NTGlzdGVuZXIKLSAgICAsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckNTU0Jh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgICwgcHVibGljIEluc3BlY3Rvcjo6Q1NTQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldDo6TGlz
dGVuZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNTU0FnZW50KTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTkxLDggKzkxLDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYpOwogCi0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdl
bnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsK
QEAgLTE2Myw4ICsxNjMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNldFBzZXVkb1N0YXRl
cygpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQ1NTRnJvbnRl
bmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JDU1NCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDU1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFn
ZW50OwogCiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9pZFRvSW5zcGVjdG9yU3R5bGVT
aGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCA3MmYyOTQ2OGNlYWRiNGVkNzVmM2RkNmFlMzM4NzhiOTQzYzRlYTMwLi5hMTli
YTRhOTlhMzliODE1YzlkM2JmMWVhYmJiMTQ5NWQ0YzA0ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBA
IEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5z
cGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5z
dHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywg
V2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX292ZXJsYXkoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQotICAg
ICwgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobnVsbHB0cikKKyAgICAsIG1fZnJvbnRlbmRD
aGFubmVsKG51bGxwdHIpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNw
ZWN0b3JDbGllbnQpCkBAIC0xODQsNyArMTg0LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6fklu
c3BlY3RvckNvbnRyb2xsZXIoKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Rl
ZFBhZ2VEZXN0cm95ZWQoKQogewotICAgIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RG
cm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOwogICAg
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjb25uZWN0KCk7CiAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbnVs
bHB0cjsKQEAgLTIzMiwxOSArMjMyLDE5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvCiAgICAg
ICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQtPndpbmRvd09iamVjdENsZWFyZWQoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rp
b24pCiB7CiAgICAgQVNTRVJUKGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgQVNTRVJUKG1faW5zcGVj
dG9yQ2xpZW50KTsKLSAgICBBU1NFUlQoIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsKLSAg
ICBBU1NFUlQoIW1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIpOworICAgIEFTU0VSVCghbV9m
cm9udGVuZENoYW5uZWwpOworICAgIEFTU0VSVCghbV9iYWNrZW5kRGlzcGF0Y2hlcik7CiAKICAg
ICBtX2lzQXV0b21hdGljSW5zcGVjdGlvbiA9IGlzQXV0b21hdGljSW5zcGVjdGlvbjsKIAotICAg
IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0gZnJvbnRlbmRDaGFubmVsOwotICAgIG1faW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENo
YW5uZWw7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoZnJvbnRlbmRDaGFubmVsKTsKIAotICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChmcm9udGVuZENoYW5uZWwsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0
KCkpOworICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChmcm9udGVuZENo
YW5uZWwsIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoKm1faW5zdHJ1bWVudGluZ0Fn
ZW50cyk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENyZWF0ZWQoKTsK
QEAgLTI1NSwxNiArMjU1LDE2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZy
b250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFuCiAjZW5kaWYKIH0K
IAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKLSAgICBpZiAoIW1faW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAgIGlmICghbV9mcm9udGVuZENoYW5uZWwpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fYWdlbnRzLndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KHJlYXNvbik7CiAKLSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250
ZW5kKCk7Ci0gICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwotICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsKKyAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5jbGVhckZyb250ZW5kKCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwor
ICAgIG1fZnJvbnRlbmRDaGFubmVsID0gbnVsbHB0cjsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNw
ZWN0aW9uID0gZmFsc2U7CiAKQEAgLTI4NiwxMCArMjg2LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2hvdygpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKKyAgICBpZiAobV9mcm9udGVuZENo
YW5uZWwpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgp
OwogICAgIGVsc2UgewotICAgICAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRo
aXMpKSB7CisgICAgICAgIGlmIChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKSkg
ewogICAgICAgICAgICAgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKICAgICAg
ICAgICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwsIGlzQXV0b21hdGljSW5zcGVj
dGlvbik7CiAgICAgICAgIH0KQEAgLTI5OCw5ICsyOTgsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNob3coKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKIHsKLSAg
ICBpZiAoIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAgIGlmICghbV9mcm9udGVuZENo
YW5uZWwpCiAgICAgICAgIHJldHVybjsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBkaXNjb25uZWN0RnJv
bnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKICAgICBtX2luc3Bl
Y3RvckNsaWVudC0+Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogfQogCkBAIC0zNTIsOCArMzUy
LDggQEAgUGFnZSYgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZSgpIGNvbnN0CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAobV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcikKLSAgICAgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVz
c2FnZSk7CisgICAgaWYgKG1fYmFja2VuZERpc3BhdGNoZXIpCisgICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPmRpc3BhdGNoKG1lc3NhZ2UpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmhpZGVIaWdobGlnaHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKaW5kZXggYjI2NDIyYjc3NTNlMGM0MjZmNTA5OTUxNTZjZGYwM2Q1NDlm
M2UyMS4uM2M3ZmI5OWVmNjJhZDY0Y2ZjMmI2ZTk5ZThlYzAyY2YzZWQzMjBjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00Miw5ICs0
Miw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgeworY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7
CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0
OwogCiBuYW1lc3BhY2UgUHJvdG9jb2wgewpAQCAtOTQsMTIgKzk0LDEyIEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAKLSAgICBib29sIGhhc0Zyb250ZW5kKCkgY29uc3QgeyByZXR1
cm4gISFtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQorICAgIGJvb2wgaGFzRnJvbnRlbmQo
KSBjb25zdCB7IHJldHVybiAhIW1fZnJvbnRlbmRDaGFubmVsOyB9CiAgICAgYm9vbCBoYXNMb2Nh
bEZyb250ZW5kKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW1vdGVGcm9udGVuZCgpIGNvbnN0Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9u
dGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0
aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24pOwogICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBwcml2YXRl
OgogICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKICAg
ICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBtX3RpbWVsaW5lQWdlbnQ7CiAKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjsKLSAgICBJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9p
bnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVj
dXRpb25TdG9wd2F0Y2g7CiAgICAgUGFnZSYgbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCog
bV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
IG1fYWdlbnRzOworICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsKICAgICBW
ZWN0b3I8SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLCAyPiBtX2luamVjdGVkU2NyaXB0
SW5zdHJ1bWVudGF0aW9uQ29va2llczsKICAgICBib29sIG1faXNVbmRlclRlc3Q7CiAgICAgYm9v
bCBtX2lzQXV0b21hdGljSW5zcGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDE3ZWI2ODE4MTkxMDMzODRmNTBmMWZlMjI1OWUw
MDJkYzYzMjljOGMuLjBiOGY5NDFiMDIwZDI4ODlhNjViOWQ4ZDE2NzA3Y2NmOWNhMGZmZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
MjIxLDEwICsyMjEsMTAgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCgp
CiAgICAgQVNTRVJUKCFtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi12b2lkIEluc3BlY3RvckRP
TUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShi
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAKICAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CiAgICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPERPTUVkaXRvcj4obV9oaXN0b3J5LmdldCgpKTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcgogICAgICAgICBmb2N1c05vZGUoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBm
ODM5NzkyYmIyNWM5YTViMzdmNzA1NDcyZmM0NjhhMzcxNjE2MDE4Li45ZmM5NTI1ZGI3Y2ZjNDI1
ZmFlOWYxMzliOWZkZTdiMTc5YWE2ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtOTEsNyArOTEsNyBAQCBzdHJ1Y3QgRXZlbnRMaXN0ZW5l
ckluZm8gewogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5lclZlY3Rv
cjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3Rv
ckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01BZ2VudCk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMDksOCArMTA5LDggQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIFN0cmluZyB0b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNv
ZGUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxE
b2N1bWVudCo+IGRvY3VtZW50cygpOwogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTI0Niw4ICsyNDYs
OCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAg
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNw
YXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRj
aGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6
OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRy
PEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAg
ICAgRE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVuZXI7CiAgICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVu
dE5vZGVUb0lkTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIEJhY2tlbmRO
b2RlSWQ+IE5vZGVUb0JhY2tlbmRJZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCAzZDBiYmFjNTYxYjhl
YjE0NDc0NzI4MmUwODg0ZDcwNGE1YmNjYjI3Li5mNzc4ZGQ5NjJjYjJkZGMxNjA2MzE3NDZhOTk1
YmRkYTBhOWIyNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogICAgIGNsZWFyKCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yOjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24pCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSYgbm9kZSkK
ICAgICBpZiAoaGFzQnJlYWtwb2ludCgmbm9kZSwgQXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAg
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgQXR0cmlidXRlTW9k
aWZpZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQt
PmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5i
cmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTI3MCw3ICsyNzAs
NyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKE5v
ZGUmIHBhcmVudCkKICAgICBpZiAoaGFzQnJlYWtwb2ludCgmcGFyZW50LCBTdWJ0cmVlTW9kaWZp
ZWQpKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQocGFyZW50
LCBTdWJ0cmVlTW9kaWZpZWQsIHRydWUsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVi
dWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVn
Z2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0KIApAQCAt
MjgwLDExICsyODAsMTEgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVt
b3ZlRE9NTm9kZShOb2RlJiBub2RlKQogICAgIGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBOb2Rl
UmVtb3ZlZCkpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChu
b2RlLCBOb2RlUmVtb3ZlZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVi
dWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVn
Z2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0gZWxzZSBpZiAo
cGFyZW50Tm9kZSAmJiBoYXNCcmVha3BvaW50KHBhcmVudE5vZGUsIFN1YnRyZWVNb2RpZmllZCkp
IHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBTdWJ0
cmVlTW9kaWZpZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2Vy
QWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTI5Myw3
ICsyOTMsNyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxNb2RpZnlET01B
dHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKGhhc0JyZWFrcG9pbnQoJmVsZW1lbnQsIEF0
dHJpYnV0ZU1vZGlmaWVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZvckRP
TUV2ZW50KGVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgp
KTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CiAgICAgfQogfQogCkBAIC0zNjcsOSArMzY3LDkgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQsIGNvbnMK
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOwogICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJldmVudE5hbWUiLCBmdWxsRXZlbnRO
YW1lKTsKICAgICBpZiAoc3luY2hyb25vdXMpCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2
ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpFdmVudExpc3RlbmVyLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiAgICAgZWxzZQot
ICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5z
cGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwg
V1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxl
UGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uOjpFdmVudExpc3RlbmVyLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVy
bCkKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VVJMIiwgYnJl
YWtwb2ludFVSTCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAg
bV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6WEhSLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgbV9kZWJ1
Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0
Y2hlcjo6UmVhc29uOjpYSFIsIFdURjo6bW92ZShldmVudERhdGEpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50OjpjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCA0NjZmMDNlNTcxY2Y4
NjcwNDNkYmNiNWJlODRiNjVmYWM3ZGFkMzkxLi5hZmUzY2ZiOWQzMDk1NWRmYTMzMjk1ZWYwOTll
YmZmY2EyNDdjZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgTm9kZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3Rvcjo6SW5z
cGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyLCBwdWJsaWMg
SW5zcGVjdG9yOjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZv
aWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoYm9vbCBpc0RPTUV2ZW50LCBjb25zdCBTdHJp
bmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0b3JE
T01BZ2VudCogbV9kb21BZ2VudDsKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQqIG1fZGVidWdnZXJBZ2VudDsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JET01E
ZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CiAgICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7CiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzOwogICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX3hockJyZWFrcG9pbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCBmYjA4OWEzOGY4MzIy
NmQ1OWNlNTI4NmZiZTBhNTI4OGI5MDU3OTE4Li44ZTUyM2ZmYjhjZDRmZGZmYmQ0ZDZhNjZlMzM0
ZDNmNTgwYjA3ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNjYsMTMgKzY2LDEzIEBAIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6fkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpCiAgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzID0gbnVsbHB0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1f
YmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51
bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IDM2MWI2
MTNjYzFkNzU3ZDQ0NjZkZjI4OWY3ZTk2ZmFlZDBhMmFjNWQuLmJlYmQxZWY0MTJmMmRiZmI2MTNh
NzEzYWJkNDhhNzI0NDJkMzZiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBE
T01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFz
cyBJbnNwZWN0b3JET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC01MSwxNCArNTEsMTQgQEAgY2xhc3MgU3RvcmFnZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3Rv
ckRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtNzgsOCArNzgsOCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVycm9yU3Ry
aW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmLCBGcmFtZSom
KTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9N
U3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5k
RGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1fZW5hYmxlZDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcAppbmRleCA0NGRhYTg2NTc2N2UzY2I3MjRkYTk3NGEwMjhjYjlkZTI2ZGY4MjUzLi45
MTM0ZGZlNDdjNzljNmM2ZWY0NDEzNDQ1MjBiNzA0NmUxZDVkYzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQ2FsbGJhY2sgRXhlY3V0ZVNRTENh
bGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpFeGVjdXRlU1FMQ2FsbGJhY2sgRXhlY3V0ZVNRTENhbGxiYWNrOwogCiB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCkBAIC0yMjIsMTMgKzIyMiwxMyBAQCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50Ojp+SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JEYXRhYmFzZUFnZW50KG51bGxwdHIpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5l
bCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVu
ZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBu
dWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IDJlODY4OTc1
ZjE2ZmNiMTY3OGRiZGIzZGFjZjIxZTE3Y2VkMThjY2UuLjNmZGFhMmNiNzQxOGU1MjMwYTJmZjli
YWFkMDRmNmU2ZjNmMmFkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAtNDcsMTQgKzQ3LDE0IEBAIGNsYXNzIEluc3RydW1l
bnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
eworY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VzKCk7CiAKQEAgLTcyLDggKzcyLDgg
QEAgcHJpdmF0ZToKICAgICBEYXRhYmFzZSogZGF0YWJhc2VGb3JJZChjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWQpOwogICAgIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UqIGZpbmRCeUZpbGVOYW1l
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2U+PiBEYXRhYmFzZVJlc291cmNlc01hcDsKICAgICBEYXRhYmFzZVJlc291
cmNlc01hcCBtX3Jlc291cmNlczsKICAgICBib29sIG1fZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRl
eCA0NmVkZjMxM2M2ODYzZTZjYWYyN2FkYjJkZjRiNjIzZDhhNzY4Y2VlLi42YzNjOWUyM2Q2NmYw
ZGQyMjNjNDNhNzkxYmRjNzFhNWI1Y2NiNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCkBAIC01NCw3ICs1NCw3
IEBAIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uo
UmVmUHRyPERhdGFiYXNlPiYmIGRhdGFiYXNlCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciogZGF0
YWJhc2VGcm9udGVuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6
OmJpbmQoSW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciogZGF0YWJhc2VGcm9u
dGVuZERpc3BhdGNoZXIpCiB7CiAgICAgYXV0byBqc29uT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkRhdGFiYXNlOjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQobV9pZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5oCmluZGV4IDI5NTY3MmMxN2E5OWIzNWU4YjQ3ODg3YmEyYmNmZGM3ODA4ODE1MjYuLjZk
Yjg1YzljNDhkYTY5OTAxYTM4NzU2M2E1MDBhOGY0NjA2ZDY1NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaApAQCAtNDQs
NyArNDQsNyBAQCBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlIDogcHVibGljIFJlZkNv
dW50ZWQ8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxEYXRhYmFzZT4mJiwg
Y29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uKTsKIAotICAgIHZvaWQgYmluZChJbnNwZWN0b3I6Okluc3BlY3RvckRhdGFiYXNlRnJv
bnRlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCBiaW5kKEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9u
dGVuZERpc3BhdGNoZXIqKTsKICAgICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2Rh
dGFiYXNlLmdldCgpOyB9CiAgICAgdm9pZCBzZXREYXRhYmFzZShSZWZQdHI8RGF0YWJhc2U+JiYg
ZGF0YWJhc2UpIHsgbV9kYXRhYmFzZSA9IGRhdGFiYXNlOyB9CiAgICAgU3RyaW5nIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZvcndhcmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGb3J3YXJkaW5nLmgKaW5kZXggNmMyN2QyMDAzNTRlNzliN2M4YjZkYzBiNDE2ZTc2MTMzNWNj
ZjFlYy4uMjUwOGJiMTkzMjcxOGQ4YTlhOThmODRkOGJjZmYwYTQ0ZWZlYmU5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci10eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK3R5cGVkZWYgSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogfQogCiAjZW5kaWYgLy8g
IWRlZmluZWQoSW5zcGVjdG9yRm9yd2FyZGluZ19oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggN2E2NDk1ZjEzNDQx
NzZmNDExNDgxMTFhYTRhMDZlYTZmODQzYmQ5ZS4uOTQ5Y2JlNzBkZTJmN2U1MzdjOGY1Nzc2NDY1
YTQ0YmE5MjE2MTA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC03NywxMSArNzcsMTEgQEAgdXNpbmcgSW5zcGVj
dG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5nZTsKIHVzaW5nIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU7CiB1c2luZyBJbnNwZWN0b3I6OlByb3RvY29s
OjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg7CiAKLXR5cGVkZWYgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RDYWxsYmFjazsKLXR5
cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFtZXNDYWxs
YmFjazsKLXR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OlJlcXVlc3REYXRhYmFzZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxi
YWNrOwotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVxdWVzdERhdGFDYWxsYmFjayBSZXF1ZXN0RGF0YUNhbGxiYWNrOwotdHlw
ZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrIENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjazsKK3R5
cGVkZWYgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIFJlcXVlc3RD
YWxsYmFjazsKK3R5cGVkZWYgSW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2sgUmVxdWVzdERhdGFiYXNlTmFtZXND
YWxsYmFjazsKK3R5cGVkZWYgSW5zcGVjdG9yOjpJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlJlcXVlc3REYXRhYmFzZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwor
dHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVx
dWVzdERhdGFDYWxsYmFjayBSZXF1ZXN0RGF0YUNhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6
OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q2xlYXJPYmplY3RTdG9yZUNhbGxi
YWNrIENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjazsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIApAQCAtNTc1LDEyICs1NzUsMTIgQEAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6On5JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JJbmRleGVkREJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpJbmRleGVk
REJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbikKIHsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXgg
NzcyMGIzYTlhYWVjOTlkYjIwN2U5YzkzNDQ5NWM2OWY1NzdmMTMyMS4uNGQyYzE2OTgyMjhkNjMz
ZDM5ZGYyOTg5NWI3MGJkYzkwMWNhMDIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTQ3LDEzICs0NywxMyBAQCBjbGFz
cyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1j
bGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwg
SW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxl
ZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsK
ICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAK
aW5kZXggYzU5MDJiYTc3N2IwMzYwZTEwMWI3YTVmMDFlYmEyODI4NTU2YzM5YS4uYmU2NDQ5NmU0
NjM4ZDAwYzNlYzI4OTA4NjU2YWU2NzdhNzM4OTc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC01NiwxMyArNTYs
MTMgQEAgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6On5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCgp
CiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVl
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6TGF5ZXJUcmVl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggMTY2ZTlhNjE4ZjE1YzM1MWEwOTJhMmYw
YWNmYzNkNDAzYTBiN2NjYS4uNWFiYzEzNzUzMjU2ZDg0NDUyNmUyYjM1OThmNGFjMTJiM2NlNTc1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwog
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBw
dWJsaWMgSW5zcGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBj
YWxsYmFja3MuCkBAIC04MSw4ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGJpbmRQc2V1
ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqKTsKICAgICB2b2lkIHVuYmluZFBzZXVkb0VsZW1lbnQo
UHNldWRvRWxlbWVudCopOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yTGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpMYXll
clRyZWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0
cjxJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogCiAgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVu
dExheWVyVG9JZE1hcDsKICAgICBIYXNoTWFwPFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBt
X2lkVG9MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKaW5kZXggOTFjNzM4MDJmNWU3MDQwMzA4NGYwM2Q0ZjNmOTJhYTM5ZjRiZThiNi4u
NmMxNmIyY2ZmMjUxZmM0Yzg2MWI5OGJjOGE4MDdmOWM0ZDgzN2Q0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMzNywxMyArMzM3
LDEzIEBAIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
IHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5l
bCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIo
KTsKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1Bh
aW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpCiAgICAgbV9vdmVybGF5LT5zZXRTaG93
aW5nUGFpbnRSZWN0cyhzaG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNj
cmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyYsIEluc3BlY3RvclBhZ2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlJlc3VsdCogc3RhdHVzKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UGFnZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0KiBzdGF0dXMpCiB7CiAgICAgYm9vbCBkaXNh
YmxlZEJ5U2NyaXB0Q29udHJvbGxlciA9IGZhbHNlOwogICAgIGJvb2wgZGlzYWJsZWRJblNldHRp
bmdzID0gZmFsc2U7CkBAIC02NjgsMTQgKzY2OCwxNCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yUGFnZUJh
YwogICAgIH0KIAogICAgIGlmICghZGlzYWJsZWRCeVNjcmlwdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgKnN0YXR1cyA9IEluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3Vs
dDo6QWxsb3dlZDsKKyAgICAgICAgKnN0YXR1cyA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6UmVzdWx0OjpBbGxvd2VkOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgaWYgKGRpc2FibGVkSW5TZXR0aW5ncykKLSAgICAgICAgKnN0YXR1cyA9IEluc3BlY3Rv
clBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6RGlzYWJsZWQ7CisgICAgICAg
ICpzdGF0dXMgPSBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3Vs
dDo6RGlzYWJsZWQ7CiAgICAgZWxzZQotICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9yUGFnZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0OjpGb3JiaWRkZW47CisgICAgICAgICpzdGF0
dXMgPSBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6Rm9y
YmlkZGVuOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyaXB0RXhlY3V0aW9u
RGlzYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGJmZDU3NzUxNzcwY2U3NjBiZDdjY2Qz
ODlhYTJiY2RkNTQwNTdlMTguLmNjNmUxMGZhZmNlZmU4YTgzY2U0NWJlNTM5YjIwZjI2NDJhMzI0
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgK
QEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvclBhZ2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFs
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
UGFnZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNldERvY3VtZW50Q29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBodG1sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJ
bnNwZWN0b3I6Okluc3BlY3RvclBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdCop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJy
b3JTdHJpbmcmLCBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3Vs
dCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxl
ZChFcnJvclN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb3Vj
aEVtdWxhdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwpAQCAtMTM5LDggKzEzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBB
UEkKICAgICBQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CkBAIC0xNjgsOCArMTY4LDgg
QEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNv
dXJjZVRyZWU+IGJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CiAgICAgUGFnZSogbV9w
YWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yUGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yUGFnZUJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKICAgICBJbnNwZWN0b3JPdmVybGF5KiBtX292ZXJsYXk7CiAgICAgbG9uZyBtX2xhc3RTY3Jp
cHRJZGVudGlmaWVyOwogICAgIFN0cmluZyBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2Fk
T25jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBs
YXlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdl
bnQuY3BwCmluZGV4IDZlY2Q3YzBmYmVmYjUyZDYwYmViMTJlZDFiYzIyOWIwOWYwZmY5ZGYuLjJm
Njg3NTMyMDU5Njk3NDgxOGY2MmE2NWQxOGU5NzYzZDM0NDY3YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcApAQCAtMTY3LDEwICsx
NjcsMTAgQEAgV2ViQ29yZTo6U2Vzc2lvblN0YXRlIEluc3BlY3RvclJlcGxheUFnZW50OjpzZXNz
aW9uU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnNl
c3Npb25TdGF0ZSgpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JSZXBs
YXlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSZXBs
YXlGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IEluc3BlY3Rvcjo6UmVwbGF5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvclJlcGxheUFnZW50KHRoaXMpOwogICAgIEFTU0VSVChzZXNzaW9uU3RhdGUoKSA9PSBX
ZWJDb3JlOjpTZXNzaW9uU3RhdGU6OkluYWN0aXZlKTsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lk
IEluc3BlY3RvclJlcGxheUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKgogICAgICAgICBtX3NlZ21lbnRzTWFwLmFkZCgoKml0KS0+aWRl
bnRpZmllcigpLCAqaXQpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJ
bnNwZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVs
bHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCmluZGV4IDM2MzJjNGY0MTNlNGNm
MmQwYzM0OWUyZmMyZTIzN2I1MWQwYzEyMzUuLjMzYmYyOWMxMWE1MTBjYmE5MzNmODVhZTVhMmU1
ZjIyNDA2NTYwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXBsYXlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXBsYXlBZ2VudC5oCkBAIC01OCwxNCArNTgsMTQgQEAgdHlwZWRlZiBpbnQgU2VnbWVudElkZW50
aWZpZXI7CiAKIGNsYXNzIEluc3BlY3RvclJlcGxheUFnZW50IGZpbmFsCiAgICAgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlCi0gICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JSZXBs
YXlCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworICAgICwgcHVibGljIEluc3BlY3Rvcjo6UmVw
bGF5QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JSZXBsYXlBZ2VudCk7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yUmVwbGF5QWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwg
fkluc3BlY3RvclJlcGxheUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgogICAgIHZv
aWQgZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqKTsKQEAgLTExNCw4ICsxMTQsOCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gZmluZFNlZ21lbnQoRXJy
b3JTdHJpbmcmLCBTZWdtZW50SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6U2Vzc2lvblN0YXRl
IHNlc3Npb25TdGF0ZSgpIGNvbnN0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yUmVwbGF5RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsK
LSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpSZXBs
YXlGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlJlcGxheUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwog
ICAgIFBhZ2UmIG1fcGFnZTsKIAogICAgIEhhc2hNYXA8aW50LCBSZWZQdHI8UmVwbGF5U2Vzc2lv
bj4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PGludD4+IG1fc2Vzc2lvbnNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggNDkyMmYzMTg5OTZjNTg4NDZlNmVmZGI0
ZDQxNjE2MDg4ZmZhYTJkMC4uZjliYmY4MDhlMGIyMTYyYjZlYzgxODNhNjA3OThhZTQwYjUxOTE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCi10eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6TG9hZFJlc291cmNlQ2FsbGJhY2sgTG9hZFJlc291cmNlQ2FsbGJhY2s7Cit0eXBl
ZGVmIEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6TG9hZFJlc291
cmNlQ2FsbGJhY2sgTG9hZFJlc291cmNlQ2FsbGJhY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTczLDEzICsxNzMsMTMgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvck5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3b3Jr
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQor
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IGU4
NDY1OTFiMWQ0ZjUyOTEyMzAyN2MwY2FhNWM2Nzc5NTk3ZDNkMTUuLjg0YzNiZmRjZTRkODExNGRl
NTM2NzA5ZGYyMTYwNTQ5NGMwZTA0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNzMsMTQgKzczLDE0IEBAIHN0cnVjdCBX
ZWJTb2NrZXRGcmFtZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIElu
c3BlY3RvclJlc291cmNlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBw
dWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKK2NsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQq
LCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSZXNvdXJjZUFnZW50
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5
bGUoKTsKQEAgLTEzOCw4ICsxMzgsOCBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNo
ZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtS
ZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAg
Ym9vbCBtX2NhY2hlRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggNmY4MjM3NmM4MWNlZmM5NzY2NTExM2ZiZWJkMmQ5
MTAyZTlhM2VmYy4uNmU0NzFjNDRhZTU0ZjBhM2E2NzY3MjI0ODk3MGVjZGYwNjk4MTFmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApA
QCAtMzk5LDcgKzM5OSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxl
PiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvCiAKICAgICAgICAgLy8g
VmlzdWFsIFN0dWRpbyBkaXNhZ3JlZXMgd2l0aCBvdGhlciBjb21waWxlcnMgYXMgdG8gd2hldGhl
ciAnY2xhc3MnIGlzIG5lZWRlZCBoZXJlLgogI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgICAgIGVu
dW0gY2xhc3MgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1cyBzdGF0
dXM7CisgICAgICAgIGVudW0gY2xhc3MgUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXMg
c3RhdHVzOwogI2Vsc2UKICAgICAgICAgZW51bSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1Byb3BlcnR5U3RhdHVzIHN0YXR1czsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IGI5MjJjNzhjZmY5NmVh
NDNmZDM5OTBiYjZiOGQ3ZjAyODU1OTI2YjkuLjFhNGQ2ZTc3MzJiNTZiODU2YTE1MjA2MTQwMWY0
M2ViOGNlNThmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTYyLDEwICs2MiwxMCBAQCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
LSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0ZW50SW5z
cGVjdG9yVGltZWxpbmVBZ2VudCh0aGlzKTsKIApAQCAtNzMsMTQgKzczLDE0IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvCiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXItPnJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24p
Cit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
IAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGVyc2lzdGVudEluc3BlY3RvclRpbWVs
aW5lQWdlbnQobnVsbHB0cik7CiAKLSAgICBpZiAocmVhc29uICE9IEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCkgeworICAgIGlmIChyZWFzb24gIT0g
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpIHsK
ICAgICAgICAgaWYgKG1fc2NyaXB0RGVidWdTZXJ2ZXIpCiAgICAgICAgICAgICBtX3NjcmlwdERl
YnVnU2VydmVyLT5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGVhNDQ4
NWIzMmQzMmNkNjNhNzllMmFmYTNmZjc4NWZkMWFkOWM2MzQuLjQ1YWY2MzU5OWY4Y2U3ZDM1Zjcx
OTExZGE4OTE2MjdkMGNmOWVjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMTA3LDcgKzEwNyw3IEBAIGVudW0gY2xhc3Mg
VGltZWxpbmVSZWNvcmRUeXBlIHsKIAogY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCBmaW5h
bAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQotICAgICwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICAsIHB1Ymxp
YyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgLCBwdWJs
aWMgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTExNyw4ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yVHlw
ZSwgSW5zcGVjdG9yQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCA9IG51
bGxwdHIpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CkBAIC0yMjksOCArMjI5LDggQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JQYWdlQWdl
bnQqIG1fcGFnZUFnZW50OwogICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciogbV9zY3JpcHREZWJ1
Z1NlcnZlcjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVs
aW5lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRl
bmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogCiAgICAg
VmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50cnk+IG1fcmVjb3JkU3RhY2s7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDNiYjE0
MDNlYjBiZTY3NWY5ODk0MmU0MGM4OWU1NTI5YTQ3YjAxNzIuLmQ4NGJiMDU5YmZkYmMwNTMyMjM3
YTQ0YzI2NDhhYThhYjUzOTRlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVs
IDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3IgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFdvcmtlckZyb250
ZW5kQ2hhbm5lbChJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXIqIGZyb250ZW5kRGlz
cGF0Y2hlciwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogcHJveHkpCisgICAgZXhwbGljaXQgV29y
a2VyRnJvbnRlbmRDaGFubmVsKEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBm
cm9udGVuZERpc3BhdGNoZXIsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHByb3h5KQogICAgICAg
ICA6IG1fZnJvbnRlbmREaXNwYXRjaGVyKGZyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgLCBt
X3Byb3h5KHByb3h5KQogICAgICAgICAsIG1faWQoc19uZXh0SWQrKykKQEAgLTkyLDcgKzkyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpc3BhdGNoTWVzc2Fn
ZUZyb21Xb3JrZXIobV9pZCwgbWVzc2FnZU9iamVjdCk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9y
V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNw
ZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlciogbV9mcm9udGVuZERpc3BhdGNoZXI7CiAg
ICAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogbV9wcm94eTsKICAgICBpbnQgbV9pZDsKICAgICBi
b29sIG1fY29ubmVjdGVkOwpAQCAtMTE0LDEzICsxMTQsMTMgQEAgSW5zcGVjdG9yV29ya2VyQWdl
bnQ6On5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JXb3JrZXJBZ2VudChudWxscHRyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hl
cikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFj
a2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6V29ya2Vy
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvcldvcmtlckFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24p
CiB7CiAgICAgbV9zaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQgPSBmYWxzZTsKICAg
ICBFcnJvclN0cmluZyB1bnVzZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4IDY4NjlkNWE2ODA0ZjcyOTgwYjA2NzJiMDliNmNhM2Ni
ODgwMmZhZmIuLjRlNzNjZmI5MTcwZjIzNDBiYjA0ODljNmQ5MWFmM2M5ZjM5OGE1OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC0z
OCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwotY2xhc3MgSW5zcGVjdG9yV29ya2VyRnJvbnRlbmREaXNwYXRjaGVyOworY2xhc3MgV29y
a2VyRnJvbnRlbmREaXNwYXRjaGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwx
NCArNDgsMTQgQEAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQcm94eTsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IGZpbmFsIDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yV29ya2Vy
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IGZp
bmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6V29ya2Vy
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0b3JXb3JrZXJBZ2VudChJbnN0cnVtZW50aW5n
QWdlbnRzKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yV29ya2VyQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbgogICAgIGJvb2wgc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0
YXJ0KCkgY29uc3Q7CkBAIC03Niw4ICs3Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVX
b3JrZXJGcm9udGVuZENoYW5uZWwoV29ya2VyR2xvYmFsU2NvcGVQcm94eSosIGNvbnN0IFN0cmlu
ZyYgdXJsKTsKICAgICB2b2lkIGRlc3Ryb3lXb3JrZXJGcm9udGVuZENoYW5uZWxzKCk7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvcldvcmtlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9v
bCBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDdhN2I3NjI0MjU5ZmJjYjYy
NjlmMTI1ZTk2YWU1ZTJhNmQ2YmU2NTQuLmUxMjNjMGIzNTlkNjc4MmRiMjQ3MDJkZjA3ZjgyODI4
ZTFjNzFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGlt
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTU5LDEzICs1OSwxMyBAQCBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFn
ZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLAogewogfQog
Ci12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFBhZ2VSdW50aW1l
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVs
KTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IElu
c3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOwogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBQYWdl
UnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVs
bHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCBmODJjZmMwMTBjNzI2OTIzY2QzOTNj
OTZiODAzM2ZmOTcyODkzODhiLi5lN2IyYzI0ZDhkMGU1NDQ5Y2U3MmYxMTk0YzhkMjM0YjczMGZh
YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAg
LTU2LDggKzU2LDggQEAgcHVibGljOgogICAgIFBhZ2VSdW50aW1lQWdlbnQoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBQYWdlKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAg
dmlydHVhbCB+UGFnZVJ1bnRpbWVBZ2VudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24p
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogCkBA
IC03NCw4ICs3NCw4IEBAIHByaXZhdGU6CiAKICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAg
ICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7
CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwogICAgIGJvb2wgbV9tYWluV29ybGRDb250ZXh0Q3JlYXRlZDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCA3NzdjZjcyMzNhZDcyZTQyNmYxOGI0ODBmZmJlN2QyOThkMTRlY2Vj
Li5mMWZlNDEwMDVhZGZlYTRiYzAxZTBhZDViNzdmNThmMGI5NmMyNzBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC0xMDgsMTggKzEwOCwxOCBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAogV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoKQogewogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+cmVzZXQoKTsKLSAgICBkaXNjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKTsKKyAgICBk
aXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRU
YXJnZXREZXN0cm95ZWQpOwogfQogCiB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNv
bm5lY3RGcm9udGVuZCgpCiB7CiAgICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CiAgICAg
bV9mcm9udGVuZENoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VJbnNwZWN0b3JQcm94eT4o
bV93b3JrZXJHbG9iYWxTY29wZSk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOworICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRl
bmRDaGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQobV9mcm9udGVuZENoYW5uZWwuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwog
fQogCi12b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiBy
ZWFzb24pCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggZjg3Nzk0Mzc4MzkzYTMxZDMyMGJhNDRlMjI4OWIzMzU2MTQ1ZjJmZC4uOTY3
NDA4M2NkZWNhZGM5MWU1MDMwMjIyN2ZkYzRkMWE5MThiZWEwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00MSwx
MCArNDEsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI7Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOwpAQCAtNjEsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcigpOwogCiAgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoKTsKLSAg
ICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pOworICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCByZXN1bWUoKTsKIApAQCAtODEsMTAgKzc3LDEwIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEluc3RydW1lbnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPiBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcjsKICAgICBXb3JrZXJSdW50aW1lQWdlbnQqIG1fcnVudGltZUFnZW50Owot
ICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsK
KyAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsPiBtX2Zyb250ZW5kQ2hhbm5lbDsKICAgICBS
ZWY8V1RGOjpTdG9wd2F0Y2g+IG1fZXhlY3V0aW9uU3RvcHdhdGNoOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUsIDI+IG1faW5q
ZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCA3NjkwNDllMzIyZjVh
NjU5OTQzYWE2NzBiMDJiZDkyNTMyZDNiNzhjLi45ZWEyODVjNmVkZTJkM2NmMjVhNWI2Mjg4ZWE4
MzlmY2IzZTc2YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVu
dGltZUFnZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFdvcmtlclJ1bnRpbWVBZ2VudDo6V29y
a2VyUnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
CiB7CiB9CiAKLXZvaWQgV29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIFdvcmtlclJ1bnRpbWVBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgV29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikK
K3ZvaWQgV29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fYmFja2VuZERpc3Bh
dGNoZXIuY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRp
bWVBZ2VudC5oCmluZGV4IDgxNGM2NmQ2YmM5ZDQ2MTgzMTkxNGE5YmZiNDFlMjg4MmUxYzBkMzcu
Ljg3OGJkZDI0OGIwOGJlMWM4YWY0ZWY0NTcyNzMzNGU3MDhhOTBjM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTQzLDggKzQzLDggQEAg
cHVibGljOgogICAgIFdvcmtlclJ1bnRpbWVBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
TWFuYWdlciosIFdvcmtlckdsb2JhbFNjb3BlKik7CiAgICAgdmlydHVhbCB+V29ya2VyUnVudGlt
ZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiBtX3dvcmtlckdsb2JhbFNjb3BlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CiAgICAgYm9vbCBtX3BhdXNlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAppbmRleCBkY2MzNGRkYzNmMTU5ZTYyOGQ2NTc5ZmE0NGYzZjBhNjFjOWFmNDNhLi4x
NGVjNjJlYmI1ZjZkY2QyY2ZmMjBlNTRkYmEyN2ZkNjFjMWQ2MWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC01OTQsNyArNTk0LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQogICAgIAotICAgIHZp
cnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIElu
c3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9y
Q29udHJvbGxlciopIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURl
YnVnZ2FibGUuY3BwCmluZGV4IDVjZjg0OWEyZmE1Mzc1MDZhOTExZTlkYmE3MzQ4NmIwNmZlMjZh
MGUuLjY3NmM0Y2E5MjRkNzEyNTI0YWMyNDhlZjJjMTU1MTk3MzcxNDQyN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgUGFnZURl
YnVnZ2FibGU6Omhhc0xvY2FsRGVidWdnZXIoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UuaW5z
cGVjdG9yQ29udHJvbGxlcigpLmhhc0xvY2FsRnJvbnRlbmQoKTsKIH0KIAotdm9pZCBQYWdlRGVi
dWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hh
bm5lbCwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pCit2b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpj
b25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21h
dGljSW5zcGVjdGlvbikKIHsKICAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygpLmRldmVsb3BlckV4
dHJhc0VuYWJsZWQoKSkgewogICAgICAgICBtX2ZvcmNlZERldmVsb3BlckV4dHJhc0VuYWJsZWQg
PSB0cnVlOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHZvaWQgUGFnZURlYnVnZ2FibGU6OmNvbm5lY3Qo
SW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNoYW5uZWwsIGJvb2wKIAogICAg
IEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVj
dG9yQ29udHJvbGxlcigpOwogICAgIGluc3BlY3RvckNvbnRyb2xsZXIuc2V0SGFzUmVtb3RlRnJv
bnRlbmQodHJ1ZSk7Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlci5jb25uZWN0RnJvbnRlbmQocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqPihjaGFubmVs
KSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKKyAgICBpbnNwZWN0b3JDb250cm9sbGVyLmNvbm5l
Y3RGcm9udGVuZChyZWludGVycHJldF9jYXN0PEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKj4o
Y2hhbm5lbCksIGlzQXV0b21hdGljSW5zcGVjdGlvbik7CiB9CiAKIHZvaWQgUGFnZURlYnVnZ2Fi
bGU6OmRpc2Nvbm5lY3QoKQogewogICAgIEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGluc3BlY3RvckNv
bnRyb2xsZXIuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Oklu
c3BlY3RvckRlc3Ryb3llZCk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJv
bnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwog
ICAgIGluc3BlY3RvckNvbnRyb2xsZXIuc2V0SGFzUmVtb3RlRnJvbnRlbmQoZmFsc2UpOwogCiAg
ICAgaWYgKG1fZm9yY2VkRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlRGVidWdnYWJsZS5oCmluZGV4IDQxZWZiYzcxN2NmYzFiZTZlYzJkNzFlOTE1ODhjYTQ2MjYy
Y2EyMDEuLjdmN2FhOWJmZWYwY2FmMzBlYzQ4M2NhMDNlZGM1OGIxOWYwZTZmZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHVybCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBo
YXNMb2NhbERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29u
bmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0
aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kaWNhdGluZyhib29sKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4NjQ2ZTA2ZjNlYTc4
YTc2NGY2ZTkwMmE4NzJkNzc1YjM3MzhhN2FkLi4xMGJhM2NkYTY2MmUzMGU3ZTFkMTc1ZGRiOWI5
N2M4NGI5OWMyOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNTU4
LDcgKzE1NTgsNyBAQCB2b2lkIEludGVybmFsczo6Y2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5k
KCkKICAgICBBU1NFUlQocGFnZSk7CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRXaW5kb3cpOwogCi0g
ICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogCiAgICAgbV9mcm9udGVuZENsaWVudCA9IG51
bGxwdHI7CiAgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCA0MzdjMTA4YzkzNWJl
NWYyMTNiNWRjZWQzNWQ2YzkzMjUxNjNhMGUwLi43ODQ1YjYxZmE4ZGNmYWY5ZjY3ZmFhMGQ5NDI1
ZDBmOWIyYjVkNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9yKCkKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRl
KQogICAgICAgICByZXR1cm47CiAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
a0Zvck1vZGUoW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkud29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7
CiAgICAgfSwgV29ya2VyRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9kZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJh
dG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9X
ZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggZTgyN2I5ZWZi
MmM4Yzc4OTg1NDQyNTQ0MTJhNDU5MTMxMTQwZmExOC4uYzIyMjYxM2ZjM2QwYTdjYmY0YjkyMDE1
YzliMzM3YjI4MjA5MDg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJv
ai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0
cy5kZWYuaW4KQEAgLTIxNiw3ICsyMTYsNyBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQ
b2ludGVyKD8/MUluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFQFhaLCA/
PzFJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFAWFopCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodEBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhJQFosID9jaGFuZ2VBdHRhY2hlZFdpbmRv
d0hlaWdodEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVFQUFYSUBaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aEBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhJQFosID9jaGFuZ2VBdHRhY2hl
ZFdpbmRvd1dpZHRoQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhJ
QFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jb25uZWN0RnJvbnRlbmRASW5zcGVjdG9y
Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYUEFWSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsQEluc3Bl
Y3RvckBAX05AWiwgP2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVA
QFFFQUFYUEVBVkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEBJbnNwZWN0b3JAQF9OQFopCisgICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxl
ckBXZWJDb3JlQEBRQUVYUEFWSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsQFdlYkNvcmVAQF9OQFos
ID9jb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUFBWFBFQVZJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWxAV2ViQ29yZUBAX05AWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP2RvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VASW5zcGVjdG9yQ2xpZW50
QFdlYkNvcmVAQFNBX05QQVZQYWdlQDJAQUJWU3RyaW5nQFdURkBAQFosID9kb0Rpc3BhdGNoTWVz
c2FnZU9uRnJvbnRlbmRQYWdlQEluc3BlY3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEVBVlBhZ2VA
MkBBRUJWU3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9mcm9udGVu
ZExvYWRlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWiwgP2Zy
b250ZW5kTG9hZGVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhY
WikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2dldFByb3BlcnR5QFNldHRpbmdzQEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFP0FWU3RyaW5nQFdURkBAQUJWNDVA
QFosID9nZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdl
YkNvcmVAQFVFQUE/QVZTdHJpbmdAV1RGQEBBRUJWNDVAQFopCkBAIC0yMjksNyArMjI5LDcgQEAg
RVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/d2luZG93T2JqZWN0Q2xlYXJlZEBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWiwgP3dpbmRvd09iamVj
dENsZWFyZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBWFhaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50QFdlYkNv
cmVAQFlBP0FWU3RyaW5nQFdURkBAQUJWMjNAMEBaLCA/cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
QFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAQUVCVjIzQDBAWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVA
QFFBRVhfTkBaLCA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUVBQVhfTkBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZGlzY29ubmVjdEZyb250
ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFc0SW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbkBJbnNwZWN0b3JAQEBaLCA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRy
b2xsZXJAV2ViQ29yZUBAUUVBQVhXNEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb25ASW5zcGVjdG9y
QEBAWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNw
ZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhXNERpc2Nvbm5lY3RSZWFzb25ASW5zcGVjdG9y
QEBAWiwgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFF
QUFYVzREaXNjb25uZWN0UmVhc29uQEluc3BlY3RvckBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQ
b2ludGVyKD9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFos
ID9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QRUJWTm9kZUAxQEBaKQogICAg
ICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJA
V2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWiwgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291
cmNlTG9hZGVyQFdlYkNvcmVAQFFFQkFfTkFFQlZTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3lt
Ym9sV2l0aFBvaW50ZXIoP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhl
Y1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdM
aXN0QFdlYkNvcmVAQEBXVEZAQEBaLCA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlND
QEBQRUFWRXhlY1N0YXRlQDNAUEVBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBW
RE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA3ODkzZjhi
MjNhODk0ZjcyNWY5MTk3NDkyYTA3ZmRmYjdlM2I0NDBmLi4zNDQzZGNkNGNiNzkzZWRlODU2NGE4
ZDEzOGE2NmEzZGMxMTcwNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC03MzAsNyArNzMwLDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkVVJMLCBjb25zdCBTdHJpbmcKIAogICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVy
KSB7CiAgICAgICAgIGlmIChQYWdlKiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRXZWJWaWV3
LmdldCgpIHBhZ2VdKQotICAgICAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJv
bGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgICAgICBpbnNwZWN0ZWRQYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKICAgICB9CiAKICAgICBbX3dlYlZpZXcg
Y2xvc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggODIyNGQ0ZWU4YjU1YTgzNWViOTQ0NDZhZTk4NTIz
YjAyN2ExZWFmMy4uNjhlYjFlYzEwYmUwNzhmNTQ4NTFkMGZlMjg1NjQzMGNjYjU5M2QwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZpZXcoYm9vbCBub3RpZnlJbnNwZWN0b3JDb250cm8K
ICAgICBjbG9zZVdpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCk7CiAKICAgICBpZiAobm90aWZ5
SW5zcGVjdG9yQ29udHJvbGxlcikgewotICAgICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2Uo
KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIG1f
aW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVk
KTsKICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPnVwZGF0ZUhpZ2hsaWdodCgpOwogICAgIH0K
ICAgICA6OkRlc3Ryb3lXaW5kb3cobV9mcm9udGVuZEh3bmQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCA0NTcwZjkxMzQ3
Y2ZlMDU4MTM5ZTA3NThjNjIwYTkzODUwODYwOTk1Li5iZjA0NzYwNWYxMzI1MmUzZWY5MGIwYTk2
ZjI5ZTFiM2MyNDU3MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAgICAgbV9yZW1vdGVGcm9udGVuZENv
bm5lY3RlZCA9IGZhbHNlOwogCiAgICAgaWYgKG1fcGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAg
bV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJv
eWVkKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCku
ZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9y
RGVzdHJveWVkKTsKIH0KICNlbmRpZgogCg==
</data>
<flag name="review"
          id="271251"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246586</attachid>
            <date>2015-02-14 00:00:48 -0800</date>
            <delta_ts>2015-02-14 00:01:21 -0800</delta_ts>
            <desc>[PATCH] ObjC Generation Changes (needs test rebaseline)</desc>
            <filename>objc-portion.patch</filename>
            <type>text/plain</type>
            <size>3812</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUv
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaAppbmRleCA4OTI2
MjlhLi41ZmYwMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudC5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEJhY2tlbmREaXNwYXRjaGVyLCB0eXBlbmFtZSBBbHRlcm5hdGVEaXNw
YXRjaGVyPgordGVtcGxhdGU8dHlwZW5hbWUgVEJhY2tlbmREaXNwYXRjaGVyLCB0eXBlbmFtZSBU
QWx0ZXJuYXRlRGlzcGF0Y2hlcj4KIGNsYXNzIEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50IGZp
bmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQoY29uc3QgU3Ry
aW5nJiBkb21haW5OYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8QWx0ZXJuYXRlRGlzcGF0Y2hlcj4gYWx0
ZXJuYXRlRGlzcGF0Y2hlcikKKyAgICBBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudChjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxUQWx0ZXJuYXRlRGlzcGF0Y2hlcj4g
YWx0ZXJuYXRlRGlzcGF0Y2hlcikKICAgICAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoZG9tYWlu
TmFtZSkKICAgICAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIoV1RGOjptb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKQogICAgIHsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpIG92ZXJyaWRlCiAgICAgewotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgbnVsbHB0cik7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBU
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgbnVsbHB0cik7CiAg
ICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURpc3BhdGNoZXIobV9hbHRl
cm5hdGVEaXNwYXRjaGVyLmdldCgpKTsKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5z
ZXRCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcik7CiAgICAgfQpAQCAtNTksOCAr
NTksOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxB
bHRlcm5hdGVEaXNwYXRjaGVyPiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxUQWx0ZXJuYXRlRGlzcGF0Y2hlcj4gbV9hbHRlcm5hdGVEaXNwYXRjaGVyOworICAgIFJlZlB0
cjxUQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9y
X3RlbXBsYXRlcy5weQppbmRleCAxMGQzZDdhLi5hMDJmMjY4IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90
ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC05MywxNCArOTMsMTQgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsiIiIpCiAgICAgIiIiIiIiKQogCiAgICAgQmFja2Vu
ZERpc3BhdGNoZXJIZWFkZXJEb21haW5IYW5kbGVySW50ZXJmYWNlRGVjbGFyYXRpb24gPSAoCi0g
ICAgIiIiY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyIDogcHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKKyAgICAi
IiJjbGFzcyBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMg
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgfkFsdGVy
bmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZp
cnR1YWwgfkFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQogJHtj
b21tYW5kRGVjbGFyYXRpb25zfQogfTsiIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRl
ckRvbWFpbkhhbmRsZXJPYmpDRGVjbGFyYXRpb24gPSAoCi0gICAgIiIiY2xhc3MgT2JqQ0luc3Bl
Y3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5h
dGVJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgeworICAgICIiImNsYXNz
IE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJs
aWMgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAg
ICBPYmpDSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKGlkPCR7b2JqY1By
ZWZpeH0ke2RvbWFpbk5hbWV9RG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0g
aGFuZGxlcjsgfQogJHtjb21tYW5kRGVjbGFyYXRpb25zfQpAQCAtMTM3LDcgKzEzNyw3IEBAICR7
aW52b2NhdGlvbn0KICAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciA9IFtoYW5kbGVy
IHJldGFpbl07CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIp
OwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURp
c3BhdGNoYWJsZUFnZW50PEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlM
aXRlcmFsKCIke2RvbWFpbk5hbWV9IiksIFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwoIiR7ZG9tYWluTmFt
ZX0iKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+
YXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246603</attachid>
            <date>2015-02-14 12:07:55 -0800</date>
            <delta_ts>2015-02-14 12:07:55 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-141372-20150214120751.patch</filename>
            <type>text/plain</type>
            <size>308412</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ODM0MWE3Njg1OWE0MWJhYjI5Mzk3YTlhYjY5ZGEzMWNiNDU0ZmZlLi4wMmE4ZDIzMTQxYjMzYmU2
N2JmZTZlNTAzZGMyMDRlZmU1OGMzZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDcgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6OkFnZW50UmVnaXN0cnkpOgorICAgICAgICAoSW5z
cGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjphcHBlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpBZ2Vu
dFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QWdlbnRS
ZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6QWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjpkaXNjYXJkQWdlbnRzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSk6
IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFw
cGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0
cnk6OmFwcGVuZEV4dHJhQWdlbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2VudHMpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVy
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6
OnNlbmRJZkFjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJE
aXNwYXRjaGVyRm9yRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnNl
bmRSZXNwb25zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpyZXBv
cnRQcm90b2NvbEVycm9yKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OmdldEludGVnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RG91YmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmlu
Zyk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZEZhaWx1cmUp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpzZW5kSWZBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlZ2lzdGVyRGlzcGF0
Y2hlckZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9j
b2xFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Qm9v
bGVhbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpnZXRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0VmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAo
SW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcjo6flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rv
clN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6On5JbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWw6On5Gcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw6On5JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0RGVzdHJv
eWVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRsZUNvbnNvbGVBc3NlcnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cGF1c2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1ApOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyQnJlYWtEZXRhaWxzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dl
bmVyYXRvci5weToKKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfZm9ybWFsX291
dF9wYXJhbWV0ZXIpOgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl9zdGFja19v
dXRfcGFyYW1ldGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9n
ZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXIpOgorICAgICAgICAoQWx0ZXJuYXRlKToKKyAgICAgICAgKHZvaWQpOgorICAgICAgICAoQWx0
ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIpOiBEZWxldGVkLgorICAgICAgICAoQWx0
ZXJuYXRlSW5zcGVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAg
ICAoQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuX2dlbmVyYXRlX2FsdGVybmF0
ZV9oYW5kbGVyX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9kb21haW5zLkFsdGVybmF0ZSk6Cisg
ICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfZGlz
cGF0Y2hlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAgICAgIChDcHBCYWNrZW5kRGlz
cGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0ZXJuYXRlX2hhbmRsZXJfZm9yd2Fy
ZF9kZWNsYXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRlSW5zcGVjdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5k
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9oYW5kbGVyX2NsYXNzX2Rlc3Ry
dWN0b3JfZm9yX2RvbWFpbik6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9sYXJnZV9kaXNwYXRjaGVyX3N3aXRjaF9pbXBsZW1l
bnRhdGlvbl9mb3JfZG9tYWluKToKKyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9y
X2NvbW1hbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBG
cm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbl9mb3JfZXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5OgorICAgICAgICAoT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9ldmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1k
b21haW4uanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxp
YXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpjb25uZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
OjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oOgorCiAyMDE1LTAyLTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEF0dGVtcHQgdG8gZml4IDMyYml0cyBidWlsZCBhZnRlciByMTgwMDk4CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYjMzZmZhNTZiZGFiMWUxNWZlYWFjOGRiOTU0NTdjMTc4NjQ3MjVhOC4uY2E0
MjMzOTU2YzgwZTcxYTE0Y2QzYTFkNTc4MTI5MDI3NGIxMTZmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwOSBAQAorMjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkg
SW5zcGVjdG9yIHByZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5hbWVzcGFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5h
dGl2ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsOjpX
b3JrZXJGcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1l
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOjp+V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1
Z2dhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KToKKyAgICAgICAg
KiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRl
bmQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9y
KToKKwogMjAxNS0wMi0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAog
ICAgICAgICByZWw9Im5vcmVmZXJyZXIiIHNob3VsZCBtYWtlIHdpbmRvdy5vcGVuZXIgbnVsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBiY2FmYWM1MWJiMzVhNmI1Y2Y0YTBjNTMxMWUyYTRmMjhmYTgzNmZlLi42NWQ0
MGViZjc4NGY5YTIxNWZjNzIzMGViMDY5YTE1ZmEyNWEzOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE1LTAyLTA5ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVk
dT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBJbnNw
ZWN0b3IgcHJlZml4ZXMgZnJvbSBjbGFzcyBuYW1lcyBpbiBJbnNwZWN0b3IgbmFtZXNwYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEzNzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52
Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKwogMjAx
NS0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA0
NWFjYWI0NzgwZDRlYWZhN2M1MmYxYmUyY2FjNGNkOWE4YjU4NTQuLjIyMjJmOWQ4ZjRmYzhhMDcw
MmJkZWE1NmJkN2E4MjQ4ZDIyMTM3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgSW5zcGVjdG9y
IHByZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5hbWVzcGFjZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0Nv
bnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXc6XSk6CisKIDIwMTUtMDItMTQgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgcmVsPSJub3JlZmVycmVyIiBz
aG91bGQgbWFrZSB3aW5kb3cub3BlbmVyIG51bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA4MTEwNDU5
OWI1MjYzZWRhZjlmNjcwM2ZkYzY0OWFmYTBmNDA3MWU5Li40YzgzNzUwODg4NDE0MDM4NTNmOGJh
MjlhOTM3MWNlNzg0ZDExNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVm
aXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpkZXN0cm95SW5zcGVjdG9yVmlldyk6CisKIDIwMTUtMDItMTEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gWzY0LWJpdF0gV29yayBhcm91bmQg
TVNWQzIwMTMgUnVudGltZSBCdWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MDYzMGRiZGY5NjcyMmJmMDJlYzg3
YWU3Njk4NDI4ZWMyODczYTY2Li43YTc3MGVmYjk1MmQ2MDYzZDk5OGViY2IxZjYxMTkyNTAxNzJk
YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1
cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJl
bW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVz
IGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQp
OgorCiAyMDE1LTAyLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIENyYXNoIGNsb3NpbmcgYSB0YWIgd2hlbiBhIGNvbnRleHQgb3IgcG9wdXAgbWVu
dSBpcyBvcGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCmluZGV4IDUwZTExNDg3NGQxNjc5NGFhMDU2N2FjYjI1MTEwYzYxY2JmMDRi
YTguLmMxMTEyY2VjYTE0NWU5ODIwZjMzZWY5MGQ0OTNjNDFlYzIxY2Y1ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0x
NzcsNyArMTc3LDcgQEAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpMZXZlbCBtZXNzYWdlTGV2ZWxWYWx1ZShNZXMKICAgICByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAK
LXZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcpCit2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVu
ZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsKICAg
ICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U+IGpzb25P
YmogPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9zb3VyY2UpKQpAQCAt
MjMwLDcgKzIzMCw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVj
dG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgY29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZUFkZGVkKFdURjo6bW92ZShqc29uT2JqKSk7CiB9CiAKLXZv
aWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckNv
bnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIpCit2b2lk
IENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShDb25zb2xlRnJvbnRl
bmREaXNwYXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKQogewogICAgIGNvbnNvbGVG
cm9udGVuZERpc3BhdGNoZXItPm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQobV9yZXBlYXRDb3Vu
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmgKaW5kZXggZWYxYzc5ZDE1YzdjZTg3M2Y3MGFlYTE1ZDEyZDk5MzdjZWRiZjdmYS4uYTcz
ZTI4NjMwYWZjOWQ3OGQ5Yjk0MDk0NjhmYTQ4NDUzOTkxOWNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtNTUsOCArNTUsOCBA
QCBwdWJsaWM6CiAgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
ciA9IDApOwogICAgIH5Db25zb2xlTWVzc2FnZSgpOwogCi0gICAgdm9pZCBhZGRUb0Zyb250ZW5k
KEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqLCBib29sIGdlbmVyYXRlUHJldmlldyk7Ci0gICAgdm9pZCB1cGRhdGVSZXBlYXRDb3VudElu
Q29uc29sZShJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCBh
ZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBib29sIGdlbmVyYXRlUHJldmlldyk7CisgICAgdm9pZCB1cGRhdGVSZXBlYXRDb3Vu
dEluQ29uc29sZShDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7CiAKICAgICBNZXNzYWdlU291
cmNlIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAppbmRleCA2Mzlk
MDQ4YjI3YWVmOTdlZDNmYzJkMmUwODhmNWViNjMzMDlhNWE2Li42MzQwNGNmNTQyNTRhZDZhM2Vh
YTFhNWYyN2M0OWI5MTc3MmM4NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKQEAgLTMxLDEwICszMSwxMCBAQAogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7
Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hl
cjsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKIAotZW51bSBjbGFzcyBJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uIHsKK2VudW0gY2xhc3MgRGlzY29ubmVjdFJlYXNvbiB7CiAgICAgSW5zcGVjdGVk
VGFyZ2V0RGVzdHJveWVkLAogICAgIEluc3BlY3RvckRlc3Ryb3llZAogfTsKQEAgLTQ1LDggKzQ1
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRvbWFpbk5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hl
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7
IH0KIAogcHJvdGVjdGVkOgpAQCAtNTcsNyArNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBTdHJp
bmcgbV9uYW1lOwogfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmlu
ZGV4IDQwMTA4ZWI0OWI0ZTliZGQ0ODMzZjVhOGZhZDM1MzdlYmJkYmFiNGMuLmJjYzA5ODgyMTRh
NjFkZjFlYTY3MzQzZDUzMjI2MTUyNWU3ZWY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApAQCAt
MzEsMTcgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5OjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KCkKK0FnZW50UmVnaXN0cnk6OkFnZW50
UmVnaXN0cnkoKQogewogfQogCi12b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2VudCkKK3ZvaWQgQWdlbnRSZWdp
c3RyeTo6YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQog
ewogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoYWdlbnQpKTsKIH0KIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotdm9pZCBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJh
c2U+IGFnZW50KQordm9pZCBBZ2VudFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQogewogICAgIG1fZXh0cmFEb21haW5z
LmFwcGVuZChhZ2VudC0+ZG9tYWluTmFtZSgpKTsKIApAQCAtNDksMTkgKzQ5LDE5IEBAIHZvaWQg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yQWdlbnRCYXNlCiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5z
aXplKCk7IGkrKykKICAgICAgICAgbV9hZ2VudHNbaV0tPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChmcm9udGVuZENoYW5uZWwsIGJhY2tlbmREaXNwYXRjaGVyKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7IGkrKykKICAgICAgICAgbV9hZ2Vu
dHNbaV0tPndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW50cygpCit2b2lkIEFnZW50UmVnaXN0
cnk6OmRpc2NhcmRBZ2VudHMoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2Vu
dHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIG1fYWdlbnRzW2ldLT5kaXNjYXJkQWdlbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmgKaW5kZXggOGI3NzU3ZjhjYTU1YjkyMzNmNWVkY2NjOGMzYmIyOWY3ZGY2NmNl
ZS4uOTYyZjAwNmRmNzI3MTNjMmQ5NDdmZTg3NTc5NGM4Nzk4MDk1NmM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmgKQEAgLTMyLDE5ICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xh
c3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNw
ZWN0b3JBZ2VudEJhc2U7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLWVudW0gY2xhc3MgSW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbjsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eSB7CitlbnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFzb247CisKK2NsYXNzIEpTX0VYUE9SVF9QUklW
QVRFIEFnZW50UmVnaXN0cnkgewogcHVibGljOgotICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnko
KTsKKyAgICBBZ2VudFJlZ2lzdHJ5KCk7CiAKICAgICB2b2lkIGFwcGVuZChzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yQWdlbnRCYXNlPik7CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopOwotICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbiByZWFzb24pOworICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lk
IGRpc2NhcmRBZ2VudHMoKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQpAQCAtNTUsOCArNTYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRoZXNl
IGFyZSBkZWNsYXJlZCBoZXJlIHRvIGF2b2lkIE1TVkMgZnJvbSB0cnlpbmcgdG8gY3JlYXRlIGRl
ZmF1bHQgaXBsZW1lbnRhdGlvbnMgd2hpY2ggd291bGQKICAgICAvLyBpbnZvbHZlIGdlbmVyYXRp
bmcgYSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIHRo
ZSBWZWN0b3Igb2Ygc3RkOjp1bmlxdWVfcHRycy4KLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
KGNvbnN0IEluc3BlY3RvckFnZW50UmVnaXN0cnkmKSA9IGRlbGV0ZTsKLSAgICBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5JiBvcGVyYXRvcj0oY29uc3QgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSYpID0g
ZGVsZXRlOworICAgIEFnZW50UmVnaXN0cnkoY29uc3QgQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRl
OworICAgIEFnZW50UmVnaXN0cnkmIG9wZXJhdG9yPShjb25zdCBBZ2VudFJlZ2lzdHJ5JikgPSBk
ZWxldGU7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4+
IG1fYWdlbnRzOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCAzMTU2NGQ4NzQ1NGVlNTUxZWU2OTI1MDIz
YTc1YmM1N2ExOTRlMzBlLi5mODhjZmJkYWJjMWRjOWNlYWY4ZjUwMzBjNjc1ZDQ5NGQ3NjAzODE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMzQsMjUgKzM0LDI1IEBACiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlOjpDYWxsYmFja0Jhc2UoUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJh
Y2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpCitCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
OjpDYWxsYmFja0Jhc2UoUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVy
LCBpbnQgaWQpCiAgICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShiYWNrZW5kRGlz
cGF0Y2hlcikpCiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9hbHJlYWR5U2VudChmYWxzZSkKIHsK
IH0KIAotYm9vbCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjppc0Fj
dGl2ZSgpIGNvbnN0Citib29sIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0
aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fYWxyZWFkeVNlbnQgJiYgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+aXNBY3RpdmUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYgZXJyb3IpCit2
b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRGYWlsdXJlKGNvbnN0IEVy
cm9yU3RyaW5nJiBlcnJvcikKIHsKICAgICBBU1NFUlQoZXJyb3IubGVuZ3RoKCkpOwogICAgIHNl
bmRJZkFjdGl2ZShudWxscHRyLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZElmQWN0aXZlKFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiYgcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3Ip
Cit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2ZShSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBhcnRpYWxNZXNzYWdlLCBjb25zdCBFcnJvclN0cmluZyYg
aW52b2NhdGlvbkVycm9yKQogewogICAgIGlmIChtX2FscmVhZHlTZW50KQogICAgICAgICByZXR1
cm47CkBAIC02MSwyMCArNjEsMjAgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlOjpzZW5kSWZBY3RpdmUoUmVmUHRyPEluc3BlY3Rvck9iamUKICAgICBtX2Fs
cmVhZHlTZW50ID0gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKGlu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhY2tl
bmREaXNwYXRjaGVyKGZyb250ZW5kQ2hhbm5lbCkpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBk
b21haW4sIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKiBkaXNwYXRjaGVy
KQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNv
bnN0IFN0cmluZyYgZG9tYWluLCBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0
Y2hlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZGlzcGF0Y2hlcnMuYWRkKGRvbWFpbiwgZGlz
cGF0Y2hlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsK
IAogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcGFyc2VkTWVzc2FnZTsKICAgICBpZiAoIUlu
c3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSwgcGFyc2VkTWVzc2FnZSkpIHsKQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgfQogCiAgICAgU3RyaW5nIGRvbWFpbiA9IG1ldGhv
ZC5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOwotICAgIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyKiBkb21haW5EaXNwYXRjaGVyID0gbV9kaXNwYXRjaGVycy5nZXQoZG9tYWlu
KTsKKyAgICBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZG9tYWluRGlzcGF0Y2hlciA9
IG1fZGlzcGF0Y2hlcnMuZ2V0KGRvbWFpbik7CiAgICAgaWYgKCFkb21haW5EaXNwYXRjaGVyKSB7
CiAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgTWV0aG9kTm90Rm91bmQsICIn
IiArIGRvbWFpbiArICInIGRvbWFpbiB3YXMgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybjsK
QEAgLTEyOSw5ICsxMjksOSBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgZG9tYWluRGlzcGF0Y2hlci0+ZGlzcGF0
Y2goY2FsbElkLCBkb21haW5NZXRob2QsIG1lc3NhZ2VPYmplY3QucmVsZWFzZU5vbk51bGwoKSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25n
IGNhbGxJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiByZXN1bHQsIGNvbnN0IEVycm9yU3Ry
aW5nJiBpbnZvY2F0aW9uRXJyb3IpCit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9u
c2UobG9uZyBjYWxsSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcmVzdWx0LCBjb25zdCBF
cnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGludm9jYXRpb25FcnJvci5sZW5ndGgoKSkgewpAQCAtMTQyLDE1ICsxNDIs
MTUgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcg
Y2FsbElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWMKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBy
ZXNwb25zZU1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJlc3BvbnNl
TWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIHJlc3VsdCk7CiAgICAg
cmVzcG9uc2VNZXNzYWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgY2FsbElkKTsK
LSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJl
c3BvbnNlTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5z
ZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3Io
Y29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3QKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJl
cG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNv
ZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3QKIHsKICAgICBy
ZXBvcnRQcm90b2NvbEVycm9yKGNhbGxJZCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UsIG51bGxw
dHIpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2Nv
bEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiYmIGRhdGEpIGNvbnN0Cit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpy
ZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JD
b2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGRhdGEpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IGNvbnN0IGludCBlcnJvckNvZGVzW10gPSB7CiAgICAgICAgIC0zMjcwMCwgLy8gUGFyc2VFcnJv
cgpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJl
cG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiAgICAgQVNTRVJU
X0FSRyhlcnJvckNvZGUsICh1bnNpZ25lZCllcnJvckNvZGUgPCBXVEZfQVJSQVlfTEVOR1RIKGVy
cm9yQ29kZXMpKTsKICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwgZXJyb3JDb2Rlc1tlcnJvckNv
ZGVdKTsKIAotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFt
X2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEluc3BlY3Rvck9i
amVjdD4gZXJyb3IgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3
IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3Io
Y29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlLT5z
ZXRWYWx1ZShBU0NJSUxpdGVyYWwoImlkIiksIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOwogCi0g
ICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNz
YWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBEZWZhdWx0
VmFsdWVUeXBlPgpAQCAtMjI3LDM3ICsyMjcsMzcgQEAgc3RydWN0IEFzTWV0aG9kQnJpZGdlcyB7
CiAgICAgc3RhdGljIGJvb2wgYXNWYWx1ZShJbnNwZWN0b3JWYWx1ZSYgdmFsdWUsIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4mIG91dHB1dCkgeyByZXR1cm4gdmFsdWUuYXNWYWx1ZShvdXRwdXQpOyB9
CiB9OwogCi1pbnQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIoSW5zcGVj
dG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCitpbnQg
QmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5
VmFsdWU8aW50LCBpbnQsIGludD4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVy
cm9ycywgMCwgQXNNZXRob2RCcmlkZ2VzOjphc0ludGVnZXIsICJJbnRlZ2VyIik7CiB9CiAKLWRv
dWJsZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKEluc3BlY3Rvck9iamVj
dCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQorZG91YmxlIEJhY2tl
bmREaXNwYXRjaGVyOjpnZXREb3VibGUoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8
ZG91YmxlLCBkb3VibGUsIGRvdWJsZT4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2Nv
bEVycm9ycywgMCwgQXNNZXRob2RCcmlkZ2VzOjphc0RvdWJsZSwgIk51bWJlciIpOwogfQogCi1T
dHJpbmcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhJbnNwZWN0b3JPYmpl
Y3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1N0cmluZyBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVl
PFN0cmluZywgU3RyaW5nLCBTdHJpbmc+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9j
b2xFcnJvcnMsICIiLCBBc01ldGhvZEJyaWRnZXM6OmFzU3RyaW5nLCAiU3RyaW5nIik7CiB9CiAK
LWJvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEJvb2xlYW4oSW5zcGVjdG9yT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCitib29sIEJhY2tl
bmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVl
PGJvb2wsIGJvb2wsIGJvb2w+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJv
cnMsIGZhbHNlLCBBc01ldGhvZEJyaWRnZXM6OmFzQm9vbGVhbiwgIkJvb2xlYW4iKTsKIH0KIAot
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9i
amVjdChJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2
YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVy
cm9ycykKK1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmpl
Y3QoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFs
dWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJv
cnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UmVmUHRyPEluc3BlY3Rvck9iamVj
dD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBJbnNwZWN0b3JPYmplY3QqPihvYmplY3QsIG5h
bWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6
OmFzT2JqZWN0LCAiT2JqZWN0Iik7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQorUmVmUHRyPEluc3BlY3RvckFycmF5PiBC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFs
dWU8UmVmUHRyPEluc3BlY3RvckFycmF5PiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiwgSW5zcGVj
dG9yQXJyYXkqPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxs
cHRyLCBBc01ldGhvZEJyaWRnZXM6OmFzQXJyYXksICJBcnJheSIpOwogfQogCi1SZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShJbnNwZWN0
b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKEluc3BlY3Rvck9i
amVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJl
dHVybiBnZXRQcm9wZXJ0eVZhbHVlPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4sIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4sIEluc3BlY3RvclZhbHVlKj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9ycywgbnVsbHB0ciwgQXNNZXRob2RCcmlkZ2VzOjphc1ZhbHVlLCAiVmFsdWUi
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAppbmRleCAwZjBhMjQ1OWExOWNmMWU3ZDQ2Y2I0
MmQ1NjdjYmM3ZDAyZjRjNmFkLi5iMzAzNzAwYTIwOWJiMjIyNjZiYWU4ZjRlNGRlOGRkMzI2ZmI5
NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC0zMywyNyArMzMsMjggQEAKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwot
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7
CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CisKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwog
Ci1jbGFzcyBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFz
cyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyPiB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImIGJhY2tl
bmREaXNwYXRjaGVyKQorICAgIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmRE
aXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAgICAgOiBtX2JhY2tlbmREaXNwYXRj
aGVyKGJhY2tlbmREaXNwYXRjaGVyKSB7IH0KLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgflN1cHBsZW1lbnRhbEJh
Y2tlbmREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdl
KSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKIH07CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8QmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKik7CisgICAgc3RhdGljIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEZyb250ZW5k
Q2hhbm5lbCopOwogCiAgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ2FsbGJhY2tCYXNlIDog
cHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tCYXNlPiB7CiAgICAgcHVibGljOgotICAgICAgICBD
YWxsYmFja0Jhc2UoUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwor
ICAgICAgICBDYWxsYmFja0Jhc2UoUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwog
CiAgICAgICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZW5kRmFpbHVy
ZShjb25zdCBFcnJvclN0cmluZyYpOwpAQCAtNjMsMTMgKzY0LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgdm9pZCBzZW5kSWZBY3RpdmUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBwYXJ0aWFsTWVz
c2FnZSwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcik7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgICAgIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKICAgICAgICAgaW50IG1faWQ7CiAgICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudDsKICAgICB9
OwogCi0gICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCA9IG51bGxwdHI7IH0KLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQorICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9m
cm9udGVuZENoYW5uZWwgPSBudWxscHRyOyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9mcm9udGVuZENoYW5uZWw7IH0KIAogICAgIGVudW0gQ29tbW9uRXJyb3JDb2Rl
IHsKICAgICAgICAgUGFyc2VFcnJvciA9IDAsCkBAIC04MCw3ICs4MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgU2VydmVyRXJyb3IKICAgICB9OwogCi0gICAgdm9pZCByZWdpc3RlckRpc3BhdGNoZXJG
b3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyKik7CisgICAgdm9pZCByZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29u
c3QgU3RyaW5nJiBkb21haW4sIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAg
dm9pZCBkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2VuZFJlc3Bv
bnNlKGxvbmcgY2FsbElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHJlc3VsdCwgY29uc3Qg
RXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcik7CiAgICAgdm9pZCByZXBvcnRQcm90b2NvbEVy
cm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgY29uc3Q7CkBAIC05NSwxMCArOTYsMTEgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGdldEFycmF5KEluc3BlY3Rvck9iamVjdCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpOwogCiBwcml2YXRlOgotICAgIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCkgeyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVs
KiBGcm9udGVuZENoYW5uZWwpCisgICAgICAgIDogbV9mcm9udGVuZENoYW5uZWwoRnJvbnRlbmRD
aGFubmVsKSB7IH0KIAotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEluc3BlY3RvclN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyKj4gbV9kaXNwYXRjaGVyczsKKyAgICBGcm9udGVuZENoYW5uZWwq
IG1fZnJvbnRlbmRDaGFubmVsOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCmluZGV4IGZhMGE4ZWFlODM5ZjVmZTQ3MTc0ZTRjYmJj
OWRlNTc0MzJhNmI5NjEuLmEyYmY2ZjNjMjRmZTlhMzMwZGEzY2ZkYWVhN2IyY2NmNjhjMzgzNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKK2NsYXNzIEZyb250
ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKCkgeyB9CisgICAgdmlydHVhbCB+RnJvbnRlbmRDaGFubmVsKCkgeyB9CiAgICAgdmlydHVh
bCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4NTA5
M2EzZGNlODhjNGMxMzFjZjk4YzRlNGE3YmNiMzFlNTYxMzlkLi42NTdjZWQ0NzkwMDg5NTkzMTQx
Mzc5Y2VjYjg1Y2YwMGI3NGZiNmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91
bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpj
cmVhdGUoKSkpCi0gICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQorICAg
ICwgbV9mcm9udGVuZENoYW5uZWwobnVsbHB0cikKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNo
KFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRo
RXhjZXB0aW9ucyh0cnVlKQogICAgICwgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24oZmFsc2UpCkBA
IC05NSwyMiArOTUsMjIgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp+SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCkKIAogdm9pZCBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6Omdsb2JhbE9iamVjdERlc3Ryb3llZCgpCiB7Ci0gICAgZGlzY29u
bmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERl
c3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3Bl
Y3RlZFRhcmdldERlc3Ryb3llZCk7CiAKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlz
Y29ubmVjdCgpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQogewotICAgIEFTU0VSVCghbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcik7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUKCFt
X2JhY2tlbmREaXNwYXRjaGVyKTsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNB
dXRvbWF0aWNJbnNwZWN0aW9uOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBm
cm9udGVuZENoYW5uZWw7Ci0gICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Zy
b250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9h
Z2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBt
X2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhtX2FnZW50cy5leHRyYURvbWFp
bnMoKSk7CkBAIC0xMjAsMTYgKzEyMCwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAogI2Vu
ZGlmCiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25u
ZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwp
CisgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9h
Z2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKIAotICAgIG1faW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX2luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwgPSBudWxscHRyOworICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsK
KyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwg
PSBudWxscHRyOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAt
MTQxLDggKzE0MSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlCiAKIHZvaWQgSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKQotICAgICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNz
YWdlKTsKKyAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKKyAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjphcHBlbmRBUElCYWNrdHJhY2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxs
U3RhY2spCkBAIC0yNDUsMTIgKzI0NSwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogewog
ICAgIFN0cmluZyBkb21haW5OYW1lID0gYWdlbnQtPmRvbWFpbk5hbWUoKTsKIAotICAgIGlmICht
X2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgaWYgKG1fZnJvbnRlbmRDaGFubmVsKQorICAgICAg
ICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLCBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZEV4dHJhQWdl
bnQoV1RGOjptb3ZlKGFnZW50KSk7CiAKLSAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwpCisgICAgaWYgKG1fZnJvbnRlbmRDaGFubmVsKQogICAgICAgICBtX2luc3BlY3RvckFnZW50
LT5hY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbk5hbWUpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiNjkzZTI4ZGE4MDRmZTZmYjU4NmVjODU4
Zjc1MWU3NjgxNzlmMDM5Li5hYjBhNTI4MDNhZGU3NTVhNjQyMmNiOGI2YWVhNmI3YjU4ZDkyZmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTUwLDEyICs1MCwx
MiBAQCBjbGFzcyBKU1ZhbHVlOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xhc3MgQmFj
a2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNz
IEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIApA
QCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pOworICAgIHZv
aWQgY29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uKTsK
ICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIAog
ICAgIHZvaWQgZ2xvYmFsT2JqZWN0RGVzdHJveWVkKCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9hdWdtZW50aW5nQ2xpZW50OyB9IAogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Q2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9hdWdtZW50aW5nQ2xpZW50ID0gY2xpZW50OyB9
CiAKLSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0K
KyAgICB2aXJ0dWFsIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9mcm9udGVuZENoYW5uZWw7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIApAQCAtMTEwLDkgKzExMCw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
QWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2Nv
bnNvbGVBZ2VudDsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7
Ci0gICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVu
ZENoYW5uZWw7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAg
Ym9vbCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9uczsKICAgICBib29sIG1f
aXNBdXRvbWF0aWNJbnNwZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGU2MmVjMmVjMDRi
MGE4YjNiNmFjYWYyMTBkOTg4Njg3ZWZlNDE4YTAuLmJmMjQxYmE3NzgyZDljMDljYTZkYWQzNjA5
MmI4MjFhNzJhODM4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBJ
bnNwZWN0b3JBZ2VudDo6fkluc3BlY3RvckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5oCmluZGV4IDM4YzllZWYyNzczMWE2OGRmMDA4OTVhNzVkNzVlNmY1ODViMWQz
NGMuLjRjNmVmNzgyYzE3N2ZlMmM4NWIyOGFkZWE1ZTY0ZGM3MzY2OWY5YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuaApAQCAtMzgsMjIgKzM4LDIxIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCitjbGFz
cyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckVudmlyb25tZW50OwotY2xhc3Mg
SW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JJbnNw
ZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVj
dG9yQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
dG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIEluc3BlY3RvckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEluc3BlY3RvckFnZW50KEluc3BlY3RvckVudmlyb25tZW50Jik7CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJv
bnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTY5
LDggKzY4LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckVudmlyb25tZW50
JiBtX2Vudmlyb25tZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JJbnNwZWN0b3JG
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0
Q29tbWFuZHM7CiAgICAgc3RkOjpwYWlyPFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IG1fcGVuZGluZ0luc3BlY3REYXRhOwog
I2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMDUwNTExOTMxN2UzYTIxNGRiODg5MWU5OTI3Yjc2ZDE3
NDI1N2FmZS4uODE0YTBjMTFjZjYwOGVjNjk4OTljZWJmMWJhYzE0ZWFiYzE5YmFkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgSW5zcGVjdG9y
Q29uc29sZUFnZW50Ojp+SW5zcGVjdG9yQ29uc29sZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikK
K3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0
cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCmluZGV4IDcyNjJjMDc1YWQyMDIxMjFiNTNjMGI1YjYzODJhYmY4YWMxNmZmMWQuLmI5
ZGE5OWQzODJlZmNiMWIyNmQ5N2MyNTdlNmQwZDRjNTA1ZjIxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oCkBAIC00OCwxNSArNDgsMTUgQEAgY2xhc3MgU2NyaXB0QXJndW1lbnRzOwog
Y2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBDb25zb2xlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25zb2xlQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JDb25zb2xlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtODEsOCArODEsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29s
ZU1lc3NhZ2U+KTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JDb25z
b2xlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwor
ICAgIFJlZlB0cjxDb25zb2xlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiAgICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOwogICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+PiBtX2NvbnNvbGVNZXNzYWdlczsKICAgICBpbnQg
bV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggM2FlNzYwOWNhZTIwYjdhZjBhZjM2MzczNjliN2Y0MmM3NDgyZmQyMC4uMmFj
YmNmNDkzNDM2ZjA2Njg1M2IzNDdlMjNlOGZmMzdkMTM5OTRmMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTY4LDE4ICs2OCwxOCBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Ojp+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERp
c2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVs
bHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKLSAgICBib29sIHNraXBS
ZWNvbXBpbGUgPSByZWFzb24gPT0gSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVk
VGFyZ2V0RGVzdHJveWVkOworICAgIGJvb2wgc2tpcFJlY29tcGlsZSA9IHJlYXNvbiA9PSBEaXNj
b25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQ7CiAgICAgZGlzYWJsZShza2lw
UmVjb21waWxlKTsKIH0KIApAQCAtMTgxLDcgKzE4MSw3IEBAIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhjZXB0aW9uUGF1c2VSZWFzb24oY29u
c3QKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29uc29sZUFzc2VydChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHNjcmlwdERlYnVnU2VydmVyKCkucGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9u
cykKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkFzc2VydCwgYnVpbGRBc3NlcnRQYXVzZVJlYXNvbihtZXNzYWdlKSk7Cisg
ICAgICAgIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpB
c3NlcnQsIGJ1aWxkQXNzZXJ0UGF1c2VSZWFzb24obWVzc2FnZSkpOwogfQogCiBzdGF0aWMgUmVm
PEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBjb25kaXRpb24sIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGFjdGlvbnMsIGJvb2wgaXNSZWdl
eCwgYm9vbCBhdXRvQ29udGludWUpCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdAogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWlscyhlcnJvclN0cmlu
ZywgZnVuY3Rpb25JZCwgJmRldGFpbHMpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
JiBkYXRhKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0
U3RhdGVtZW50KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24s
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0
UGF1c2VTY2hlZHVsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCkKIAog
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShFcnJvclN0cmluZyYpCiB7Ci0gICAg
c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpQYXVzZU9uTmV4dFN0YXRlbWVudCwgbnVsbHB0cik7CisgICAgc2No
ZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpQYXVzZU9uTmV4dFN0YXRlbWVudCwgbnVsbHB0cik7CiAKICAgICBtX2phdmFTY3JpcHRQ
YXVzZVNjaGVkdWxlZCA9IHRydWU7CiB9CkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyopCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2Nr
ZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7CiAgICAgaWYgKHNjcmlwdERl
YnVnU2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRv
bnRQYXVzZU9uRXhjZXB0aW9ucykKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BWaW9s
YXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CisgICAgICAgIGJyZWFrUHJvZ3JhbShE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpDU1BWaW9sYXRpb24sIGJ1aWxkQ1NQ
VmlvbGF0aW9uUGF1c2VSZWFzb24oZGlyZWN0aXZlVGV4dCkpOwogfQogCiBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFt
ZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0KQpAQCAtNjY0LDIyICs2NjQsMjIgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0
IERlcHJlY2EKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAKICAgICAvLyBJ
ZiBhIGhpZ2ggbGV2ZWwgcGF1c2UgcGF1c2UgcmVhc29uIGlzIG5vdCBhbHJlYWR5IHNldCwgdHJ5
IHRvIGluZmVyIGEgcmVhc29uIGZyb20gdGhlIGRlYnVnZ2VyLgotICAgIGlmIChtX2JyZWFrUmVh
c29uID09IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok90aGVy
KSB7CisgICAgaWYgKG1fYnJlYWtSZWFzb24gPT0gRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbjo6T3RoZXIpIHsKICAgICAgICAgc3dpdGNoIChzY3JpcHREZWJ1Z1NlcnZlcigpLnJl
YXNvbkZvclBhdXNlKCkpIHsKICAgICAgICAgY2FzZSBKU0M6OkRlYnVnZ2VyOjpQYXVzZWRGb3JC
cmVha3BvaW50OiB7CiAgICAgICAgICAgICBKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFr
cG9pbnRJZCA9IHNjcmlwdERlYnVnU2VydmVyKCkucGF1c2luZ0JyZWFrcG9pbnRJRCgpOwogICAg
ICAgICAgICAgaWYgKGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElEKSB7Ci0gICAgICAgICAgICAgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3Rv
ckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQ7CisgICAgICAg
ICAgICAgICAgbV9icmVha1JlYXNvbiA9IERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFz
b246OkJyZWFrcG9pbnQ7CiAgICAgICAgICAgICAgICAgbV9icmVha0F1eERhdGEgPSBidWlsZEJy
ZWFrcG9pbnRQYXVzZVJlYXNvbihkZWJ1Z2dlckJyZWFrcG9pbnRJZCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEpTQzo6RGVidWdn
ZXI6OlBhdXNlZEZvckRlYnVnZ2VyU3RhdGVtZW50OgotICAgICAgICAgICAgbV9icmVha1JlYXNv
biA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRlYnVnZ2Vy
U3RhdGVtZW50OworICAgICAgICAgICAgbV9icmVha1JlYXNvbiA9IERlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkRlYnVnZ2VyU3RhdGVtZW50OwogICAgICAgICAgICAgbV9icmVh
a0F1eERhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSlND
OjpEZWJ1Z2dlcjo6UGF1c2VkRm9yRXhjZXB0aW9uOgotICAgICAgICAgICAgbV9icmVha1JlYXNv
biA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV4Y2VwdGlv
bjsKKyAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uOjpFeGNlcHRpb247CiAgICAgICAgICAgICBtX2JyZWFrQXV4RGF0YSA9IGJ1aWxk
RXhjZXB0aW9uUGF1c2VSZWFzb24oZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSwgaW5qZWN0ZWRTY3Jp
cHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSlNDOjpEZWJ1Z2dlcjo6UGF1
c2VkQXRTdGF0ZW1lbnQ6CkBAIC03NTUsNyArNzU1LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRDb250aW51ZSgpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oSW5zcGVj
dG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
cmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNv
biwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKQogewogICAgIG1fYnJlYWtSZWFzb24g
PSBicmVha1JlYXNvbjsKICAgICBtX2JyZWFrQXV4RGF0YSA9IFdURjo6bW92ZShkYXRhKTsKQEAg
LTgxNCw3ICs4MTQsNyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFzc2VydFBhdXNl
ZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Y2xlYXJCcmVha0RldGFpbHMoKQogewotICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpPdGhlcjsKKyAgICBtX2JyZWFrUmVh
c29uID0gRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXI7CiAgICAgbV9i
cmVha0F1eERhdGEgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
aW5kZXggOWJlMzIzMzE1MTA5NDU1ODc4YjAxYzM0YjA2MThjNTYzODE0NDUyYy4uYzFkNzk3Y2Ix
ZmI5OWM0MGZkMGUxZTVhNGU1NjUyOGE3MzNhZDY5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIFNj
cmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRl
YnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJs
aWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTY1LDggKzY1LDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CkBAIC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGhhbmRs
ZUNvbnNvbGVBc3NlcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAotICAgIHZvaWQgc2NoZWR1
bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpOwor
ICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRh
dGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKLSAgICB2b2lkIGJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJy
ZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpOworICAgIHZvaWQgYnJl
YWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24s
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZGF0YSk7CiAgICAgdm9pZCBzY3JpcHRFeGVjdXRp
b25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsKIAogICAgIGNsYXNz
IExpc3RlbmVyIHsKQEAgLTE1NSw4ICsxNTUsOCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxKU0M6OkJyZWFrcG9pbnRJRCwgU3RyaW5nPiBEZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRFRv
QnJlYWtwb2ludElkZW50aWZpZXI7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPElu
c3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKICAgICBMaXN0ZW5lciogbV9saXN0ZW5lciB7bnVsbHB0cn07CiAgICAg
SlNDOjpFeGVjU3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGUge251bGxwdHJ9OwogICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKQEAgLTE2NSw3ICsxNjUsNyBA
QCBwcml2YXRlOgogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwIG1famF2
YVNjcmlwdEJyZWFrcG9pbnRzOwogICAgIERlYnVnU2VydmVyQnJlYWtwb2ludElEVG9CcmVha3Bv
aW50SWRlbnRpZmllciBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3RvckJy
ZWFrcG9pbnRJZGVudGlmaWVyOwogICAgIEpTQzo6QnJlYWtwb2ludElEIG1fY29udGludWVUb0xv
Y2F0aW9uQnJlYWtwb2ludElEOwotICAgIEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb24gbV9icmVha1JlYXNvbjsKKyAgICBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uIG1fYnJlYWtSZWFzb247CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9i
cmVha0F1eERhdGE7CiAgICAgYm9vbCBtX2VuYWJsZWQge2ZhbHNlfTsKICAgICBib29sIG1famF2
YVNjcmlwdFBhdXNlU2NoZWR1bGVkIHtmYWxzZX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcAppbmRleCA5Yzk3MjVhNWZiMDg3NzgxMzM4ZjNlZTU3YmQxNTNkZGZhNTQzNjE5Li5mNDUz
OTM1ZWIwODdlZDYzMjQwYTBkOTgzNzkyMzJiZTk0OGE4YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTI5Niw5ICsyOTYsOSBAQCBzdGF0aWMgdm9pZCByZWNvbXBpbGVB
bGxKU0Z1bmN0aW9uc0ZvclR5cGVQcm9maWxpbmcoVk0mIHZtLCBib29sIHNob3VsZEVuYWJsZVR5
cAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nv
bm5lY3RSZWFzb24gcmVhc29uKQogewotICAgIGlmIChyZWFzb24gIT0gSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkICYmIG1faXNUeXBlUHJvZmlsaW5n
RW5hYmxlZCkKKyAgICBpZiAocmVhc29uICE9IERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRh
cmdldERlc3Ryb3llZCAmJiBtX2lzVHlwZVByb2ZpbGluZ0VuYWJsZWQpCiAgICAgICAgIHNldFR5
cGVQcm9maWxlckVuYWJsZWRTdGF0ZShmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmgKaW5kZXggMDdlNGZlY2Y5NzBjZDk3MDJhNGJmOWViNTAzYTZlZjk4NjZkMjVlNC4uODcx
M2VjMmIxZTczMmY2ZmU4NTFjZDUzZDE0NDM2OWYwMmQ0NTEzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmgKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNs
YXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBSdW50aW1lQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdl
bnQpOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IHRydWU7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9l
bmFibGVkID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cAppbmRleCBkYzQ0Y2M3ZmY2MTIxMWI2NzcyNmIzMGNiYjRmNGEwY2IzODgxN2YxLi42NThjNjdh
YjE1Zjg5NTIwNWM1NWJiNTI4OWMwYjlkMmU0ZTQwYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgSlNHbG9iYWxPYmplY3RS
dW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW4KIHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFu
bmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBSdW50aW1lQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZv
aWQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJl
YXNvbiByZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudC5oCmluZGV4IGM2NTA2OGU2ODllYzQ1M2EzYzI1NDNhNmY4ZDQ4NTdlZTA4Y2Y3OTcu
LjYzMWJhZWMwZWIzM2RiOWUwODliNWNjYzEzOTFiOTU4MGE3ZmY0ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaApAQCAtMzgsOCArMzgsOCBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQWdlbnQg
ewogcHVibGljOgogICAgIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0
TWFuYWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVu
ZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgSlNDOjpWTSYgZ2xvYmFsVk0oKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNv
bnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKQEAgLTUwLDggKzUwLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGUgeyB9CiAK
IHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JSdW50
aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwor
ICAgIFJlZlB0cjxSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKaW5kZXggOGY3YjQ3MDQxYWQ4
MjA4NmVkNGJmYWVjNzIwYzQzMmE2ODRkZTMxNS4uNWZmMDM1MzU4NGJkZTJlOTkyYzhiMDA5ZGIz
OTZkYmI2YTY1MjViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQuaApAQCAtMzUsMzIgKzM1LDMyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kRGlzcGF0Y2hlciwgdHlwZW5hbWUgQWx0ZXJuYXRlRGlz
cGF0Y2hlcj4KK3RlbXBsYXRlPHR5cGVuYW1lIFRCYWNrZW5kRGlzcGF0Y2hlciwgdHlwZW5hbWUg
VEFsdGVybmF0ZURpc3BhdGNoZXI+CiBjbGFzcyBBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50KGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgc3RkOjp1bmlxdWVfcHRyPEFsdGVybmF0ZURpc3BhdGNoZXI+IGFs
dGVybmF0ZURpc3BhdGNoZXIpCisgICAgQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQoY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8VEFsdGVybmF0ZURpc3BhdGNoZXI+
IGFsdGVybmF0ZURpc3BhdGNoZXIpCiAgICAgICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKGRvbWFp
bk5hbWUpCiAgICAgICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKFdURjo6bW92ZShhbHRlcm5h
dGVEaXNwYXRjaGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpIG92ZXJyaWRlCisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpIG92ZXJyaWRlCiAgICAgewotICAgICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgbnVsbHB0cik7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBUQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgbnVsbHB0cik7CiAgICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURpc3BhdGNoZXIobV9hbHRlcm5h
dGVEaXNwYXRjaGVyLmdldCgpKTsKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRC
YWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcik7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5z
ZXRCYWNrZW5kRGlzcGF0Y2hlcihudWxscHRyKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFsdGVybmF0ZURpc3BhdGNoZXI+IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsK
LSAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFRBbHRlcm5hdGVEaXNwYXRjaGVyPiBtX2FsdGVybmF0ZURpc3BhdGNo
ZXI7CisgICAgUmVmUHRyPFRCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggOGE4ZTdhZDEwMmM0NGQ1Mjk4ZWZh
YmQ1NmNjZWQwMjkzMmI4MmUxZS4uMjQ1NmFjNTkxOWQ4YTBkNTY1OWQ2ZjcxY2MwNzU4OGY2Yzc3
NjhiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50
YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Q2xpZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3Bl
Y3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50
KikgPSAwOwogCi0gICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRFeHRyYUFnZW50
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KSA9IDA7CiAKICAgICBib29sIGNv
bm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhZnJvbnRlbmRDaGFubmVsKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaAppbmRleCBkZDZhYTQ3OGM4ZDQ4ZTI3OTYzNGNjMDBl
YzA1YzliYjUyNTU3YjgzLi43MmZiMGRkM2QzN2MxYjFmYjJlOTIwN2M5ZjJjMWQzYjI0YjMyNGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC0zNCw3ICszNCw4IEBA
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWw7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CisKIHN0cnVjdCBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlSW5mbzsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZSB7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1
cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKICAgICB2aXJ0dWFsIGJvb2wg
aGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5n
KGJvb2wpIHsgfSAvLyBEZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAppbmRleCA1NDI1MTExNGU2M2Fj
NTRhODM1NDM4NjZhZGI1NDIzN2VjOTQxYmViLi4wNjA2MjdmYmQ0NTJlNDc3YjIwNjIwNWJiNDZl
YWQzZGI4NDE5ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogdHlwZWRlZiBWZWN0
b3I8UmVtb3RlSW5zcGVjdG9yQmxvY2s+IFJlbW90ZUluc3BlY3RvclF1ZXVlOwogCi1jbGFzcyBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4sIHB1Ymxp
YyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+LCBwdWJsaWMgRnJvbnRlbmRDaGFubmVsIHsK
IHB1YmxpYzoKICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlKiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0
cmluZyAqZGVzdGluYXRpb24sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVU
eXBlKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vY3BwX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKaW5kZXggMDIxMTVhZTFiZmYzMzYwZDIy
NjRmMGE0MDFkZWNiMTRmOGVjNDU1Yy4uZGY5MGJlOTJkNWI0ZjUzNGFlZjBjM2UwNmZlY2FmNTMx
OTVkNjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CkBAIC0xOTUsNyArMTk1
LDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yOgogICAgICAgICAgICAgICAgIHJldHVybiAnJXMqJyAl
IGNwcF9uYW1lCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKToKICAgICAg
ICAgICAgIGlmIF90eXBlLmlzX2Fub255bW91czoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ0lu
c3BlY3RvciVzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolcyonICUgKF90eXBlLnR5cGVfZG9t
YWluKCkuZG9tYWluX25hbWUsIHVjZmlyc3QocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJyVzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolcyonICUg
KF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIHVjZmlyc3QocGFyYW1ldGVyLnBhcmFt
ZXRlcl9uYW1lKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdJ
bnNwZWN0b3I6OlByb3RvY29sOjolczo6JXMqJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFp
bl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogCkBAIC0yNzAsNyArMjcwLDcgQEAgY2xhc3MgQ3Bw
R2VuZXJhdG9yOgogICAgICAgICAgICAgICAgIHJldHVybiBjcHBfbmFtZQogICAgICAgICBpZiBp
c2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAgICBpZiBfdHlwZS5pc19hbm9u
eW1vdXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIHVjZmly
c3QocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJyVz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21h
aW5fbmFtZSwgdWNmaXJzdChwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpKQogICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OiVzOjol
cycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRl
eCAwMDI4NmFhOGUzZWQyNjg0MzAwZjhlYTdjNjBjNjQyOTdmYTlkZGJmLi4wNWYzNTMwOTc0ZTA1
OWQ3ZjljNjRmOWZlODk2MGU0NTMyY2FmZjhlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9j
cHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtNjYsMTIgKzY2LDEyIEBAICR7aW5jbHVkZXN9
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjpt
b3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsg
fQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRj
aGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAg
IFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAiIiIp
CiAKQEAgLTgzLDYxICs4Myw2MSBAQCBwcml2YXRlOgogI2VuZGlmIC8vICFkZWZpbmVkKCR7aGVh
ZGVyR3VhcmRTdHJpbmd9KSIiIikKIAogICAgIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVh
ZGVyRG9tYWluSGFuZGxlckludGVyZmFjZURlY2xhcmF0aW9uID0gKAotICAgICIiImNsYXNzIEFs
dGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CisgICAgIiIiY2xhc3MgQWx0ZXJu
YXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5h
dGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICR7Y29tbWFuZERlY2xhcmF0
aW9uc30KIH07IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJEb21haW5IYW5kbGVy
RGVjbGFyYXRpb24gPSAoCi0gICAgIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSBJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKKyAgICAiIiIke2NsYXNzQW5k
RXhwb3J0TWFjcm99ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVi
bGljOgogJHtjb21tYW5kRGVjbGFyYXRpb25zfQogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfklu
c3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0
dWFsIH4ke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OyIiIikKIAog
ICAgIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyRG9tYWluRGlzcGF0Y2hlckRlY2xhcmF0aW9uID0g
KAotICAgICIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gSW5zcGVjdG9yJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworICAgICIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30g
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvciR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25z
dCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVy
cmlkZTsKICR7Y29tbWFuZERlY2xhcmF0aW9uc30KIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yJHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXImLCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
Kik7Ci0gICAgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciog
bV9hZ2VudDsKKyAgICAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3Bh
dGNoZXImLCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgJHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFs
dGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIo
QWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRj
aGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHBy
aXZhdGU6Ci0gICAgQWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07IiIiKQog
CiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJBc3luY0NvbW1hbmREZWNsYXJhdGlvbiA9ICgK
LSAgICAiIiIgICAgJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2NhbGxiYWNrTmFtZX0gOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsK
KyAgICAiIiIgICAgJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2NhbGxiYWNrTmFtZX0gOiBwdWJs
aWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgotICAgICAg
ICAke2NhbGxiYWNrTmFtZX0oUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+JiYsIGludCBpZCk7CisgICAgICAgICR7Y2FsbGJhY2tOYW1lfShSZWY8QmFja2VuZERpc3Bh
dGNoZXI+JiYsIGludCBpZCk7CiAgICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoJHtvdXRQYXJhbWV0
ZXJzfSk7CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgJHtjb21tYW5kTmFtZX0oJHtpblBhcmFt
ZXRlcnN9KSA9IDA7IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvblNt
YWxsU3dpdGNoID0gKAotICAgICIiInZvaWQgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKKyAgICAiIiJ2b2lkICR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVm
PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAKICR7ZGlz
cGF0Y2hDYXNlc30KICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9y
dFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhv
ZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcXCcnLCAiJHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9k
LCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3Vu
ZCwgbWFrZVN0cmluZygnXFwnJywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1ldGhvZCwgIicgd2Fz
IG5vdCBmb3VuZCIpKTsKIH0iIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0
aW9uTGFyZ2VTd2l0Y2ggPSAoCi0iIiJ2b2lkIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCisiIiJ2b2lkICR7ZG9tYWluTmFtZX1CYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3RvciR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPCR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAKLSAgICB0eXBl
ZGVmIHZvaWQgKEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6KkNhbGxI
YW5kbGVyKShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpOworICAgIHR5cGVkZWYgdm9pZCAoJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVy
OjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiBEaXNwYXRjaE1h
cDsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGlzcGF0Y2hNYXAsIGRpc3Bh
dGNoTWFwLCAoKSk7CiAgICAgaWYgKGRpc3BhdGNoTWFwLmlzRW1wdHkoKSkgewpAQCAtMTU0LDcg
KzE1NCw3IEBAICR7ZGlzcGF0Y2hDYXNlc30KIAogICAgIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFu
ZGxlcj46Oml0ZXJhdG9yIGl0ID0gZGlzcGF0Y2hNYXAuZmluZChtZXRob2QpOwogICAgIGlmIChp
dCA9PSBkaXNwYXRjaE1hcC5lbmQoKSkgewotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpN
ZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXFwnJywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1l
dGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+
cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90
Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2RvbWFpbk5hbWV9IiwgJy4nLCBtZXRob2QsICIn
IHdhcyBub3QgZm91bmQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2MiwxMyAr
MTYyLDEzIEBAICR7ZGlzcGF0Y2hDYXNlc30KIH0iIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hl
ckltcGxlbWVudGF0aW9uRG9tYWluQ29uc3RydWN0b3IgPSAoCi0gICAgIiIiUmVmPEluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyLCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKiBhZ2VudCkKKyAgICAiIiJSZWY8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPiAk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIsICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
IGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvciR7ZG9tYWluTmFt
ZX1CYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5k
RGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyOjpJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3Ike2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IEluc3BlY3RvclN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQorJHtkb21haW5O
YW1lfUJhY2tlbmREaXNwYXRjaGVyOjoke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoQmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCAke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRj
aGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcihudWxscHRyKQpAQCAtMTg0LDE1ICsxODQsMTUgQEAgSW5zcGVjdG9yJHtkb21haW5OYW1l
fUJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXIKICR7aW5QYXJhbWV0ZXJEZWNsYXJhdGlvbnN9CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5s
ZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQo
IlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCBcJyVzXCcgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIiR7
ZG9tYWluTmFtZX0uJHtjb21tYW5kTmFtZX0iKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMp
KTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2Fs
bElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6
Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICIiIikKIAog
ICAgIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25Bc3luY0NvbW1hbmQgPSAoCi0iIiJJ
bnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjoke2NhbGxiYWNr
TmFtZX06OiR7Y2FsbGJhY2tOYW1lfShSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYg
YmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQp
IHsgfQorIiIiJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFj
a05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmRE
aXNwYXRjaGVyLCBpbnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEY6
Om1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFja05hbWV9OjpzZW5kU3Vj
Y2Vzcygke2Zvcm1hbFBhcmFtZXRlcnN9KQordm9pZCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjoke2NhbGxiYWNrTmFtZX06OnNlbmRTdWNjZXNzKCR7Zm9ybWFsUGFyYW1l
dGVyc30pCiB7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwogJHtvdXRQYXJhbWV0ZXJBc3NpZ25tZW50c30KQEAgLTIwMCwy
NiArMjAwLDI2IEBAICR7b3V0UGFyYW1ldGVyQXNzaWdubWVudHN9CiB9IiIiKQogCiAgICAgRnJv
bnRlbmREaXNwYXRjaGVyRG9tYWluRGlzcGF0Y2hlckRlY2xhcmF0aW9uID0gKAotIiIiJHtjbGFz
c0FuZEV4cG9ydE1hY3JvfSBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9RnJvbnRlbmREaXNwYXRjaGVy
IHsKKyIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yJHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0
Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkg
OiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsg
fQorICAgICR7ZG9tYWluTmFtZX1Gcm9udGVuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwpIDogbV9mcm9udGVuZENoYW5uZWwoZnJvbnRlbmRDaGFubmVsKSB7IH0K
ICR7ZXZlbnREZWNsYXJhdGlvbnN9CiBwcml2YXRlOgotICAgIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgRnJvbnRlbmRDaGFubmVsKiBt
X2Zyb250ZW5kQ2hhbm5lbDsKIH07IiIiKQogCiAgICAgUHJvdG9jb2xPYmplY3RCdWlsZGVyRGVj
bGFyYXRpb25QcmVsdWRlID0gKAogIiIiICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFz
cyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBt
X3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNU
RVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBCdWlsZGVyKFJlZjwvKiR7b2JqZWN0VHlwZX0qL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8Lyoke29iamVjdFR5cGV9Ki9JbnNw
ZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUo
b2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0g
Tm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC0yMzIs
OSArMjMyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmPCR7b2JqZWN0VHlwZX0+IHJlbGVhc2Uo
KQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVs
ZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKCR7b2JqZWN0VHlwZX0pID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZigke29i
amVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0g
ICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVz
dWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8JHtvYmplY3RUeXBlfT4qPigmcmVzdWx0KSk7
CiAgICAgICAgIH0KICAgICB9OwpAQCAtMjQ1LDE5ICsyNDUsMTkgQEAgJHtjb25zdHJ1Y3RvckV4
YW1wbGV9CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgp
CiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVs
ZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0iIiIpCiAKICAgICBQcm90
b2NvbE9iamVjdFJ1bnRpbWVDYXN0ID0gKAotIiIiUmVmUHRyPCR7b2JqZWN0VHlwZX0+IEJpbmRp
bmdUcmFpdHM8JHtvYmplY3RUeXBlfT46OnJ1bnRpbWVDYXN0KFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiYmIHZhbHVlKQorIiIiUmVmUHRyPCR7b2JqZWN0VHlwZX0+IEJpbmRpbmdU
cmFpdHM8JHtvYmplY3RUeXBlfT46OnJ1bnRpbWVDYXN0KFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4m
JiB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3Vs
dDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQ7CiAgICAgYm9vbCBjYXN0U3Vj
Y2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KHJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0
U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgQmlu
ZGluZ1RyYWl0czwke29iamVjdFR5cGV9Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUocmVz
dWx0LmdldCgpKTsKICNlbmRpZiAgLy8gIUFTU0VSVF9ESVNBQkxFRAotICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZigke29iamVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDwk
e29iamVjdFR5cGV9Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNl
Kj4ocmVzdWx0LmdldCgpKSk7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCR7b2JqZWN0VHlw
ZX0pID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDwke29iamVjdFR5cGV9Kj4oc3RhdGljX2Nhc3Q8SW5zcGVj
dG9yT2JqZWN0QmFzZSo+KHJlc3VsdC5nZXQoKSkpOwogfQogIiIiKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hl
YWRlci5weQppbmRleCBhMjQxYzUzMDZhNDIxMjczMzUzYjAwNWM4NTA2Zjg0OGY1OTI5NDM4Li4y
M2U3ZDk5NzNjNmYyMDdkYjk0MjgzNTNmNzdlNDAyYzNkZGQxNzE5IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBf
YmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVy
X2hlYWRlci5weQpAQCAtODIsNyArODIsNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckhl
YWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxp
bmVzLmFwcGVuZCgnI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKScp
CiAgICAgICAgIGZvciBkb21haW4gaW4gZG9tYWluczoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZChzZWxmLndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ2NsYXNzIEFsdGVybmF0
ZUluc3BlY3RvciVzQmFja2VuZERpc3BhdGNoZXI7JyAlIGRvbWFpbi5kb21haW5fbmFtZSkpCisg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihk
b21haW4sICdjbGFzcyBBbHRlcm5hdGUlc0JhY2tlbmREaXNwYXRjaGVyOycgJSBkb21haW4uZG9t
YWluX25hbWUpKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyknKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxp
bmVzKQogCkBAIC0xOTcsNCArMTk3LDQgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFk
ZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuIHNlbGYud3JhcF93aXRoX2d1
YXJkX2Zvcl9kb21haW4oZG9tYWluLCBUZW1wbGF0ZShDcHBUZW1wbGF0ZXMuQmFja2VuZERpc3Bh
dGNoZXJIZWFkZXJEb21haW5EaXNwYXRjaGVyRGVjbGFyYXRpb24pLnN1YnN0aXR1dGUoTm9uZSwg
KipoYW5kbGVyX2FyZ3MpKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xhcmF0
aW9uX2Zvcl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICByZXR1cm4gIiAgICB2b2lk
ICVzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2Fn
ZSk7IiAlIGNvbW1hbmQuY29tbWFuZF9uYW1lCisgICAgICAgIHJldHVybiAiICAgIHZvaWQgJXMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7IiAlIGNvbW1hbmQu
Y29tbWFuZF9uYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRl
eCA1ODJkZTRiNGE0Y2FkYmFjYWJmZjkyZDBmYzMxYzkwZTkzMTY0MWExLi5kY2Q2NjRhNzA2OTdm
NjVkODI4ZjgxMzdlMmY4YTU1ZjJlNTI0M2M0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24ucHkKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBkZXN0cnVjdG9y
X2FyZ3MgPSB7CiAgICAgICAgICAgICAnZG9tYWluTmFtZSc6IGRvbWFpbi5kb21haW5fbmFtZQog
ICAgICAgICB9Ci0gICAgICAgIGRlc3RydWN0b3IgPSAnSW5zcGVjdG9yJShkb21haW5OYW1lKXNC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0JhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcigpIHsgfScgJSBkZXN0cnVjdG9yX2FyZ3MKKyAgICAgICAgZGVzdHJ1
Y3RvciA9ICclKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fiUoZG9tYWlu
TmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9JyAlIGRlc3RydWN0b3JfYXJncwog
ICAgICAgICByZXR1cm4gc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sIGRl
c3RydWN0b3IpCiAKICAgICBkZWYgX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25z
X2Zvcl9kb21haW4oc2VsZiwgZG9tYWluKToKQEAgLTEyMyw3ICsxMjMsNyBAQCBjbGFzcyBDcHBC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAg
ICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCiAgICAgICAgICAg
ICAgICAgJ2NvbW1hbmROYW1lJzogY29tbWFuZC5jb21tYW5kX25hbWUKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgnICAgICAgICAgICAgeyAiJShjb21tYW5kTmFtZSlz
IiwgJkluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5h
bWUpcyB9LCcgJSBhcmdzKQorICAgICAgICAgICAgY2FzZXMuYXBwZW5kKCcgICAgICAgICAgICB7
ICIlKGNvbW1hbmROYW1lKXMiLCAmJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShj
b21tYW5kTmFtZSlzIH0sJyAlIGFyZ3MpCiAKICAgICAgICAgc3dpdGNoX2FyZ3MgPSB7CiAgICAg
ICAgICAgICAnZG9tYWluTmFtZSc6IGRvbWFpbi5kb21haW5fbmFtZSwKQEAgLTE5Miw3ICsxOTIs
NyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgICAgICAgICAgJ3N1Y2Nlc3NPdXRQYXJhbSc6IG91dF9zdWNjZXNz
X2FyZ3VtZW50CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGluX3BhcmFtZXRlcl9kZWNs
YXJhdGlvbnMuYXBwZW5kKCcgICAgJShwYXJhbWV0ZXJUeXBlKXMgaW5fJShwYXJhbWV0ZXJOYW1l
KXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6JShrZXllZEdldE1ldGhvZClzKHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCAlKHN1
Y2Nlc3NPdXRQYXJhbSlzLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7JyAlIHBhcmFtX2FyZ3MpCisg
ICAgICAgICAgICBpbl9wYXJhbWV0ZXJfZGVjbGFyYXRpb25zLmFwcGVuZCgnICAgICUocGFyYW1l
dGVyVHlwZSlzIGluXyUocGFyYW1ldGVyTmFtZSlzID0gQmFja2VuZERpc3BhdGNoZXI6OiUoa2V5
ZWRHZXRNZXRob2QpcyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiJShwYXJh
bWV0ZXJOYW1lKXMiKSwgJShzdWNjZXNzT3V0UGFyYW0pcywgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OycgJSBwYXJhbV9hcmdzKQogCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6
CiAgICAgICAgICAgICAgICAgb3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZyA9ICclKHBhcmFt
ZXRlck5hbWUpc192YWx1ZUZvdW5kID8gJShwYXJhbWV0ZXJFeHByZXNzaW9uKXMgOiBudWxscHRy
JyAlIHBhcmFtX2FyZ3MKQEAgLTIwOSw3ICsyMDksNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGNh
bGxiYWNrLT5kaXNhYmxlKCk7JykKLSAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVu
dHMuYXBwZW5kKCcgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJy
b3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVy
RXJyb3IsIGVycm9yKTsnKQorICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5h
cHBlbmQoJyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigm
Y2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTsnKQogICAgICAg
ICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgcmV0dXJuOycp
CiAgICAgICAgICAgICBtZXRob2RfcGFyYW1ldGVycy5hcHBlbmQoJ2NhbGxiYWNrLmNvcHlSZWYo
KScpCiAKQEAgLTI1MSw5ICsyNTEsOSBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAgICAgICAgbGluZXMgPSBbXQogICAg
ICAgICBpZiBsZW4oY29tbWFuZC5jYWxsX3BhcmFtZXRlcnMpID09IDA6Ci0gICAgICAgICAgICBs
aW5lcy5hcHBlbmQoJ3ZvaWQgSW5zcGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hl
cjo6JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKScg
JSBjb21tYW5kX2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJShkb21haW5O
YW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmKScgJSBjb21tYW5kX2FyZ3MpCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgSW5zcGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5k
RGlzcGF0Y2hlcjo6JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpJyAlIGNvbW1hbmRfYXJncykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgndm9pZCAlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVyOjolKGNvbW1hbmROYW1lKXMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSknICUgY29tbWFuZF9h
cmdzKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQogCiAgICAgICAgIGlmIGxlbihjb21tYW5k
LmNhbGxfcGFyYW1ldGVycykgPiAwOgpAQCAtMjcwLDcgKzI3MCw3IEBAIGNsYXNzIENwcEJhY2tl
bmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgRXJyb3JTdHJpbmcgZXJyb3I7JykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsnKQogICAgICAgICBpZiBjb21tYW5kLmlzX2FzeW5jOgotICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgUmVmPEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjolKGNhbGxiYWNrTmFtZSlzPiBjYWxsYmFjayA9IGFkb3B0UmVmKCpuZXcgSW5z
cGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiUoY2FsbGJhY2tO
YW1lKXMobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOycgJSBjb21tYW5k
X2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBSZWY8JShkb21haW5OYW1lKXNC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiUoY2FsbGJhY2tOYW1lKXM+IGNhbGxiYWNrID0gYWRv
cHRSZWYoKm5ldyAlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JShjYWxs
YmFja05hbWUpcyhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7JyAlIGNv
bW1hbmRfYXJncykKICAgICAgICAgaWYgbGVuKGNvbW1hbmQucmV0dXJuX3BhcmFtZXRlcnMpID4g
MDoKICAgICAgICAgICAgIGxpbmVzLmV4dGVuZChvdXRfcGFyYW1ldGVyX2RlY2xhcmF0aW9ucykK
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgbV9hZ2VudC0+JShjb21tYW5kTmFtZSlzKCUoaW52
b2NhdGlvblBhcmFtZXRlcnMpcyk7JyAlIGNvbW1hbmRfYXJncykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3Bh
dGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggYmRiOGRiYzI3YzM4MTQ3MDVjYzBkMGZmMjQ0
Yjc5YWRiMzVjMmU1MS4uNzk4MTU3YTA2MDg5ZTUyMzI4NWMzZDRiZjFmYTBhZDcxMTE2ZWIzZSAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEwNSw3ICsx
MDUsNyBAQCBjbGFzcyBDcHBGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRv
cihHZW5lcmF0b3IpOgogICAgICAgICAgICAgJ2Zvcm1hbFBhcmFtZXRlcnMnOiAiLCAiLmpvaW4o
Zm9ybWFsX3BhcmFtZXRlcnMpCiAgICAgICAgIH0KIAotICAgICAgICBsaW5lcy5hcHBlbmQoJ3Zv
aWQgSW5zcGVjdG9yJShkb21haW5OYW1lKXNGcm9udGVuZERpc3BhdGNoZXI6OiUoZXZlbnROYW1l
KXMoJShmb3JtYWxQYXJhbWV0ZXJzKXMpJyAlIGV2ZW50X2FyZ3MpCisgICAgICAgIGxpbmVzLmFw
cGVuZCgndm9pZCAlKGRvbWFpbk5hbWUpc0Zyb250ZW5kRGlzcGF0Y2hlcjo6JShldmVudE5hbWUp
cyglKGZvcm1hbFBhcmFtZXRlcnMpcyknICUgZXZlbnRfYXJncykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCd7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
anNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOycpCiAgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2Qi
KSwgQVNDSUlMaXRlcmFsKCIlKGRvbWFpbk5hbWUpcy4lKGV2ZW50TmFtZSlzIikpOycgJSBldmVu
dF9hcmdzKQpAQCAtMTE2LDYgKzExNiw2IEBAIGNsYXNzIENwcEZyb250ZW5kRGlzcGF0Y2hlcklt
cGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdU
Rjo6bW92ZShwYXJhbXNPYmplY3QpKTsnKQogCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOycpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRl
bmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQogICAgICAgICBsaW5lcy5hcHBlbmQo
J30nKQogICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDZkNTIwMWYwNzI3Y2IzNGJiNjQ0Nzc2NGNj
ZjAyOGE5NGYzNmM1MDIuLmZiMmRlNGY2MWYzZmMwMWQ3YTQ2MDgwOGE5ODU1YzVhZGEyZjkwMDAg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTk4LDcg
Kzk4LDcgQEAgY2xhc3MgT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBwZW5k
KHNlbGYuX2dlbmVyYXRlX2V2ZW50X3NpZ25hdHVyZShkb21haW4sIGV2ZW50KSkKICAgICAgICAg
bGluZXMuYXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFu
bmVsKCk7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7JykKICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpJykKICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgICAgIHJldHVybjsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJycpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggMTBk
M2Q3YTRiYTZlNzYyZDI1MTQxNTZmMTNlZjMwMWQ4MjZkNTYzMC4uYTAyZjI2ODE2MDljMzdmOGUz
YjA0ODhhOGZhYWJlZjhlNzc5YjYyYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNf
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtOTMsMTQgKzkzLDE0IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7IiIiKQogICAgICIiIiIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySGVh
ZGVyRG9tYWluSGFuZGxlckludGVyZmFjZURlY2xhcmF0aW9uID0gKAotICAgICIiImNsYXNzIEFs
dGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CisgICAgIiIiY2xhc3MgQWx0ZXJu
YXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5h
dGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICR7Y29tbWFuZERlY2xhcmF0
aW9uc30KIH07IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJEb21haW5IYW5kbGVy
T2JqQ0RlY2xhcmF0aW9uID0gKAotICAgICIiImNsYXNzIE9iakNJbnNwZWN0b3Ike2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yJHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIHsKKyAgICAiIiJjbGFzcyBPYmpDSW5zcGVjdG9y
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0ZSR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgT2JqQ0luc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihpZDwke29iamNQcmVmaXh9JHtkb21haW5O
YW1lfURvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICR7
Y29tbWFuZERlY2xhcmF0aW9uc30KQEAgLTEzNyw3ICsxMzcsNyBAQCAke2ludm9jYXRpb259CiAg
ICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCiAg
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUluc3Bl
Y3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiJHtkb21h
aW5OYW1lfSIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0
ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCIke2RvbWFpbk5hbWV9IiksIFdURjo6bW92
ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGOjptb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJp
YnV0ZS5qc29uLXJlc3VsdAppbmRleCBjZmY5ODllMTYxODhhYTQ0MDczYjliNWI5YTNmYjM2NGQ2
NWIzNGVmLi4wYzZjN2ZkYWJiMmJlYjc3ZTZmZDE2NGIyM2VjNGVhOWQyMDU3MmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0zOSwxOCArMzksMTggQEAKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoK
LSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUo
ZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYg
ZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIp
OyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVm
UHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCi1jbGFz
cyBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFs
dGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZURhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIg
ewogcHVibGljOgotICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcm
IGluX3F1ZXJ5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5n
JiBpbl9xdWVyeSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNh
bGxJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpID0gMDsKQEAg
LTE0OCwxMCArMTQ4LDEwIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7Citj
bGFzcyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1ldGVyICdz
Y3JlZW5Db2xvcicgd2hpbGUgZ2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXMuCiAgICAgZW51bSBjbGFzcyBTY3JlZW5Db2xvciB7CkBAIC0x
NjYsNDEgKzE2Niw0MSBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJs
YWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGludCBp
bl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRf
dmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29s
b3JzLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xv
ciogb3B0X291dF9wcmludENvbG9yKSA9IDA7Ci0gICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgeworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
U1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiog
b3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0
X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVy
cm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlBy
aW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29s
b3IpID0gMDsKKyAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0Nh
bGxiYWNrIDogcHVibGljIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFj
ayhSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsK
KyAgICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8
QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7CiAgICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3Mo
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBh
eWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNv
bG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3Ip
OwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5f
cXVlcnksIFJlZjxFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiYm
IGNhbGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3Ry
aW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJp
bmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxv
YWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6Q29sb3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENv
bG9yKSA9IDA7Ci0gICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsKKyAgICB2
aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUq
IG91dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxF
cnJvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBv
dXRfYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICBjbGFzcyBFeGVjdXRlU1FM
QXN5bmNDYWxsYmFjayA6IHB1YmxpYyBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICBFeGVj
dXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7CiAg
ICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1l
c3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IHZhbHVlcywgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5D
b2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYg
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpOwogICAgIH07CiAgICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luYyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWY8RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s+
JiYgY2FsbGJhY2spID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVh
dGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8RGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKTsKLSAgICB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7
Ci0gICAgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgZXhlY3V0ZVNRTEFzeW5jKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAg
dm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgZXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVz
c2FnZSk7CisgICAgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVTUUxBc3luYyhsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyJiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsK
LSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsK
KyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJu
YXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CisgICAg
dm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0
ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgQWx0ZXJu
YXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwogI2Vu
ZGlmCiB9OwogCkBAIC0yNTMsMTUgKzI1MywxNSBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5J
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cigpIHsgfQogCi1SZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIGFnZW50KQorUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
KCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0K
IAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3Bh
dGNoZXIsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkK
LSAgICA6IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNw
YXRjaGVyKQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlz
cGF0Y2hlcihudWxscHRyKQpAQCAtMjcwLDkgKzI3MCw5IEBAIEluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWlu
KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1l
dGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAKICAgICBpZiAobWV0aG9k
ID09ICJleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzIikKICAgICAgICAgZXhlY3V0
ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhjYWxsSWQsIG1lc3NhZ2UpOwpAQCAtMjgzLDE5
ICsyODMsMTkgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKICAgICBlbHNlIGlmIChtZXRob2Qg
PT0gImV4ZWN1dGVTUUxBc3luYyIpCiAgICAgICAgIGV4ZWN1dGVTUUxBc3luYyhjYWxsSWQsIG1l
c3NhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJv
dG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90
Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRhdGFiYXNlIiwgJy4nLCBtZXRob2QsICInIHdhcyBu
b3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3Ry
aW5nKCdcJycsICJEYXRhYmFzZSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwog
fQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxT
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKQogewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBwYXJhbXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJw
YXJhbXMiKSwgcGFyYW1zQ29udGFpbmVyKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKLSAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0
ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAg
U3RyaW5nIGluX3F1ZXJ5ID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBt
ZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmNP
cHRpb25hbFJldHVyblZhbHVlcyIpOwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZh
bGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJh
Y2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShw
cm90b2NvbEVycm9ycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTcsNyArMzE3
LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FM
U3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRl
Q29sb3JzOwotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQ
cmludENvbG9yIG91dF9wcmludENvbG9yOworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVT
UUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoZXJyb3IsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5
LCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVz
LCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVl
bkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYg
KCFlcnJvci5sZW5ndGgoKSkgewpAQCAtMzQ1LDkgKzM0NSw5IEBAIHZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhsb25nCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RG
Ojptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0KIAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJh
Y2s6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2soUmVmPEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92
ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpFeGVj
dXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0
Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQogCi12b2lk
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcGF5bG9hZCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+
KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+
IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBpZiAoY29sdW1u
TmFtZXMpCkBAIC0zNzMsMTYgKzM3MywxNiBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbAogICAg
IHNlbmRJZkFjdGl2ZShXVEY6Om1vdmUoanNvbk1lc3NhZ2UpLCBFcnJvclN0cmluZygpKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKQogewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBwYXJhbXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJw
YXJhbXMiKSwgcGFyYW1zQ29udGFpbmVyKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKLSAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0
ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAg
U3RyaW5nIGluX3F1ZXJ5ID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBt
ZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVw
b3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW52
YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBC
YWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUo
cHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzk1LDI2ICsz
OTUsMjYgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb24KIAogICAgIEVycm9yU3RyaW5nIGVycm9y
OwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjayA9
IGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sobV9iYWNrZW5kRGlz
cGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOworICAgIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFj
az4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKG1fYmFja2Vu
ZERpc3BhdGNoZXIuY29weVJlZigpLCBjYWxsSWQpKTsKICAgICBtX2FnZW50LT5leGVjdXRlU1FM
QXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnks
IGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoZXJyb3IubGVuZ3RoKCkpIHsKICAgICAg
ICAgY2FsbGJhY2stPmRpc2FibGUoKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVw
b3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJF
cnJvciwgZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
IG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBh
cmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OwotICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRT
dHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxw
dHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tl
bmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBT
dHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRh
aW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9y
cy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBT
dHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1l
dGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMU3luYyIp
OwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3Nh
Z2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpJbnZh
bGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGUKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiBvdXRfc3FsRXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7CiAgICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwotICAgIEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91dF9wcmludENv
bG9yOworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91
dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxTeW5jKGVycm9yLCBpbl9kYXRh
YmFzZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVz
dGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxF
cnJvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmludENv
bG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKQEAgLTQ1NCw5ICs0NTQsOSBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZQogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNw
b25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLUluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2soUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYm
IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlk
KSB7IH0KK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmND
YWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2soUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYm
IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZShXVEY6Om1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxi
YWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywg
Y29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIHBheWxvYWQsIGludCBk
YXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYm
IHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0
cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2Fn
ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldEFycmF5
KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgY29sdW1uTmFtZXMpOwpAQCAtNDcyLDE2ICs0
NzIsMTYgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWMKICAgICBzZW5kSWZBY3RpdmUoV1RGOjpt
b3ZlKGpzb25NZXNzYWdlKSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBt
ZXNzYWdlKQogewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBw
YXJhbXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJh
bXMiKSwgcGFyYW1zQ29udGFpbmVyKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVND
SUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
LSAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3Ry
aW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3Ry
aW5nIGluX3F1ZXJ5ID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWlu
ZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMu
Z2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRo
b2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5jIik7
Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2Fn
ZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFs
aWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ5NCwxMiArNDk0LDEyIEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwCiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZjxJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJh
Y2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sobV9iYWNrZW5kRGlzcGF0Y2hl
ci5jb3B5UmVmKCksIGNhbGxJZCkpOworICAgIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoKm5l
dyBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJh
Y2sobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOwogICAgIG1fYWdlbnQt
PmV4ZWN1dGVTUUxBc3luYyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIGNhbGxiYWNr
LmNvcHlSZWYoKSk7CiAKICAgICBpZiAoZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgY2FsbGJh
Y2stPmRpc2FibGUoKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9j
b2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpT
ZXJ2ZXJFcnJvciwgZXJyb3IpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQ
cm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJy
b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtNjg0LDE0ICs2ODQsMTQgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBw
cml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVz
dWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAg
ICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxT
VEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwv
KkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1
aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTcxNiw5ICs3MTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxF
cnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNU
QVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAg
ICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZyZXN1bHQpKTsKICAgICAgICAg
fQogICAgIH07CkBAIC03MzIsNyArNzMyLDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRp
YyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC04NDgsNyArODQ4LDcgQEAgU3RyaW5nIGdldEVudW1D
b25zdGFudFZhbHVlKGludCBjb2RlKSB7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCi1jbGFz
cyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBB
bHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIE9iakNJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0
ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKGlkPFJXSVByb3RvY29sRGF0YWJhc2VEb21haW5IYW5k
bGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9CiAgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSBvdmVycmlkZTsKQEAgLTkzNyw3ICs5
MzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIF9kYXRhYmFzZUhhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJh
bCgiRGF0YWJhc2UiKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRv
IGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92
ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9u
YWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA5MDU4NzEwOThlNDc1
YTM5Y2E2ZjkwNmQ1NTU2MGY4MDk5NGQ3MTE0Li5jYTdlMWE3YTkyMDUwNTU5ZDlkMzA2NmJjYjIx
OGE0MTBlZDY5M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAg
IHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNw
YXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2
b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNw
YXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0K
KyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFs
dGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBw
dWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
cyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYg
aW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5f
dGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5f
dmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25z
dCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3Rl
cywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYmIGluX3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2Fk
LCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNv
bnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgPSAwOwogfTsKQEAgLTE0MywxMCArMTQzLDEwIEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLWNsYXNzIEFsdGVybmF0
ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5hdGVEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBw
dWJsaWM6CiAgICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1ldGVyICdzY3JlZW5Db2xvcicgd2hpbGUg
Z2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMuCiAg
ICAgZW51bSBjbGFzcyBTY3JlZW5Db2xvciB7CkBAIC0xNjEsMjcgKzE2MSwyNyBAQCBwdWJsaWM6
CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVt
IGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3Vi
bGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYmIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9h
ZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3Is
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNv
bG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFs
dWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGlu
dD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciog
b3B0X291dF9wcmludENvbG9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3Vi
bGUgaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBp
bl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYg
aW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3Ry
aW5nJiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3Rp
bWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNv
bG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91
dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyog
aW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3Ry
aW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5O
YW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90
ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVz
dGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29s
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0
X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQ
cmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5f
bm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5
bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3Jz
LCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91
YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3ZhbHVl
cywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFi
YXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRf
c3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBv
dXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCB+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAg
ICB2aXJ0dWFsIH5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKIAotY2xh
c3MgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFsQmFja2Vu
ZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2Qs
IFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAg
ICBzdGF0aWMgUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlz
cGF0Y2hlciosIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPElu
c3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAgdm9pZCBl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0gICAgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBt
ZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxs
SWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBleGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVz
c2FnZSk7CiBwcml2YXRlOgotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlciYsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7
CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBz
ZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0g
YWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihB
bHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7
IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6
Ci0gICAgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRl
cm5hdGVEaXNwYXRjaGVyOworICAgIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIq
IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjM0LDE1ICsyMzQsMTUg
QEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIoKSB7IH0KK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KIAotUmVmPEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI+IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIElu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPiBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigqYmFj
a2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK0RhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tl
bmREaXNwYXRjaGVyLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisg
ICAgOiBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAg
ICAsIG1fYWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCiAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTI1MSw0NiAr
MjUxLDQ2IEBAIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwg
dGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlz
cGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiYmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4m
JiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gcHJv
dGVjdCgqdGhpcyk7CiAKICAgICBpZiAobWV0aG9kID09ICJleGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzIikKICAgICAgICAgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIG1l
c3NhZ2UpOwogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzIikKICAgICAgICAgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGNhbGxJZCwgbWVzc2Fn
ZSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3Vu
ZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBm
b3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmco
J1wnJywgIkRhdGFiYXNlIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlv
bmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdl
KQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAg
ICAgYXV0byBwcm90b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5l
cjsKICAgICBtZXNzYWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXND
b250YWluZXIpOwogICAgIGJvb2wgY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFT
Q0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgJmNvbHVtbk5hbWVzX3ZhbHVlRm91bmQsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4g
aW5fY29sdW1uTmFtZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksICZjb2x1bW5OYW1lc192YWx1
ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBub3Rlc192YWx1ZUZvdW5k
ID0gZmFsc2U7Ci0gICAgU3RyaW5nIGluX25vdGVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgibm90ZXMi
KSwgJm5vdGVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcg
aW5fbm90ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5n
ZXQoKSwgQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAmbm90ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xF
cnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgdGltZXN0YW1wX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBpbl90aW1lc3RhbXAgPSBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgJnRpbWVzdGFtcF92YWx1ZUZvdW5kLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRv
dWJsZT4gaW5fdGltZXN0YW1wID0gQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShwYXJhbXND
b250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZ0aW1lc3RhbXBfdmFs
dWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgdmFsdWVzX3ZhbHVlRm91
bmQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3Zh
bHVlcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmdmFsdWVzX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGluX3ZhbHVlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmdmFsdWVzX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHBheWxvYWRfdmFsdWVGb3VuZCA9IGZhbHNl
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBpbl9wYXlsb2FkID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICZwYXlsb2FkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJy
b3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5
bG9hZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAmcGF5bG9hZF92YWx1ZUZvdW5kLCBwcm90b2NvbEVy
cm9ycy5nZXQoKSk7CiAgICAgYm9vbCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAg
ICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRl
Z2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZk
YXRhYmFzZUlkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBpbnQgaW5f
ZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZkYXRhYmFzZUlkX3ZhbHVlRm91
bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHNxbEVycm9yX3ZhbHVlRm91bmQg
PSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVy
cm9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWlu
ZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGluX3NxbEVycm9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXND
b250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVl
Rm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHNjcmVlbkNvbG9yX3ZhbHVl
Rm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJzY3JlZW5Db2xvciIpLCAmc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9zY3JlZW5Db2xvciA9IEJhY2tlbmREaXNwYXRjaGVy
OjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNv
bG9yIiksICZzY3JlZW5Db2xvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAg
ICAgYm9vbCBhbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxp
dGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCAmYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgJmFsdGVy
bmF0ZUNvbG9yc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBw
cmludENvbG9yX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fcHJpbnRDb2xvciA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgJnByaW50Q29sb3JfdmFsdWVGb3VuZCwg
cHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9wcmludENvbG9yID0gQmFja2Vu
ZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgicHJpbnRDb2xvciIpLCAmcHJpbnRDb2xvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5n
ZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhv
ZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzIik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMs
IGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3Bh
dGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJy
b3JzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMobG9uZyBjYWxsSQogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0g
ICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Ig
b3V0X3ByaW50Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhlcnJvciwgY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA/IGluX2NvbHVtbk5hbWVz
LmNvcHlSZWYoKSA6IG51bGxwdHIsIG5vdGVzX3ZhbHVlRm91bmQgPyAmaW5fbm90ZXMgOiBudWxs
cHRyLCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA/ICZpbl90aW1lc3RhbXAgOiBudWxscHRyLCB2YWx1
ZXNfdmFsdWVGb3VuZCA/IGluX3ZhbHVlcy5jb3B5UmVmKCkgOiBudWxscHRyLCBwYXlsb2FkX3Zh
bHVlRm91bmQgPyBpbl9wYXlsb2FkLmNvcHlSZWYoKSA6IG51bGxwdHIsIGRhdGFiYXNlSWRfdmFs
dWVGb3VuZCA/ICZpbl9kYXRhYmFzZUlkIDogbnVsbHB0ciwgc3FsRXJyb3JfdmFsdWVGb3VuZCA/
IGluX3NxbEVycm9yLmNvcHlSZWYoKSA6IG51bGxwdHIsIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQg
PyAmaW5fc2NyZWVuQ29sb3IgOiBudWxscHRyLCBhbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA/
IGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCkgOiBudWxscHRyLCBwcmludENvbG9yX3ZhbHVl
Rm91bmQgPyAmaW5fcHJpbnRDb2xvciA6IG51bGxwdHIsIG91dF9jb2x1bW5OYW1lcywgJm91dF9u
b3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRh
YmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xv
cnMsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CkBAIC0z
NDAsMjQgKzM0MCwyNCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSQogICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQog
ewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNDb250
YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgcGFy
YW1zQ29udGFpbmVyKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5f
Y29sdW1uTmFtZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIG51bGxwdHIsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBTdHJpbmcgaW5fbm90ZXMgPSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJub3RlcyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgZG91Ymxl
IGluX3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUocGFy
YW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBudWxscHRyLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBpbl92YWx1ZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgbnVsbHB0ciwgcHJv
dG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiBpbl9wYXlsb2FkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG51bGxwdHIsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVycm9yID0gSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJ
TGl0ZXJhbCgic3FsRXJyb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAg
IFN0cmluZyBpbl9zY3JlZW5Db2xvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRT
dHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiks
IG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRl
cm5hdGVDb2xvcnMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmlu
ZyBpbl9wcmludENvbG9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhw
YXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXk+IGluX2NvbHVtbk5hbWVzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBudWxscHRyLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3RyaW5nIGluX25vdGVzID0gQmFja2VuZERpc3Bh
dGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgibm90
ZXMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGRvdWJsZSBpbl90aW1l
c3RhbXAgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0
KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0g
QmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJ
TGl0ZXJhbCgidmFsdWVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5bG9hZCA9IEJhY2tlbmREaXNw
YXRjaGVyOjpnZXRWYWx1ZShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicGF5
bG9hZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFi
YXNlSWQgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0
KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5n
ZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBpbl9zcWxFcnJv
ciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
KyAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5n
KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+IGluX2FsdGVybmF0ZUNvbG9ycyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJh
eShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiks
IG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcHJpbnRDb2xv
ciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5nIGVy
cm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVz
JyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzIik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3Io
JmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9y
TWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6
OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cyhsb25nIGNhbGxJZAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0gICAgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3By
aW50Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29s
b3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzKGVycm9yLCBpbl9jb2x1bW5OYW1lcy5jb3B5UmVmKCksIGluX25vdGVzLCBpbl90aW1lc3Rh
bXAsIGluX3ZhbHVlcy5jb3B5UmVmKCksIGluX3BheWxvYWQuY29weVJlZigpLCBpbl9kYXRhYmFz
ZUlkLCBpbl9zcWxFcnJvci5jb3B5UmVmKCksIGluX3NjcmVlbkNvbG9yLCBpbl9hbHRlcm5hdGVD
b2xvcnMuY29weVJlZigpLCBpbl9wcmludENvbG9yLCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90
ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJh
c2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3Jz
LCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewpAQCAtNTc3
LDE0ICs1NzcsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFz
cyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBt
X3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNU
RVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBv
YmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBv
YmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVp
bGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTYwOSw5ICs2MDksOSBAQCBwdWJs
aWM6CiAgICAgICAgIFJlZjxFcnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFk
eSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNh
bm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZy
ZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC02MjUsNyArNjI1LDcgQEAgcHVibGljOgog
ICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC03NDEsNyArNzQxLDcg
QEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogCi1jbGFzcyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyIHsKK2NsYXNzIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIGZpbmFs
IDogcHVibGljIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgog
ICAgIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKGlkPFJXSVByb3RvY29s
RGF0YWJhc2VEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9
CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxs
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9k
YXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5f
c3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5n
KiBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKQEAgLTgyOCw3ICs4MjgsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBh
bHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgV1RG
Ojptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlM
aXRlcmFsKCJEYXRhYmFzZSIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAg
IF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5hdGVBZ2VudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0Cmlu
ZGV4IGFlZDAzYTFhZmE1NGI4MjNhZDg1YWE5OTBmZjU3NTdjN2VmY2M5YjguLmRiZjRjYjZhNzdk
NjcxNWI5YzMxNjFkYmJmNzY0NGJjNmJhNzk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0zOSwyMyArMzksMjMgQEAKIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
IHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lk
IHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4m
JiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hl
cik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBz
ZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hl
cikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAg
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCi1jbGFzcyBBbHRlcm5h
dGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUlu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGlj
OgotICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQpID0gMDsK
IH07Ci1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIDog
cHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVy
bmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEo
bG9uZyBjYWxsSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMihsb25nIGNh
bGxJZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UzKGxvbmcgY2FsbElkKSA9
IDA7CkBAIC0xNjEsMTggKzE2MSwxOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyOwotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjsK
K2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5h
dGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEoRXJyb3JTdHJpbmcm
KSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgeworY2xhc3MgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKEVycm9yU3RyaW5nJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UyKEVycm9yU3RyaW5nJikgPSAwOwpAQCAt
MTgyLDQ2ICsxODIsNDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U2
KEVycm9yU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U3KEVycm9y
U3RyaW5nJikgPSAwOwogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkluc3BlY3Rvck5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmlydHVhbCB+TmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CiAKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZp
bmFsIDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9u
ZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCBOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJ
ZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkg
b3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9h
ZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciogbV9hZ2VudDsKKyAgICBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEJhY2tl
bmREaXNwYXRjaGVyJiwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVy
bmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5h
dGVEaXNwYXRjaGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0
ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRl
cm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBB
bHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURp
c3BhdGNoZXI7CisgICAgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRl
cm5hdGVEaXNwYXRjaGVyOwogI2VuZGlmCiB9OwogCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPiBjcmVh
dGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8TmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxs
SWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lk
IGxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNv
dXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNz
YWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTYobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAg
ICB2b2lkIGxvYWRSZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2Uy
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQg
bG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdl
KTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9i
amVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlNihsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRS
ZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiBw
cml2YXRlOgotICAgIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5k
RGlzcGF0Y2hlciYsIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIq
IGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6Ci0gICAgQWx0
ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNw
YXRjaGVyOworICAgIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjc0LDE2ICsyNzQsMTYgQEAgcHJpdmF0
ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIoKSB7IH0KLUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KK05ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIo
KSB7IH0KK05ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+TmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KIAotUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXI+IEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rvck5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPiBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNo
ZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6Oklu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK05ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6Ok5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVy
LCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQo
YWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAg
LCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTI5MiwxNyArMjkyLDE3IEBAIElu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJE
aXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0ZXJhbCgiTmV0d29yazEiKSwgdGhpcyk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpCit2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElk
LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQog
ewotICAgIFJlZjxJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7
CiAKICAgICBpZiAobWV0aG9kID09ICJsb2FkUmVzb3VyY2UxIikKICAgICAgICAgbG9hZFJlc291
cmNlMShjYWxsSWQsIG1lc3NhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmsxIiwgJy4nLCBt
ZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5v
dEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMSIsICcuJywgbWV0aG9kLCAiJyB3YXMg
bm90IGZvdW5kIikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2
b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtMzE4
LDEzICszMTgsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwog
fQogCi1SZWY8SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqIGFnZW50KQorUmVmPE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+IE5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIsIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKCpiYWNr
ZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIs
IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6
IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVy
KQorTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihC
YWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIE5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
KGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
cihudWxscHRyKQpAQCAtMzMzLDExICszMzMsMTEgQEAgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3IK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVND
SUlMaXRlcmFsKCJOZXR3b3JrMyIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQgTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAotICAgIHR5cGVkZWYgdm9pZCAo
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6KkNhbGxIYW5kbGVyKShsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHR5
cGVkZWYgdm9pZCAoTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6KkNhbGxIYW5kbGVyKShsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxlcj4gRGlzcGF0Y2hNYXA7CiAgICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBkaXNwYXRjaE1hcCwgKCkpOwogICAgIGlm
IChkaXNwYXRjaE1hcC5pc0VtcHR5KCkpIHsKQEAgLTM0NSwxMyArMzQ1LDEzIEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYgbWV0CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgICAgICAg
ICAgQ2FsbEhhbmRsZXIgaGFuZGxlcjsKICAgICAgICAgfSBjb21tYW5kc1tdID0gewotICAgICAg
ICAgICAgeyAibG9hZFJlc291cmNlMSIsICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyOjpsb2FkUmVzb3VyY2UxIH0sCi0gICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UyIiwgJklu
c3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIgfSwKLSAgICAg
ICAgICAgIHsgImxvYWRSZXNvdXJjZTMiLCAmSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlMyB9LAotICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNCIsICZJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U0IH0sCi0gICAg
ICAgICAgICB7ICJsb2FkUmVzb3VyY2U1IiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI6OmxvYWRSZXNvdXJjZTUgfSwKLSAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTYiLCAm
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNiB9LAotICAg
ICAgICAgICAgeyAibG9hZFJlc291cmNlNyIsICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2U3IH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UxIiwg
Jk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEgfSwKKyAgICAgICAgICAg
IHsgImxvYWRSZXNvdXJjZTIiLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291
cmNlMiB9LAorICAgICAgICAgICAgeyAibG9hZFJlc291cmNlMyIsICZOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzIH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U0
IiwgJk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQgfSwKKyAgICAgICAg
ICAgIHsgImxvYWRSZXNvdXJjZTUiLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJl
c291cmNlNSB9LAorICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNiIsICZOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2IH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3Vy
Y2U3IiwgJk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcgfSwKICAgICAg
ICAgfTsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoY29tbWFuZHMp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQpAQCAtMzYwLDE0
ICszNjAsMTQgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBDYWxsSGFuZGxlcj46Oml0ZXJhdG9yIGl0ID0gZGlzcGF0Y2hNYXAuZmluZChtZXRob2QpOwog
ICAgIGlmIChpdCA9PSBkaXNwYXRjaE1hcC5lbmQoKSkgewotICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazMiLCAnLics
IG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9k
Tm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmszIiwgJy4nLCBtZXRob2QsICInIHdh
cyBub3QgZm91bmQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAoKCp0aGlzKS4q
aXQtPnZhbHVlKShjYWxsSWQsIG1lc3NhZ2UuZ2V0KCkpOwogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRS
ZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlcikgewpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3Zl
KHJlc3VsdCksIGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2UyKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
KQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UyKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAg
LTM5OSw3ICszOTksNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OmxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291
cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC00MTUsNyArNDE1LDcgQEAg
dm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVz
cG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12b2lkIEluc3Bl
Y3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OmxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNChsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RG
Ojptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmKQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1KGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIp
IHsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI6OmxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBl
cnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlNihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNihsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC00NjMsNyArNDYz
LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3Vy
Y2U2KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5z
ZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12b2lk
IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyBj
YWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYg
KG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtNzM2LDcgKzczNiw3IEBAIFN0cmluZyBnZXRF
bnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAot
Y2xhc3MgT2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJs
aWMgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBP
YmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRl
cm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBPYmpDSW5zcGVj
dG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihpZDxSV0lQcm90b2NvbE5ldHdvcmsxRG9tYWlu
SGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFuZGxlcjsgfQogICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkKSBvdmVycmlkZTsKQEAgLTc0Niw3ICs3NDYs
NyBAQCBwcml2YXRlOgogCiAKIAotY2xhc3MgT2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlciB7CitjbGFzcyBPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIHsKIHB1
YmxpYzoKICAgICBPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihpZDxSV0lQ
cm90b2NvbE5ldHdvcmszRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFu
ZGxlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkKSBvdmVy
cmlkZTsKQEAgLTg0MCw3ICs4NDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAg
IF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCiAgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8SW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiTmV0d29yazEiKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRl
cm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5h
dGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJOZXR3b3JrMSIpLCBX
VEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRF
eHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC04NTgsNyArODU4
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBfbmV0d29yazNIYW5kbGVyID0g
W2hhbmRsZXIgcmV0YWluXTsKIAogICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIsIEFs
dGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwo
Ik5ldHdvcmszIiksIFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBh
bHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiTmV0d29yazMiKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUo
YWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CmluZGV4IDFmYWIyMzYzZjk3MGVhODY3YjIxN2JhMmE0
YWViMmQ4MDIwYzFlYzIuLjY2N2Q0MmFjNzE2OGYxNTc0NmEwNjNmYzBmZjUwOTc1NjgwOWRiMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQKQEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xh
c3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNo
ZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVy
KFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdl
dCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckNvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZp
cnR1YWwgfkFsdGVybmF0ZUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcigp
IHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
cigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25n
IGNhbGxJZCkgPSAwOwogfTsKIApAQCAtMTQ5LDEwICsxNDksMTAgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQ29tbWFu
ZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKK2NsYXNzIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogcHVibGljOgogICAgIC8vIE5hbWVkIGFmdGVyIHBhcmFtZXRlciAncmV0dXJuVmFsdWUnIHdo
aWxlIGdlbmVyYXRpbmcgY29tbWFuZC9ldmVudCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZS4K
ICAgICBlbnVtIGNsYXNzIFJldHVyblZhbHVlIHsKQEAgLTE2MSwyNSArMTYxLDI1IEBAIHB1Ymxp
YzoKICAgICAgICAgTWFnZW50YSA9IDcsCiAgICAgICAgIFllbGxvdyA9IDgsCiAgICAgfTsgLy8g
ZW51bSBjbGFzcyBSZXR1cm5WYWx1ZQotICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1S
ZXR1cm5WYWx1ZShFcnJvclN0cmluZyYsIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlKiBvdXRfcmV0dXJuVmFsdWUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUoRXJyb3JTdHJpbmcmLCBDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5WYWx1ZSogb3V0X3JldHVy
blZhbHVlKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfkNvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CiAKLWNsYXNzIEluc3BlY3RvckNvbW1h
bmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3Bl
Y3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiwgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRo
b2QsIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsK
KyAgICBzdGF0aWMgUmVmPENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJh
Y2tlbmREaXNwYXRjaGVyKiwgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciop
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiBwcml2YXRl
OgotICAgIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGNvbW1hbmRX
aXRoRW51bVJldHVyblZhbHVlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXIoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3RvckNv
bW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3JDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworICAgIENvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYsIENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBDb21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRl
cm5hdGVJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURp
c3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsg
fQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNw
YXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJ
bnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcjsKKyAgICBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjMyLDE1ICsyMzIsMTUgQEAgcHJp
dmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCkgeyB9CitDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjp+Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQogCi1SZWY8
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIGFnZW50KQorUmVmPENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4g
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyLCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KiBhZ2VudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcigqYmFja2Vu
ZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yQ29tbWFu
ZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK0NvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKEJh
Y2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgLCBtX2FsdGVybmF0ZURpc3Bh
dGNoZXIobnVsbHB0cikKQEAgLTI0OSwxNyArMjQ5LDE3IEBAIEluc3BlY3RvckNvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRj
aGVyCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWlu
KEFTQ0lJTGl0ZXJhbCgiQ29tbWFuZERvbWFpbiIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQordm9p
ZCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewot
ICAgIFJlZjxJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3Qo
KnRoaXMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAiY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUi
KQogICAgICAgICBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShjYWxsSWQsIG1lc3NhZ2UpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1h
a2VTdHJpbmcoJ1wnJywgIkNvbW1hbmREb21haW4iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBm
b3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmco
J1wnJywgIkNvbW1hbmREb21haW4iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNvbW1h
bmRXaXRoRW51bVJldHVyblZhbHVlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
KQordm9pZCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmRXaXRoRW51bVJl
dHVyblZhbHVlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0
ZURpc3BhdGNoZXIpIHsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEluc3BlY3RvckNvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uZyBj
YQogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBJbnNwZWN0b3JDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5WYWx1ZSBvdXRfcmV0dXJuVmFsdWU7
CisgICAgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmV0dXJuVmFsdWUg
b3V0X3JldHVyblZhbHVlOwogICAgIG1fYWdlbnQtPmNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVl
KGVycm9yLCAmb3V0X3JldHVyblZhbHVlKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpCkBA
IC0zMjYsOSArMzI2LDkgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1jbGFzcyBJbnNw
ZWN0b3JFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBFdmVudERvbWFpbkZy
b250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yRXZlbnREb21haW5Gcm9u
dGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKSB7IH0KKyAgICBFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkgOiBtX2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5u
ZWwpIHsgfQogICAgICAgICAvLyBOYW1lZCBhZnRlciBwYXJhbWV0ZXIgJ3BhcmFtZXRlcicgd2hp
bGUgZ2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGV2ZW50V2l0aEVudW1QYXJhbWV0ZXIuCiAgICAg
ICAgIGVudW0gY2xhc3MgUGFyYW1ldGVyIHsKICAgICAgICAgICAgIFNoYXJlZCA9IDAsCkBAIC0z
MzcsNyArMzM3LDcgQEAgcHVibGljOgogICAgICAgICB9OyAvLyBlbnVtIGNsYXNzIFBhcmFtZXRl
cgogICAgIHZvaWQgZXZlbnRXaXRoRW51bVBhcmFtZXRlcihQYXJhbWV0ZXIgcGFyYW1ldGVyKTsK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0zODMsNyArMzgzLDcgQEAgcHJpdmF0ZToK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgSW5zcGVjdG9yRXZlbnREb21haW5Gcm9u
dGVuZERpc3BhdGNoZXI6OmV2ZW50V2l0aEVudW1QYXJhbWV0ZXIoUGFyYW1ldGVyIHBhcmFtZXRl
cikKK3ZvaWQgRXZlbnREb21haW5Gcm9udGVuZERpc3BhdGNoZXI6OmV2ZW50V2l0aEVudW1QYXJh
bWV0ZXIoUGFyYW1ldGVyIHBhcmFtZXRlcikKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBq
c29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2Ut
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkV2ZW50RG9t
YWluLmV2ZW50V2l0aEVudW1QYXJhbWV0ZXIiKSk7CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlcjo6ZXZlbnRXaXRoRW51bVBhcmFt
ZXRlcihQYXJhbWV0ZXIgcGEKICAgICBwYXJhbXNPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVy
YWwoInBhcmFtZXRlciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1
ZShwYXJhbWV0ZXIpKTsKICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
cGFyYW1zIiksIFdURjo6bW92ZShwYXJhbXNPYmplY3QpKTsKIAotICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGpz
b25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpAQCAtNTgxLDcgKzU4MSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIAotY2xhc3Mg
T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1Ymxp
YyBBbHRlcm5hdGVJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgeworY2xh
c3MgT2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1
YmxpYyBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgog
ICAgIE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoaWQ8UldJUHJv
dG9jb2xDb21tYW5kRG9tYWluRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0g
aGFuZGxlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShs
b25nIGNhbGxJZCkgb3ZlcnJpZGU7CkBAIC02NzEsNyArNjcxLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBfY29tbWFuZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudDxJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0
ZUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgi
Q29tbWFuZERvbWFpbiIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1
dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJs
ZUFnZW50PENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJDb21tYW5kRG9tYWluIiksIFdU
Rjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4
dHJhQWdlbnQoV1RGOjptb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTk4OCw3ICs5ODgs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKWV2ZW50V2l0aEVudW1Q
YXJhbWV0ZXJXaXRoUGFyYW1ldGVyOihSV0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51
bVBhcmFtZXRlclBhcmFtZXRlcilwYXJhbWV0ZXIKIHsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsK
KyAgICBGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9u
dGVuZENoYW5uZWwoKTsKICAgICBpZiAoIWZyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGNiMTAz
MzRiOWM4MjE1ZDdkN2Q4NWIyYWZiNGQ0Zjg1ODI0YjMxNzkuLmFlZjc5Mjk4MDIyNzJhNDM0ZGEx
MjM5OWU2OTA2YWVmZDBkODI4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNw
YXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0
Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hl
ci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCkBAIC0yMzcsMTMgKzIzNywxMyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogCiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNw
YXRjaGVyIHsKK2NsYXNzIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAg
ICBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQorICAgIERhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRD
aGFubmVsKGZyb250ZW5kQ2hhbm5lbCkgeyB9CiAgICAgdm9pZCBkaWRFeGVjdXRlT3B0aW9uYWxQ
YXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0
aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9y
cywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsKICAgICB2b2lkIGRpZEV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAs
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5n
JiBwcmludENvbG9yKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBt
X2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRl
bmRDaGFubmVsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0yODksNyArMjg5
LDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMo
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnMqIGNvbnN0IHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBT
dHJpbmcqIGNvbnN0IHByaW50Q29sb3IpCit2b2lkIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVy
OjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3Rlcywg
Y29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9h
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3Is
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25z
dCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKQog
ewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0
aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVy
cyIpKTsKQEAgLTMxNCwxMCArMzE0LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVu
ZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluCiAgICAg
ICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAq
cHJpbnRDb2xvcik7CiAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBh
cmFtcyIpLCBXVEY6Om1vdmUocGFyYW1zT2JqZWN0KSk7CiAKLSAgICBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJp
bmcoKSk7CisgICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29u
TWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlRnJv
bnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJp
bmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVu
Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBh
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9h
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3Is
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3Jl
ZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+
IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJ
TGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwpAQCAt
MzMzLDcgKzMzMyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6
OmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8CiAgICAgcGFyYW1zT2JqZWN0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIHByaW50Q29sb3IpOwogICAg
IGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgV1RGOjptb3Zl
KHBhcmFtc09iamVjdCkpOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJv
bnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC00MjAsMTQgKzQyMCwx
NCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIg
ewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0Owog
CiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RT
dGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxC
dWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxk
ZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAg
ICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAg
ICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0
ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNDUyLDkgKzQ1Miw5IEBAIHB1YmxpYzoKICAgICAg
ICAgUmVmPEVycm9yPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3Qp
OwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9
IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8RXJyb3I+Kj4oJnJlc3VsdCkpOwog
ICAgICAgICB9CiAgICAgfTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgICovCiAg
ICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKQEAgLTg0OSw3ICs4NDksNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKWRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRl
cnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKiljb2x1bW5OYW1lcyBu
b3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3VibGUgKil0aW1lc3RhbXAgdmFs
dWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29s
SlNPTk9iamVjdCAqKilwYXlsb2FkIHNxbEVycm9yOihSV0lQcm90b2NvbERhdGFiYXNlRXJyb3Ig
Kiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5nICoqKXNjcmVlbkNvbG9yIGFsdGVybmF0
ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWFsdGVybmF0ZUNvbG9ycyBwcmludENv
bG9yOihOU1N0cmluZyAqKilwcmludENvbG9yCiB7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7Cisg
ICAgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRl
bmRDaGFubmVsKCk7CiAgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsK
IApAQCAtODg5LDcgKzg4OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKHZv
aWQpZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1l
c3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2
YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBzcWxFcnJvcjoo
UldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5n
ICopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilh
bHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKilwcmludENvbG9yCiB7Ci0gICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+
ZnJvbnRlbmRDaGFubmVsKCk7CisgICAgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwg
PSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7CiAgICAgaWYgKCFmcm9udGVuZENoYW5u
ZWwpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1m
ZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQKaW5kZXggZDlhMmIxZWI4OWZjODhiMjE5NTQ3ZTJmMjY1Y2U2ZDg5
ZjU4ODIwNy4uZWQyY2I5YzMxNGZkYmFkMzAzZjhlOGViMjhkYmI2YzFjZDQ0Njc0MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC0zOSwx
OSArMzksMTkgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUlu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRj
aGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2Vu
ZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjpt
b3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0
ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwogfTsKIAogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotY2xhc3MgQWx0ZXJuYXRlSW5z
cGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCkg
eyB9CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcigpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UobG9uZyBjYWxsSWQpID0gMDsKIH07CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRTKQpAQCAtMTQ4LDM0ICsxNDgsMzQgQEAgdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKICNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1jbGFzcyBBbHRlcm5h
dGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgQWx0ZXJuYXRlTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcjsKICNlbmRpZiAvLyBQTEFURk9STShXRUJfQ09NTUFORFMp
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKICNp
ZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZShFcnJvclN0cmluZyYp
ID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfk5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyKCk7CiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKIAogI2lm
IFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZpbmFs
IDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCBOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3Zl
cnJpZGU7CiBwcml2YXRlOgotICAgIHZvaWQgbG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVz
b3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiBwcml2
YXRlOgotICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqIG1fYWdlbnQ7CisgICAgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlciYsIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5hdGVE
aXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIGFs
dGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlz
cGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6Ci0gICAgQWx0ZXJu
YXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRj
aGVyOworICAgIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKICNlbmRpZiAvLyBQTEFURk9STShXRUJfQ09NTUFORFMp
CkBAIC0yMzAsMTcgKzIzMCwxNyBAQCBwcml2YXRlOgogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
ICNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6fkluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KCkgeyB9CitOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fk5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRT
KQogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXI+IEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rv
ck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyPiBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERp
c3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI6Okluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK05ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6
Ok5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNw
YXRjaGVyLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1f
YWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CiAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTI0OSwxNyArMjQ5LDE3
IEBAIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rvck5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVn
aXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0ZXJhbCgiTmV0d29yazEiKSwgdGhpcyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
bG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYm
IG1lc3NhZ2UpCit2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcg
Y2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNz
YWdlKQogewotICAgIFJlZjxJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgq
dGhpcyk7CiAKICAgICBpZiAobWV0aG9kID09ICJsb2FkUmVzb3VyY2UiKQogICAgICAgICBsb2Fk
UmVzb3VyY2UoY2FsbElkLCBtZXNzYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMSIsICcu
JywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRo
b2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1ldGhvZCwgIicg
d2FzIG5vdCBmb3VuZCIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYp
Cit2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZShsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC0z
MjQsMTIgKzMyNCwxMiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAjaWYgUExBVEZPUk0o
V0VCX0VWRU5UUykKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyIHsK
K2NsYXNzIE5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBJbnNwZWN0
b3JOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGlu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQorICAgIE5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVy
KEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRDaGFubmVsKGZy
b250ZW5kQ2hhbm5lbCkgeyB9CiAgICAgdm9pZCByZXNvdXJjZUxvYWRlZCgpOwogcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiB9OwogI2VuZGlmIC8v
IFBMQVRGT1JNKFdFQl9FVkVOVFMpCiAKQEAgLTM3NywxMiArMzc3LDEyIEBAIHByaXZhdGU6CiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogI2lmIFBMQVRGT1JNKFdFQl9FVkVOVFMpCi12b2lkIElu
c3BlY3Rvck5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyOjpyZXNvdXJjZUxvYWRlZCgpCit2b2lk
IE5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyOjpyZXNvdXJjZUxvYWRlZCgpCiB7CiAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgQVND
SUlMaXRlcmFsKCJOZXR3b3JrMy5yZXNvdXJjZUxvYWRlZCIpKTsKIAotICAgIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNP
TlN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VC
X0VWRU5UUykKIApAQCAtNDY1LDE0ICs0NjUsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGlu
dCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4g
QnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7
CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKk5ldHdvcmtFcnJvciovSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKk5l
dHdvcmtFcnJvciovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9y
ZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRf
c3RhdGUpOwpAQCAtNDk3LDkgKzQ5Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPE5ldHdvcmtF
cnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNU
QVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoTmV0d29ya0Vycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChzaXplb2YoTmV0d29ya0Vycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90
X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8TmV0d29ya0Vycm9yPio+
KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC01MTMsNyArNTEzLDcgQEAgcHVibGlj
OgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0
PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC02MjQsNyArNjI0
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5E
UykKLWNsYXNzIE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDog
cHVibGljIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgeworY2xh
c3MgT2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMg
QWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgT2JqQ0lu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoaWQ8UldJUHJvdG9jb2xOZXR3b3JrMURv
bWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbG9hZFJlc291cmNlKGxvbmcgY2FsbElkKSBvdmVycmlkZTsKQEAgLTcxNyw3ICs3
MTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIF9uZXR3b3JrMUhhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJh
bCgiTmV0d29yazEiKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRv
IGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJOZXR3b3JrMSIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92
ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC05NTQsNyArOTU0LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClyZXNvdXJjZUxvYWRlZAogewotICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5k
Q2hhbm5lbCgpOworICAgIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRy
b2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOwogICAgIGlmICghZnJvbnRlbmRDaGFubmVsKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAppbmRl
eCA5YjNhZjI4MTQ3Y2ZmOTAwODQ1NTViNDAyNGVmMDI3ZDc2OWMwM2ZmLi4wMTg0Nzg5MWI1MmQy
ZDczNGY2M2Y5ZDUyMzQwOTEzMjdkZGIzY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZl
cmVudC1kb21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWlu
Lmpzb24tcmVzdWx0CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmRE
aXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVy
KSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlz
cGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tl
bmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVy
cy5qc29uLXJlc3VsdAppbmRleCAzOGFkNzk5M2ViOGVhZDAzNmZiNGQwMzMyODQ2ZjMyMzM2YTNj
NDdjLi4zYTYxYzUyMzFmNDVhMmMzMTFkNDhiNmQ5ODIzOGY3ZGNhMDRiNmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
c2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1v
cHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKQEAgLTM5LDEyICszOSwxMiBAQAogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgot
ICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShk
aXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBk
aXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7
IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQ
dHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKQEAgLTM1
NiwxNCArMzU2LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xh
c3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
bV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBT
VEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAg
ICAgICAgQnVpbGRlcihSZWY8LypLZXlQYXRoKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
JiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qS2V5UGF0aCovSW5zcGVjdG9yT2JqZWN0
PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0
LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtMzgxLDkgKzM4MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgUmVmPEtleVBhdGg+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19u
b3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEtleVBhdGgpID09
IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihLZXlQYXRoKSA9PSBzaXplb2YoSW5zcGVjdG9y
T2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAg
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVs
bCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8
S2V5UGF0aD4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzk2LDcgKzM5Niw3
IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3Jl
YXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxO
b0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1h
bGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGFmMWQ1MzA5N2NhNjdhYTBh
MjhmNGIwNGI2MDlmM2E5M2I2MGIxOTEuLjAyMzdhZTJhNDcxZDU1ZGU2NDhhZTA2NGRhM2M1MjFj
Njk2YjgyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5
cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlw
ZS5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5k
RGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hl
cikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERp
c3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNv
bi1yZXN1bHQKaW5kZXggNGRhOTdmNDg0ZmY2MzVmYzYzYzM0NmNhMThkZTMyMThhNjkyMGI0Zi4u
NDZmY2VkOWRiODk5NGI4NDcxYjg3YTFjZTAyYzBhNDIxNTFlMzUxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1h
cnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsK
K2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNl
dEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBk
aXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7
IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRC
YWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikg
eyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1k
ZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5
cGUuanNvbi1yZXN1bHQKaW5kZXggZmI0YWVkMjAxNzBkYjlkNTNmMjgyMzRhNTc5Y2Y0MDU2MTFi
YjMyYy4uZjVkNTZiMzY2NDk5M2RkZDQwMmE3YmEwMGQyODdlNDY1NTU5MmIxZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9p
ZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNo
ZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQg
c2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNo
ZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAg
IEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1v
YmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCA5ZmJiNWY1MzM0OWZlMTIzZjAwOWRjNjMwZGJh
ZDQ4NDdhNTlkMWYzLi5iNWY0ZGFhNGE0MGE4ZThhMWQyNWYzZWVhNDBjNTJmMWYwZDY5OTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEyIEBA
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjpt
b3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsg
fQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRj
aGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAg
IFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApA
QCAtMzYzLDE0ICszNjMsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAg
ICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFU
RSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJl
aW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0K
IAotICAgICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVj
dD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQog
ICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1Nl
dCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTM5NSw5ICszOTUsOSBA
QCBwdWJsaWM6CiAgICAgICAgIFJlZjxFcnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25v
dF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNp
emVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVj
dCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAg
UmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsK
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9y
Pio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC00MTEsNyArNDExLDcgQEAgcHVi
bGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRz
U2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC00MjUsMTQg
KzQyNSwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1
aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVz
dWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4m
IGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAg
IEJ1aWxkZXIoUmVmPC8qT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypPcHRpb25hbFBhcmFt
ZXRlckJ1bmRsZSovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9y
ZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRf
c3RhdGUpOwpAQCAtNDQzLDkgKzQ0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPE9wdGlvbmFs
UGFyYW1ldGVyQnVuZGxlPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSkg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlKSA9
PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBS
ZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVp
bnRlcnByZXRfY2FzdDxSZWY8T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU+Kj4oJnJlc3VsdCkpOwog
ICAgICAgICB9CiAgICAgfTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBwdWJsaWM6CiAgICAgICovCiAg
ICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQpAQCAtNTEzLDE0ICs1
MTMsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWls
ZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3Vs
dDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBj
YXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBC
dWlsZGVyKFJlZjwvKlBhcmFtZXRlckJ1bmRsZSovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKlBhcmFtZXRlckJ1bmRsZSovSW5zcGVj
dG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9i
amVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5v
RmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNTgwLDkg
KzU4MCw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPFBhcmFtZXRlckJ1bmRsZT4gcmVsZWFzZSgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxk
c1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChz
aXplb2YoUGFyYW1ldGVyQnVuZGxlKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUGFy
YW1ldGVyQnVuZGxlKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwog
Ci0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1f
cmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8UGFyYW1ldGVyQnVuZGxlPio+KCZyZXN1
bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC02MDEsNyArNjAxLDcgQEAgcHVibGljOgogICAg
ICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC02MjEsMTQgKzYyMSwxNCBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
bV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAg
ICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0
ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWls
ZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIo
UmVmPC8qT2JqZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cyovSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKk9iamVjdFdpdGhQcm9w
ZXJ0eU5hbWVDb25mbGljdHMqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTY3NCw5ICs2NzQsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxP
YmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzPiByZWxlYXNlKCkKICAgICAgICAgewogICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNf
bm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihPYmplY3RXaXRo
UHJvcGVydHlOYW1lQ29uZmxpY3RzKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoT2Jq
ZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCks
IGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPE9iamVjdFdp
dGhQcm9wZXJ0eU5hbWVDb25mbGljdHM+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsK
QEAgLTY5Myw3ICs2OTMsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8
Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0Zp
ZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAg
cmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwog
ICAgIH0KIH07CiAKQEAgLTcxNiwxNCArNzE2LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxp
bnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+
IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMp
OwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypQYXJhbWV0ZXJCdW5kbGUqL0lu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8
LypQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTc3Niw5ICs3NzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxQ
YXJhbWV0ZXJCdW5kbGU+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9m
KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAg
ICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVm
PFBhcmFtZXRlckJ1bmRsZT4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNzk2
LDcgKzc5Niw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxk
c1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0
PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4g
QnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCAwNDVjY2I4ZjIw
Y2Y1ODMwODc0MThmMDY4ZmI1YTAwNTE4OWIzNzNiLi5mNDkwNzU2MDU5NTg4ZDhmNzU3ZTU4OGQ0
YTAzYzRlOGIwZTNmNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApA
QCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRl
cm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQ
dHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRy
PEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
IHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKIH07CiAKIApAQCAtMzY3LDE0ICszNjcsMTQgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQg
U1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4o
dGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKlR5cGVOZWVkaW5nQ2Fz
dCovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVy
KFJlZjwvKlR5cGVOZWVkaW5nQ2FzdCovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAg
ICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRf
aW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNDIwLDkgKzQyMCw5IEBAIHB1YmxpYzoKICAgICAgICAg
UmVmPFR5cGVOZWVkaW5nQ2FzdD4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7
Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoVHlwZU5lZWRpbmdDYXN0KSA9PSBz
aXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoVHlwZU5lZWRpbmdDYXN0KSA9PSBzaXplb2YoSW5z
cGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Cisg
ICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNl
Tm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2Fz
dDxSZWY8VHlwZU5lZWRpbmdDYXN0Pio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBA
IC00MzksNyArNDM5LDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5v
RmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVs
ZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJl
dHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAg
ICB9CiB9OwogCkBAIC00NjcsMTQgKzQ2NywxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50
IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBC
dWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qUmVjdXJzaXZlT2JqZWN0MSovSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwv
KlJlY3Vyc2l2ZU9iamVjdDEqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTQ4NSw5ICs0ODUsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxS
ZWN1cnNpdmVPYmplY3QxPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWN1cnNpdmVPYmplY3QxKSA9PSBzaXpl
b2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVjdXJzaXZlT2JqZWN0MSkgPT0gc2l6ZW9mKEluc3Bl
Y3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5v
bk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8
UmVmPFJlY3Vyc2l2ZU9iamVjdDE+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAg
LTQ5OSw3ICs0OTksNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxk
c1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAg
IH0KIAogICAgIHZvaWQgc2V0T2JqKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpS
ZWN1cnNpdmVPYmplY3QyPiB2YWx1ZSkKQEAgLTUxOCwxNCArNTE4LDE0IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxh
dGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBT
VEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypSZWN1cnNp
dmVPYmplY3QyKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAg
IEJ1aWxkZXIoUmVmPC8qUmVjdXJzaXZlT2JqZWN0MiovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVj
dCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVy
X2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNTM2LDkgKzUzNiw5IEBAIHB1YmxpYzoK
ICAgICAgICAgUmVmPFJlY3Vyc2l2ZU9iamVjdDI+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19u
b3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlY3Vyc2l2ZU9i
amVjdDIpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0
KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWN1cnNpdmVPYmplY3QyKSA9
PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBS
ZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVp
bnRlcnByZXRfY2FzdDxSZWY8UmVjdXJzaXZlT2JqZWN0Mj4qPigmcmVzdWx0KSk7CiAgICAgICAg
IH0KICAgICB9OwpAQCAtNTUwLDcgKzU1MCw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0
aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBC
dWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkp
OworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRPYmooUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+IHZhbHVlKQpAQCAtNjk2LDE2ICs2OTYsMTYg
QEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVk
aW5nQ2FzdD46OmFzc2VydFZhbHVlSGFzRXgKIH0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6
cnVudGltZUNhc3QoUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+JiYgdmFsdWUpCitS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OnJ1bnRp
bWVDYXN0KFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mJiB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQ7CiAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KHJl
c3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShy
ZXN1bHQuZ2V0KCkpOwogI2VuZGlmICAvLyAhQVNTRVJUX0RJU0FCTEVECi0gICAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCkg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9i
bGVtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6
VHlwZU5lZWRpbmdDYXN0Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RC
YXNlKj4ocmVzdWx0LmdldCgpKSk7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9i
amVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0PElu
c3BlY3Rvck9iamVjdEJhc2UqPihyZXN1bHQuZ2V0KCkpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
LmNwcAppbmRleCBlNDI4ZjQ1ZmZkOWQ2YmUwZWRjZTcxODc5OTczYjk3ZWM3NDNmMTk2Li41MDE3
ZTcxNjNlN2QzODZmZWU2N2U5NWZhYjNhYzUxZjE5MDA2YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU3RyaW5nIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFt
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJKU0Nv
bnRleHQiKSA6IG5hbWU7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpjb25u
ZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGF1dG9t
YXRpY0luc3BlY3Rpb24pCit2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdChG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9u
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwogCkBA
IC02MCw3ICs2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0
KCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKIAot
ICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBt
X2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKERp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaAppbmRleCA4YzZlYWI3NzY2MDhiNTQ4NTBi
MGE0Y2RiMjNiNGIyMjNiZTI4ZGQxLi5kNmI0NzFjZjc2NTY1YzliMDI2OTk4MjAyYjI4MWU2Y2Ex
OGZlYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaApAQCAtMzMsNyArMzMsOCBAQAogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWVudW0gY2xhc3MgSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbjsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2VudW0gY2xh
c3MgRGlzY29ubmVjdFJlYXNvbjsKIH0KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9v
bCBhdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVt
b3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCA0MzljOGQ2YzIyNGRhNmEzNjZiZTZjMmE1YjM0N2Y3MTZhY2JhMGYzLi5l
NjI4MTdkYzU3Zjg4ZTE4NzAxNDc3OTlkNzU0NWNiN2QwZDA2MjEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtODQwLDggKzg0MCw4IEBAIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxl
cjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEzUmVuZGVyRWxlbWVudEVSS04zCiBfX1pON1dl
YkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMXBhdXNlVHJhbnNpdGlvbkF0VGltZUVQTlNfMTNS
ZW5kZXJFbGVtZW50RVJLTjNXVEY2U3RyaW5nRWQKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29u
dHJvbGxlcjM2c2V0QWxsb3dzTmV3QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkRWIKIF9fWk43V2Vi
Q29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDhzZXRWYWx1ZUVSS04zV1RGNlN0cmluZ0UKLV9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3Rv
cjI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRWIKLV9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29u
dHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5kRU45SW5zcGVjdG9yMjVJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJv
bnRlbmRFUE45SW5zcGVjdG9yMTVGcm9udGVuZENoYW5uZWxFYgorX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IxNkRpc2Nvbm5l
Y3RSZWFzb25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVy
RW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9y
VGVzdEluRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RVBOU18yM0luc3BlY3RvckZyb250
ZW5kQ2xpZW50RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhNzA0Y2Q5ODRlYThkMzhlZjBm
MWM1ZWUyOTBkYzUzODZhOGI1ZjBjLi4zZTZmNjMyMTYxM2I2M2RiMGRlZTc1NDBhMjRiZDljNTZl
NjA4NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VuCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IDBiODEzMzVmNTFjZTBhNmM4ZjUwYjZjZDM3
NDRhZDY3ZTAzYzkzM2QuLmYwOGFjZTIwZjcxNzE4M2FkOTBkNDZmZmRlMDZkM2E2MzRjZmE3Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyOworY2xhc3MgQXBwbGljYXRpb25DYWNoZUZy
b250ZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3Rv
clZhbHVlOwogfQpAQCAtNDcsMTQgKzQ3LDE0IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKK2NsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqKTsKICAgICB2b2lk
IG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAgLTcyLDggKzcyLDggQEAgcHJpdmF0ZToKICAgICBE
b2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcm
LCBTdHJpbmcgZnJhbWVJZCk7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpBcHBsaWNh
dGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBkZTExN2MxMGJh
NGYzNDRiYzczMWExZDlmNDc5MDEwZDhkODU5MGJjLi44NTMyMWRkN2RkMmY3OGJlYTk5ZTUyZTJm
NzYwZTA3ZTI5ODgwNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTM1MSwxMyArMzUxLDEzIEBAIEluc3BlY3RvckNTU0FnZW50Ojp+
SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNT
U0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3Rv
ckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggODg2NjRjODk2MGUzZmNiZmZjMjg2YmNjNTlmOTQy
MWJlYmU1MGFjMy4uZTRhNjAzNzk1NGMxYTI3MGM3YmM4ZDg1NWFmY2JlZmU3MGZmYjcxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTM5LDcg
KzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7Ci1jbGFzcyBJbnNwZWN0b3JDU1NGcm9udGVuZERpc3BhdGNoZXI7CitjbGFzcyBD
U1NGcm9udGVuZERpc3BhdGNoZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDcg
KzY0LDcgQEAgY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiBjbGFzcyBJbnNwZWN0b3JD
U1NBZ2VudCBmaW5hbAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVi
bGljIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lcgotICAgICwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQ1NTQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgLCBwdWJsaWMgSW5z
cGVjdG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yQ1NTQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTEsOCArOTEs
OCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShD
U1NSdWxlJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwpAQCAtMTYzLDggKzE2Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHJlc2V0UHNldWRvU3RhdGVzKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JDU1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNTU0Zyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
Q1NTQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9y
RE9NQWdlbnQqIG1fZG9tQWdlbnQ7CiAKICAgICBJZFRvSW5zcGVjdG9yU3R5bGVTaGVldCBtX2lk
VG9JbnNwZWN0b3JTdHlsZVNoZWV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDcyZjI5NDY4Y2VhZGI0ZWQ3NWYzZGQ2YWUzMzg3
OGI5NDNjNGVhMzAuLmExOWJhNGE5OWEzOWI4MTVjOWQzYmYxZWFiYmIxNDk1ZDRjMDRmN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTg2LDcgKzg2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAs
IG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3Bl
Y3RvckNsaWVudCkpCi0gICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQor
ICAgICwgbV9mcm9udGVuZENoYW5uZWwobnVsbHB0cikKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdh
dGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5z
cGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKQEAgLTE4NCw3ICsxODQsNyBAQCBJbnNwZWN0
b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigpCiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7Ci0gICAgZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7
CisgICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdl
dERlc3Ryb3llZCk7CiAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsK
ICAgICBtX2luc3BlY3RvckNsaWVudC0+aW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgbV9pbnNw
ZWN0b3JDbGllbnQgPSBudWxscHRyOwpAQCAtMjMyLDE5ICsyMzIsMTkgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBE
T01XcmFwcGVyV28KICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudC0+d2luZG93T2Jq
ZWN0Q2xlYXJlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlz
QXV0b21hdGljSW5zcGVjdGlvbikKIHsKICAgICBBU1NFUlQoZnJvbnRlbmRDaGFubmVsKTsKICAg
ICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcik7
CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUKCFtX2JhY2tlbmRE
aXNwYXRjaGVyKTsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENo
YW5uZWw7Ci0gICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9hZ2VudHMuZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cygq
bV9pbnN0cnVtZW50aW5nQWdlbnRzKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZy
b250ZW5kQ3JlYXRlZCgpOwpAQCAtMjU1LDE2ICsyNTUsMTYgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW4KICNlbmRpZgogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQog
ewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250
ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKIAotICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNsZWFyKCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRyOworICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKKyAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLmNsZWFyKCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAg
bV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAtMjg2LDEwICsyODYsMTAgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAoIWVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAg
IGlmIChtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5n
RnJvbnRlbmRUb0Zyb250KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5z
cGVjdG9yRnJvbnRlbmQodGhpcykpIHsKKyAgICAgICAgaWYgKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3Rv
ckZyb250ZW5kKHRoaXMpKSB7CiAgICAgICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
biA9IGZhbHNlOwogICAgICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwg
aXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKICAgICAgICAgfQpAQCAtMjk4LDkgKzI5OCw5IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6Y2xvc2UoKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAg
aWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwotICAgIGRpc2Nvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwor
ICAgIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95
ZWQpOwogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiB9
CiAKQEAgLTM1Miw4ICszNTIsOCBAQCBQYWdlJiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0
ZWRQYWdlKCkgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3Nh
Z2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2ZmNiZWY2ZGZhYWMxNWI0YmQ0
ODY2YjQxZThiNGE0ZDQzOTQ0MzViLi41YzQzMDcxZmVmNzQ4MTkwYTEwNGNhMWVkOGNiYTYyOTVi
MmIxMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNz
IEZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7CiAKIG5hbWVzcGFjZSBQcm90b2NvbCB7CkBAIC05NCwxMiArOTQs
MTIgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaE1lc3NhZ2VG
cm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAotICAgIGJvb2wgaGFzRnJvbnRl
bmQoKSBjb25zdCB7IHJldHVybiAhIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOyB9CisgICAg
Ym9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mcm9udGVuZENoYW5uZWw7IH0K
ICAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZy
b250ZW5kKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBp
c0F1dG9tYXRpY0luc3BlY3Rpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7CiAgICAgdm9pZCBzZXRQcm9j
ZXNzSWQobG9uZyk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTE1MiwxMyAr
MTUyLDEzIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogbV9kb21E
ZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2Vu
dDsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBt
X2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiAgICAgUmVmPFdURjo6
U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAg
SW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKICAgICBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCogbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKLSAgICBJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CisgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5
IG1fYWdlbnRzOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUsIDI+
IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogICAgIGJvb2wgbV9pc1Vu
ZGVyVGVzdDsKICAgICBib29sIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTdlYjY4MTgxOTEw
MzM4NGY1MGYxZmUyMjU5ZTAwMmRjNjMyOWM4Yy4uMGI4Zjk0MWIwMjBkMjg4OWE2NWI5ZDhkMTY3
MDdjY2Y5Y2EwZmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC0yMjEsMTAgKzIyMSwxMCBAQCBJbnNwZWN0b3JET01BZ2VudDo6fklu
c3BlY3RvckRPTUFnZW50KCkKICAgICBBU1NFUlQoIW1fc2VhcmNoaW5nRm9yTm9kZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFu
bmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpET01CYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIAogICAgIG1faGlzdG9y
eSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsKICAgICBtX2RvbUVkaXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPihtX2hpc3RvcnkuZ2V0KCkpOwpAQCAtMjM2
LDcgKzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyCiAgICAgICAgIGZvY3VzTm9kZSgp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
KQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCmluZGV4IGY4Mzk3OTJiYjI1YzlhNWIzN2Y3MDU0NzJmYzQ2OGEzNzE2MTYwMTgu
LjlmYzk1MjVkYjdjZmM0MjVmYWU5ZjEzOWI5ZmRlN2IxNzlhYTZmYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC05MSw3ICs5MSw3IEBAIHN0
cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBl
dmVudExpc3RlbmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JE
T01CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpET01CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckRPTUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEw
OSw4ICsxMDksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvRXJyb3JTdHJpbmco
Y29uc3QgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogCiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzKCk7CiAgICAgdm9pZCByZXNldCgp
OwpAQCAtMjQ2LDggKzI0Niw4IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
RE9NQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0
Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKICAgICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lcjsKICAgICBOb2Rl
VG9JZE1hcCBtX2RvY3VtZW50Tm9kZVRvSWRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxOb2RlPiwgQmFja2VuZE5vZGVJZD4gTm9kZVRvQmFja2VuZElkTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IDNkMGJiYWM1NjFiOGViMTQ0NzQ3MjgyZTA4ODRkNzA0YTViY2NiMjcuLmY3NzhkZDk2MmNi
MmRkYzE2MDYzMTc0NmE5OTViZGRhMGE5YjI3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEwMiwxMiAr
MTAyLDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAg
Y2xlYXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQogewotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01E
ZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIApAQCAtMTcwLDcgKzE3
MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxl
QXR0cihOb2RlJiBub2RlKQogICAgIGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBBdHRyaWJ1dGVN
b2RpZmllZCkpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChu
b2RlLCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAg
IG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBt
X2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0K
IApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2ls
bEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQogICAgIGlmIChoYXNCcmVha3BvaW50KCZwYXJl
bnQsIFN1YnRyZWVNb2RpZmllZCkpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZl
bnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25G
b3JET01FdmVudChwYXJlbnQsIFN1YnRyZWVNb2RpZmllZCwgdHJ1ZSwgZXZlbnREYXRhLmdldCgp
KTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CiAgICAgfQogfQogCkBAIC0yODAsMTEgKzI4MCwxMSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKGhhc0JyZWFr
cG9pbnQoJm5vZGUsIE5vZGVSZW1vdmVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlw
dGlvbkZvckRPTUV2ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgp
KTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CiAgICAgfSBlbHNlIGlmIChwYXJlbnROb2RlICYmIGhhc0JyZWFrcG9pbnQocGFyZW50Tm9kZSwg
U3VidHJlZU1vZGlmaWVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZvckRP
TUV2ZW50KG5vZGUsIFN1YnRyZWVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0g
ICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAg
ICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAg
IH0KIH0KIApAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoaGFzQnJlYWtw
b2ludCgmZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAg
IGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQsIGZhbHNl
LCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3Jh
bShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6
bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0o
SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6
bW92ZShldmVudERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTM2Nyw5ICszNjcsOSBAQCB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wg
aXNET01FdmVudCwgY29ucwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImV2ZW50
TmFtZSIsIGZ1bGxFdmVudE5hbWUpOwogICAgIGlmIChzeW5jaHJvbm91cykKLSAgICAgICAgbV9k
ZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAg
ICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVudERh
dGEpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9u
TmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpFdmVudExpc3RlbmVyLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVu
dERhdGEpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC00MTIsNyArNDEyLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJy
ZWFrcG9pbnRVUkwiLCBicmVha3BvaW50VVJMKTsKICAgICBldmVudERhdGEtPnNldFN0cmluZygi
dXJsIiwgdXJsKTsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpYSFIsIFdURjo6bW92ZShldmVudERh
dGEpKTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OlhIUiwgV1RGOjptb3ZlKGV2ZW50RGF0YSkp
OwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNsZWFyKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmlu
ZGV4IDQ2NmYwM2U1NzFjZjg2NzA0M2RiY2I1YmU4NGI2NWZhYzdkYWQzOTEuLmFmZTNjZmI5ZDMw
OTU1ZGZhMzMyOTVlZjA5OWViZmZjYTI0N2NlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNTEsNyArNTEsNyBA
QCBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyLCBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTc4LDggKzc4
LDggQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJp
bmcmIHVybCk7CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9N
RXZlbnQsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFn
ZW50KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToK
IAogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwogICAgIEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9k
b21CcmVha3BvaW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9ldmVudExpc3RlbmVyQnJlYWtw
b2ludHM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1feGhyQnJlYWtwb2ludHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmlu
ZGV4IGZiMDg5YTM4ZjgzMjI2ZDU5Y2U1Mjg2ZmJlMGE1Mjg4YjkwNTc5MTguLjhlNTIzZmZiOGNk
NGZkZmZiZDRkNmE2NmUzMzRkM2Y1ODBiMDdmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC02NiwxMyArNjYs
MTMgQEAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMgPSBudWxscHRyOwogfQogCi12b2lkIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTVN0b3JhZ2VC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01TdG9y
YWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmgKaW5kZXggMzYxYjYxM2NjMWQ3NTdkNDQ2NmRmMjg5ZjdlOTZmYWVkMGEyYWM1ZC4uYmVi
ZDFlZjQxMmYyZGJmYjYxM2E3MTNhYmQ0OGE3MjQ0MmQzNmIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtMzYsOCAr
MzYsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIERPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNw
ZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDE0ICs1MSwxNCBAQCBjbGFzcyBTdG9y
YWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7Citj
bGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2Vu
dCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250
LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBA
IC03OCw4ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBmaW5kU3Rv
cmFnZUFyZWEoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYsIEZyYW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2Vu
dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JET01TdG9yYWdlRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJv
b2wgbV9lbmFibGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IDQ0ZGFhODY1NzY3ZTNjYjcyNGRhOTc0YTAy
OGNiOWRlMjZkZjgyNTMuLjkxMzRkZmU0N2M3OWM2YzZlZjQ0MTM0NDUyMGI3MDQ2ZTFkNWRjMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi10eXBlZGVmIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxDYWxs
YmFjayBFeGVjdXRlU1FMQ2FsbGJhY2s7Cit0eXBlZGVmIEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxDYWxsYmFjayBFeGVjdXRlU1FMQ2FsbGJh
Y2s7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAgLTIyMiwxMyArMjIyLDEzIEBA
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQobnVsbHB0cik7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24pCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmgKaW5kZXggMmU4Njg5NzVmMTZmY2IxNjc4ZGJkYjNkYWNmMjFlMTdjZWQxOGNjZS4uM2ZkYWEy
Y2I3NDE4ZTUyMzBhMmZmOWJhYWQwNGY2ZTZmM2YyYWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC00NywxNCArNDcsMTQg
QEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RvckRhdGFiYXNlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZXMoKTsK
IApAQCAtNzIsOCArNzIsOCBAQCBwcml2YXRlOgogICAgIERhdGFiYXNlKiBkYXRhYmFzZUZvcklk
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCk7CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZSogZmluZEJ5RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVu
ZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwog
ICAgIERhdGFiYXNlUmVzb3VyY2VzTWFwIG1fcmVzb3VyY2VzOwogICAgIGJvb2wgbV9lbmFibGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuY3BwCmluZGV4IDQ2ZWRmMzEzYzY4NjNlNmNhZjI3YWRiMmRmNGI2MjNkOGE3Njhj
ZWUuLjZjM2M5ZTIzZDY2ZjBkZDIyM2M0M2E3OTFiZGM3MWE1YjVjY2I0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6SW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZShSZWZQdHI8RGF0YWJhc2U+JiYgZGF0YWJhc2UKIHsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKEluc3BlY3RvckRhdGFiYXNlRnJvbnRl
bmREaXNwYXRjaGVyKiBkYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRj
aGVyKiBkYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBhdXRvIGpzb25PYmplY3Qg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2U6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRJZChtX2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKaW5kZXggMjk1NjcyYzE3YTk5YjM1ZThiNDc4ODdiYTJi
Y2ZkYzc4MDg4MTUyNi4uNmRiODVjOWM0OGRhNjk5MDFhMzg3NTYzYTUwMGE4ZjQ2MDZkNjU2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPiBjcmVhdGUoUmVm
UHRyPERhdGFiYXNlPiYmLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogCi0gICAgdm9pZCBiaW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqKTsKKyAgICB2b2lkIGJpbmQoSW5zcGVj
dG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciopOwogICAgIERhdGFiYXNlKiBkYXRhYmFz
ZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KICAgICB2b2lkIHNldERhdGFiYXNlKFJl
ZlB0cjxEYXRhYmFzZT4mJiBkYXRhYmFzZSkgeyBtX2RhdGFiYXNlID0gZGF0YWJhc2U7IH0KICAg
ICBTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAppbmRleCA2YzI3ZDIwMDM1NGU3OWI3Yzhi
NmRjMGI0MTZlNzYxMzM1Y2NmMWVjLi4yNTA4YmIxOTMyNzE4ZDhhOWE5OGY4NGQ4YmNmZjBhNDRl
ZmViZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9y
d2FyZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJk
aW5nLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXR5cGVkZWYgSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwordHlw
ZWRlZiBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7
CiB9CiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGb3J3YXJkaW5nX2gpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCA3YTY0OTVmMTM0NDE3NmY0MTE0ODExMWFhNGEwNmVhNmY4NDNiZDllLi45NDljYmU3MGRl
MmY3ZTUzN2M4ZjU3NzY0NjVhNDRiYTkyMTYxMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTc3LDExICs3Nywx
MSBAQCB1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOwogdXNp
bmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsKIHVzaW5nIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIAotdHlwZWRl
ZiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVx
dWVzdENhbGxiYWNrOwotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjayBSZXF1ZXN0
RGF0YWJhc2VOYW1lc0NhbGxiYWNrOwotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4
ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2sgUmVx
dWVzdERhdGFiYXNlQ2FsbGJhY2s7Ci10eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3RE
YXRhQ2FsbGJhY2s7Ci10eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2sgQ2xlYXJPYmplY3RT
dG9yZUNhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWREQkJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjayBSZXF1
ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWREQkJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2sgUmVxdWVzdERh
dGFiYXNlQ2FsbGJhY2s7Cit0eXBlZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3REYXRhQ2FsbGJhY2s7Cit0
eXBlZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpDbGVh
ck9iamVjdFN0b3JlQ2FsbGJhY2sgQ2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrOwogCiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCkBAIC01NzUsMTIgKzU3NSwxMiBAQCBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6fkluc3BlY3RvckluZGV4ZWREQkFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xl
YXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaAppbmRleCA3NzIwYjNhOWFhZWM5OWRiMjA3ZTljOTM0NDk1YzY5ZjU3N2YxMzIx
Li40ZDJjMTY5ODIyOGQ2MzNkMzlkZjI5ODk1YjcwYmRjOTAxY2EwMjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNDcs
MTMgKzQ3LDEzIEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IGZpbmFsIDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckluZGV4ZWREQkFn
ZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6
SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5kZXhlZERCQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmNwcAppbmRleCBjNTkwMmJhNzc3YjAzNjBlMTAxYjdhNWYwMWViYTI4Mjg1
NTZjMzlhLi5iZTY0NDk2ZTQ2MzhkMDBjM2VjMjg5MDg2NTZhZTY3N2E3Mzg5NzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAKQEAgLTU2LDEzICs1NiwxMyBAQCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6fkluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51
bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCAxNjZlOWE2
MThmMTVjMzUxYTA5MmEyZjBhY2ZjM2Q0MDNhMGI3Y2NhLi41YWJjMTM3NTMyNTZkODQ0NTI2ZTJi
MzU5OGY0YWMxMmIzY2U1NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtNDQsMTQgKzQ0LDE0IEBAIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CitjbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOwog
ICAgIHZpcnR1YWwgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgLy8gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KQEAgLTgxLDggKzgxLDggQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgYmluZFBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCopOwogICAgIHZvaWQgdW5i
aW5kUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50Kik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckxheWVyVHJlZUJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3Bh
dGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CiAKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwg
U3RyaW5nPiBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBjb25z
dCBSZW5kZXJMYXllcio+IG1faWRUb0xheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA2ZDRhMzk1MTc1ZDk0MWVmYmU1Mjg1MTVh
ZmM1YmIzYmJjM2RlMjZiLi44ZjljY2U3NzY4MGY2MjI2ZGU0Njg5YzEyYjNmNTA0NmRjMzQxYjll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtMzM3LDEzICszMzcsMTMgQEAgSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
OjpQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci5jbGVhcigpOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykKICAgICBt
X292ZXJsYXktPnNldFNob3dpbmdQYWludFJlY3RzKHNob3cpOwogfQogCi12b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5zcGVj
dG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0KiBzdGF0dXMpCit2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwg
SW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQqIHN0YXR1cykK
IHsKICAgICBib29sIGRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVyID0gZmFsc2U7CiAgICAgYm9v
bCBkaXNhYmxlZEluU2V0dGluZ3MgPSBmYWxzZTsKQEAgLTY2OCwxNCArNjY4LDE0IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcm
LCBJbnNwZWN0b3JQYWdlQmFjCiAgICAgfQogCiAgICAgaWYgKCFkaXNhYmxlZEJ5U2NyaXB0Q29u
dHJvbGxlcikgewotICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0OjpBbGxvd2VkOworICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9y
OjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQ6OkFsbG93ZWQ7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGlzYWJsZWRJblNldHRpbmdzKQotICAgICAgICAq
c3RhdHVzID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0OjpE
aXNhYmxlZDsKKyAgICAgICAgKnN0YXR1cyA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0OjpEaXNhYmxlZDsKICAgICBlbHNlCi0gICAgICAgICpzdGF0dXMg
PSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQ6OkZvcmJpZGRl
bjsKKyAgICAgICAgKnN0YXR1cyA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UmVzdWx0OjpGb3JiaWRkZW47CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChFcnJvclN0cmluZyYsIGJvb2wgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYmZkNTc3
NTE3NzBjZTc2MGJkN2NjZDM4OWFhMmJjZGQ1NDA1N2UxOC4uY2M2ZTEwZmFmY2VmZThhODNjZTQ1
YmU1MzliMjBmMjY0MmEzMjQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUGFn
ZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0
b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29s
KiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4m
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wg
c2hvdykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdEV4ZWN1dGlvblN0YXR1
cyhFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6SW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6UmVzdWx0Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdEV4
ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlw
dEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFRvdWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC0xMzksOCArMTM5LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2NyaXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpOwogCiAgICAgLy8gSW5zcGVjdG9y
IENvbnRyb2xsZXIgQVBJCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAg
Ly8gQ3Jvc3MtYWdlbnRzIEFQSQogICAgIFBhZ2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0K
QEAgLTE2OCw4ICsxNjgsOCBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUq
KTsKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JQYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKICAg
ICBsb25nIG1fbGFzdFNjcmlwdElkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1fcGVuZGluZ1Njcmlw
dFRvRXZhbHVhdGVPbkxvYWRPbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggNmVjZDdjMGZiZWZiNTJkNjBiZWIxMmVkMWJj
MjI5YjA5ZjBmZjlkZi4uMmY2ODc1MzIwNTk2OTc0ODE4ZjYyYTY1ZDE4ZTk3NjNkMzQ0NjdjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
Y3BwCkBAIC0xNjcsMTAgKzE2NywxMCBAQCBXZWJDb3JlOjpTZXNzaW9uU3RhdGUgSW5zcGVjdG9y
UmVwbGF5QWdlbnQ6OnNlc3Npb25TdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5yZXBs
YXlDb250cm9sbGVyKCkuc2Vzc2lvblN0YXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSZXBsYXlGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IEluc3BlY3RvclJlcGxheUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OlJlcGxheUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
KyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIAogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVwbGF5QWdlbnQodGhpcyk7CiAgICAgQVNTRVJUKHNl
c3Npb25TdGF0ZSgpID09IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6SW5hY3RpdmUpOwpAQCAtMTg0
LDcgKzE4NCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqCiAgICAgICAgIG1fc2VnbWVudHNN
YXAuYWRkKCgqaXQpLT5pZGVudGlmaWVyKCksICppdCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVw
bGF5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24pCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKaW5k
ZXggMzYzMmM0ZjQxM2U0Y2YyZDBjMzQ5ZTJmYzJlMjM3YjUxZDBjMTIzNS4uMzNiZjI5YzExYTUx
MGNiYTkzM2Y4NWFlNWEyZTVmMjI0MDY1NjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKQEAgLTU4LDE0ICs1OCwxNCBAQCB0eXBlZGVm
IGludCBTZWdtZW50SWRlbnRpZmllcjsKIAogY2xhc3MgSW5zcGVjdG9yUmVwbGF5QWdlbnQgZmlu
YWwKICAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKLSAgICAsIHB1YmxpYyBJbnNwZWN0
b3I6Okluc3BlY3RvclJlcGxheUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgLCBwdWJs
aWMgSW5zcGVjdG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclJlcGxheUFnZW50KTsKIHB1YmxpYzoKICAgICBJbnNw
ZWN0b3JSZXBsYXlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50
Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVwbGF5QWdlbnQoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25u
ZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBj
YWxsYmFja3MuCiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciopOwpAQCAt
MTE0LDggKzExNCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50
PiBmaW5kU2VnbWVudChFcnJvclN0cmluZyYsIFNlZ21lbnRJZGVudGlmaWVyKTsKICAgICBXZWJD
b3JlOjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKCkgY29uc3Q7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JSZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclJlcGxheUJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OlJlcGxheUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UmVwbGF5QmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgUGFnZSYgbV9wYWdlOwogCiAgICAgSGFzaE1hcDxpbnQsIFJl
ZlB0cjxSZXBsYXlTZXNzaW9uPiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gbV9zZXNzaW9uc01hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA0OTIyZjMx
ODk5NmM1ODg0NmU2ZWZkYjRkNDE2MTYwODhmZmFhMmQwLi5mOWJiZjgwOGUwYjIxNjJiNmVjODE4
M2E2MDc5OGFlNDBiNTE5MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKLXR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3Jr
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpMb2FkUmVzb3VyY2VDYWxsYmFjayBMb2FkUmVzb3Vy
Y2VDYWxsYmFjazsKK3R5cGVkZWYgSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpMb2FkUmVzb3VyY2VDYWxsYmFjayBMb2FkUmVzb3VyY2VDYWxsYmFjazsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzMsMTMgKzE3MywxMyBAQCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbgogewogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Cisg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKaW5kZXggZTg0NjU5MWIxZDRmNTI5MTIzMDI3YzBjYWE1YzY3Nzk1OTdkM2QxNS4u
ODRjM2JmZGNlNGQ4MTE0ZGU1MzY3MDlkZjIxNjA1NDk0YzBlMDQxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03MywxNCAr
NzMsMTQgQEAgc3RydWN0IFdlYlNvY2tldEZyYW1lOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Ok5ldHdvcmtCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCopOwogICAgIHZpcnR1YWwgfkluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
IAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCiAgICAgdm9pZCB3
aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAtMTM4LDggKzEzOCw4IEBAIHByaXZhdGU6CiAKICAg
ICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3RvckNsaWVudCog
bV9jbGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29y
a0Zyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Ok5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya1Jlc291cmNlc0RhdGE+IG1fcmVzb3VyY2VzRGF0YTsKICAgICBib29s
IG1fZW5hYmxlZDsKICAgICBib29sIG1fY2FjaGVEaXNhYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2MmVkNjdhODdmZWY1
ZDdhNDk1OWY2MTg5ZmViYmQyYzkxN2E4Zjg4Li4wOGJkYmVlMTM2YWM3MmNkY2VkNmVlNDRhYTZl
YTc3ZThlNDI4MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC0zOTksNyArMzk5LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkg
Y28KIAogICAgICAgICAvLyBWaXN1YWwgU3R1ZGlvIGRpc2FncmVlcyB3aXRoIG90aGVyIGNvbXBp
bGVycyBhcyB0byB3aGV0aGVyICdjbGFzcycgaXMgbmVlZGVkIGhlcmUuCiAjaWYgQ09NUElMRVIo
TVNWQykKLSAgICAgICAgZW51bSBjbGFzcyBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5U3RhdHVzIHN0YXR1czsKKyAgICAgICAgZW51bSBjbGFzcyBQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eVN0YXR1cyBzdGF0dXM7CiAjZWxzZQogICAgICAgICBlbnVtIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXMgc3RhdHVzOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5k
ZXggYjkyMmM3OGNmZjk2ZWE0M2ZkMzk5MGJiNmI4ZDdmMDI4NTU5MjZiOS4uMWE0ZDZlNzczMmI1
NmI4NTZhMTUyMDYxNDAxZjQzZWI4Y2U1OGY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNjIsMTAgKzYyLDEwIEBA
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCkKIHsKIH0K
IAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JUaW1l
bGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlRp
bWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCkBAIC03MywxNCAr
NzMsMTQgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm8KICAgICAgICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci0+cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uIHJlYXNvbikK
IHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci5jbGVhcigpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0
ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudChudWxscHRyKTsKIAotICAgIGlmIChyZWFzb24gIT0g
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKSB7Cisg
ICAgaWYgKHJlYXNvbiAhPSBJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRh
cmdldERlc3Ryb3llZCkgewogICAgICAgICBpZiAobV9zY3JpcHREZWJ1Z1NlcnZlcikKICAgICAg
ICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgKaW5kZXggZWE0NDg1YjMyZDMyY2Q2M2E3OWUyYWZhM2ZmNzg1ZmQxYWQ5YzYzNC4uNDVh
ZjYzNTk5ZjhjZTdkMzVmNzE5MTFkYTg5MTYyN2QwY2Y5ZWM3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC0xMDcsNyArMTA3
LDcgQEAgZW51bSBjbGFzcyBUaW1lbGluZVJlY29yZFR5cGUgewogCiBjbGFzcyBJbnNwZWN0b3JU
aW1lbGluZUFnZW50IGZpbmFsCiAgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlCi0gICAg
LCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcgorICAgICwgcHVibGljIEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OlNjcmlwdERlYnVnTGlzdGVuZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTE3LDggKzExNyw4IEBAIHB1YmxpYzoKICAgICBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdl
bnQqLCBJbnNwZWN0b3JUeXBlLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIG1heENh
bGxTdGFja0RlcHRoID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3Ao
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTIyOSw4ICsyMjksOCBAQCBwcml2YXRlOgogICAg
IEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgUGFnZVNjcmlwdERlYnVnU2Vy
dmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiAKICAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4gbV9yZWNvcmRTdGFj
azsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKaW5kZXggM2JiMTQwM2ViMGJlNjc1Zjk4OTQyZTQwYzg5ZTU1MjlhNDdiMDE3Mi4uZDg0
YmIwNTliZmRiYzA1MzIyMzdhNDRjMjY0OGFhOGFiNTM5NGUzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC00Niw3ICs0Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50OjpXb3Jr
ZXJGcm9udGVuZENoYW5uZWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6UGFnZUlu
c3BlY3RvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgV29ya2VyRnJvbnRlbmRDaGFubmVsKEluc3BlY3RvcldvcmtlckZyb250ZW5kRGlzcGF0
Y2hlciogZnJvbnRlbmREaXNwYXRjaGVyLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSkK
KyAgICBleHBsaWNpdCBXb3JrZXJGcm9udGVuZENoYW5uZWwoSW5zcGVjdG9yOjpXb3JrZXJGcm9u
dGVuZERpc3BhdGNoZXIqIGZyb250ZW5kRGlzcGF0Y2hlciwgV29ya2VyR2xvYmFsU2NvcGVQcm94
eSogcHJveHkpCiAgICAgICAgIDogbV9mcm9udGVuZERpc3BhdGNoZXIoZnJvbnRlbmREaXNwYXRj
aGVyKQogICAgICAgICAsIG1fcHJveHkocHJveHkpCiAgICAgICAgICwgbV9pZChzX25leHRJZCsr
KQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlcihtX2lkLCBtZXNzYWdlT2JqZWN0KTsKICAgICB9
CiAKLSAgICBJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmREaXNw
YXRjaGVyOworICAgIEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcjsKICAgICBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBtX3Byb3h5OwogICAg
IGludCBtX2lkOwogICAgIGJvb2wgbV9jb25uZWN0ZWQ7CkBAIC0xMTQsMTMgKzExNCwxMyBAQCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6fkluc3BlY3RvcldvcmtlckFnZW50KCkKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvcldvcmtlckFnZW50KG51bGxwdHIpOwogfQogCi12
b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvcldvcmtlckJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVj
dG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25T
dGFydCA9IGZhbHNlOwogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggNjg2OWQ1YTY4MDRmNzI5
ODBiMDY3MmIwOWI2Y2EzY2I4ODAyZmFmYi4uNGU3M2NmYjkxNzBmMjM0MGJiMDQ4OWM2ZDkxYWYz
YzlmMzk4YTU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBj
bGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3Bh
dGNoZXI7CitjbGFzcyBXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ4LDE0ICs0OCwxNCBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZVByb3h5
OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yV29ya2Vy
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVj
dG9yV29ya2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RvcldvcmtlckFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JXb3JrZXJB
Z2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29u
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2Fs
bGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgYm9vbCBzaG91bGRQYXVzZURl
ZGljYXRlZFdvcmtlck9uU3RhcnQoKSBjb25zdDsKQEAgLTc2LDggKzc2LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZVBy
b3h5KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgZGVzdHJveVdvcmtlckZyb250ZW5k
Q2hhbm5lbHMoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3Rvcldv
cmtlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpX
b3JrZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1f
ZW5hYmxlZDsKICAgICBib29sIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
N2E3Yjc2MjQyNTlmYmNiNjI2OWYxMjVlOTZhZTVlMmE2ZDZiZTY1NC4uZTEyM2MwYjM1OWQ2Nzgy
ZGIyNDcwMmRmMDdmODI4MjhlMWM3MWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIFBhZ2VSdW50aW1lQWdl
bnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIsCiB7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
K3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JS
dW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiBy
ZWFzb24pCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IGY4MmNm
YzAxMGM3MjY5MjNjZDM5M2M5NmI4MDMzZmY5NzI4OTM4OGIuLmU3YjJjMjRkOGQwZTU0NDljZTcy
ZjExOTRjOGQyMzRiNzMwZmFhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgUGFnZVJ1bnRpbWVB
Z2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFBhZ2UqLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCkgeyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7CiAKQEAgLTc0LDggKzc0LDggQEAgcHJpdmF0ZToKIAogICAgIFBhZ2UqIG1f
aW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBtX21haW5Xb3JsZENvbnRl
eHRDcmVhdGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDc3N2NmNzIzM2FkNzJlNDI2ZjE4YjQ4
MGZmYmU3ZDI5OGQxNGVjZWMuLmYxZmU0MTAwNWFkZmVhNGJjMDFlMGFkNWI3N2Y1OGYwYjk2YzI3
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTEwOCwxOCArMTA4LDE4IEBAIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsCiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp+V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcigpCiB7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5yZXNldCgpOwotICAgIGRpc2Nv
bm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXRE
ZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRl
bmRDaGFubmVsKTsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZUluc3BlY3RvclByb3h5PihtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kQ2hh
bm5lbC5nZXQoKSk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbV9iYWNrZW5kRGlz
cGF0Y2hlci5nZXQoKSk7CiB9CiAKLXZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmODc3OTQzNzgzOTNhMzFkMzIwYmE0NGUyMjg5
YjMzNTYxNDVmMmZkLi45Njc0MDgzY2RlY2FkYzkxZTUwMzAyMjI3ZmRjNGQxYTkxOGJlYTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmgKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CkBAIC02MSw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGNvbm5l
Y3RGcm9udGVuZCgpOwotICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21G
cm9udGVuZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlc3VtZSgpOwogCkBAIC04MSwxMCAr
NzcsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0
cnVtZW50aW5nQWdlbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIFdvcmtlclJ1bnRpbWVBZ2VudCog
bV9ydW50aW1lQWdlbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1f
YWdlbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1f
ZnJvbnRlbmRDaGFubmVsOworICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRl
bmRDaGFubmVsOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgVmVjdG9yPEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSwgMj4gbV9pbmplY3RlZFNjcmlwdEluc3RydW1lbnRhdGlvbkNvb2tpZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmlu
ZGV4IDc2OTA0OWUzMjJmNWE2NTk5NDNhYTY3MGIwMmJkOTI1MzJkM2I3OGMuLjllYTI4NWM2ZWRl
MmQzY2YyNWE1YjYyODhlYTgzOWZjYjNlNzZiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgV29ya2Vy
UnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBp
bmplY3RlZFNjcmlwdE1hbmEKIHsKIH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
V29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGlt
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBXb3JrZXJSdW50
aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKQordm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggODE0YzY2ZDZiYzlkNDYxODMxOTE0YTli
ZmI0MWUyODgyZTFjMGQzNy4uODc4YmRkMjQ4YjA4YmUxYzhhZjRlZjQ1NzI3MzM0ZTcwOGE5MGMz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApA
QCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgV29ya2VyUnVudGltZUFnZW50KEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgV29ya2VyR2xvYmFsU2NvcGUqKTsKICAgICB2aXJ0
dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsK
IApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29s
ZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7
CiAgICAgV29ya2VyR2xvYmFsU2NvcGUqIG1fd29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1fcGF1c2VkOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGRjYzM0ZGRjM2YxNTllNjI4ZDY1NzlmYTQ0
ZjNmMGE2MWM5YWY0M2EuLjE0ZWM2MmViYjVmNmRjZDJjZmYyMGU1NGRiYTI3ZmQ2MWMxZDYxZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTU5NCw3ICs1OTQsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGUg
eyB9CiAgICAgCi0gICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGUgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKaW5kZXggNWNmODQ5YTJmYTUzNzUwNmE5MTFl
OWRiYTczNDg2YjA2ZmUyNmEwZS4uNjc2YzRjYTkyNGQ3MTI1MjRhYzI0OGVmMmMxNTUxOTczNzE0
NDI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTY4LDcgKzY4
LDcgQEAgYm9vbCBQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuaGFzTG9jYWxGcm9udGVuZCgpOwog
fQogCi12b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKK3ZvaWQg
UGFnZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGNoYW5u
ZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQogewogICAgIGlmICghbV9wYWdlLnNldHRp
bmdzKCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSB7CiAgICAgICAgIG1fZm9yY2VkRGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCA9IHRydWU7CkBAIC03OCwxMyArNzgsMTMgQEAgdm9pZCBQYWdlRGVi
dWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hh
bm5lbCwgYm9vbAogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxl
ciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxl
ci5zZXRIYXNSZW1vdGVGcm9udGVuZCh0cnVlKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLmNv
bm5lY3RGcm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCo+KGNoYW5uZWwpLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOworICAgIGluc3BlY3Rv
ckNvbnRyb2xsZXIuY29ubmVjdEZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8SW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqPihjaGFubmVsKSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAog
dm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgSW5zcGVjdG9yQ29udHJv
bGxlciYgaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7
Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBpbnNwZWN0b3JDb250cm9s
bGVyLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3Bl
Y3RvckRlc3Ryb3llZCk7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxlci5zZXRIYXNSZW1vdGVGcm9u
dGVuZChmYWxzZSk7CiAKICAgICBpZiAobV9mb3JjZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXggNDFlZmJjNzE3Y2ZjMWJlNmVj
MmQ3MWU5MTU4OGNhNDYyNjJjYTIwMS4uN2Y3YWE5YmZlZjBjYWYzMGVjNDgzY2EwM2VkYzU4YjE5
ZjBlNmZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0lu
c3BlY3Rpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRp
Y2F0aW5nKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDg2NDZlMDZmM2VhNzhhNzY0ZjZlOTAyYTg3MmQ3NzViMzczOGE3YWQuLjEwYmEzY2RhNjYy
ZTMwZTdlMWQxNzVkZGI5Yjk3Yzg0Yjk5YzI5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE1NTgsNyArMTU1OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpjbG9zZUR1bW15
SW5zcGVjdG9yRnJvbnRlbmQoKQogICAgIEFTU0VSVChwYWdlKTsKICAgICBBU1NFUlQobV9mcm9u
dGVuZFdpbmRvdyk7CiAKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7
CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKICAgICBtX2Zy
b250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmlu
ZGV4IDQzN2MxMDhjOTM1YmU1ZjIxM2I1ZGNlZDM1ZDZjOTMyNTE2M2EwZTAuLjc4NDViNjFmYThk
Y2ZhZjlmNjdmYWEwZDk0MjVkMGY5YjJiNWQ2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKQogICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3dvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkud29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5z
cGVjdG9yRGVzdHJveWVkKTsKICAgICB9LCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRh
c2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9X
ZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
bgppbmRleCA1Y2QzZGFhZjQwMDQ2YzVhODVhOTk0MWIwMjgwOGE3ODAwOWZmMzgwLi4zMjY2YWMx
NmMxNzNlZjg1MjhjMGUwNzZmMDNmOGEzYzQ5MDUwMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVy
YXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtMjE2LDcgKzIxNiw3IEBAIEVYUE9SVFMKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoPz8xSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBX
ZWJDb3JlQEBVQUVAWFosID8/MUluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBA
VUVBQUBYWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2NoYW5nZUF0dGFjaGVkV2luZG93
SGVpZ2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2No
YW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2Vi
Q29yZUBAVUVBQVhJQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRhY2hl
ZFdpbmRvd1dpZHRoQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElA
WiwgP2NoYW5nZUF0dGFjaGVkV2luZG93V2lkdGhASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bEBXZWJDb3JlQEBVRUFBWElAWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Nvbm5lY3RG
cm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhQQVZJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxASW5zcGVjdG9yQEBfTkBaLCA/Y29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUVBQVhQRUFWSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsQEluc3Bl
Y3RvckBAX05AWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Nvbm5lY3RGcm9udGVuZEBJ
bnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhQQVZJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWxAV2ViQ29yZUBAX05AWiwgP2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdl
YkNvcmVAQFFFQUFYUEVBVkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbEBXZWJDb3JlQEBfTkBaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFn
ZUBJbnNwZWN0b3JDbGllbnRAV2ViQ29yZUBAU0FfTlBBVlBhZ2VAMkBBQlZTdHJpbmdAV1RGQEBA
WiwgP2RvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VASW5zcGVjdG9yQ2xpZW50QFdlYkNv
cmVAQFNBX05QRUFWUGFnZUAyQEFFQlZTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP2Zyb250ZW5kTG9hZGVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2Vi
Q29yZUBAVUFFWFhaLCA/ZnJvbnRlbmRMb2FkZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bEBXZWJDb3JlQEBVRUFBWFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Z2V0UHJvcGVy
dHlAU2V0dGluZ3NASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUU/QVZT
dHJpbmdAV1RGQEBBQlY0NUBAWiwgP2dldFByb3BlcnR5QFNldHRpbmdzQEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQT9BVlN0cmluZ0BXVEZAQEFFQlY0NUBAWikKQEAg
LTIyOSw3ICsyMjksNyBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD93aW5k
b3dPYmplY3RDbGVhcmVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFF
WFhaLCA/d2luZG93T2JqZWN0Q2xlYXJlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdl
YkNvcmVAQFVFQUFYWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9wYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRAV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBBQlYyM0AwQFosID9wYXRoQnlB
cHBlbmRpbmdDb21wb25lbnRAV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBBRUJWMjNAMEBaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFosID9zZXRQcm9maWxlckVuYWJsZWRASW5zcGVjdG9y
Q29udHJvbGxlckBXZWJDb3JlQEBRRUFBWF9OQFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYVzRJ
bnNwZWN0b3JEaXNjb25uZWN0UmVhc29uQEluc3BlY3RvckBAQFosID9kaXNjb25uZWN0RnJvbnRl
bmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUFBWFc0SW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbkBJbnNwZWN0b3JAQEBaKQorICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZGlzY29u
bmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFc0RGlzY29ubmVj
dFJlYXNvbkBJbnNwZWN0b3JAQEBaLCA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRy
b2xsZXJAV2ViQ29yZUBAUUVBQVhXNERpc2Nvbm5lY3RSZWFzb25ASW5zcGVjdG9yQEBAWikKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBA
WUFfTlBCVk5vZGVAMUBAWiwgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBF
QlZOb2RlQDFAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pc1ByZWxvYWRlZEBDYWNo
ZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaLCA/aXNQcmVs
b2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUVCQV9OQUVCVlN0cmluZ0BXVEZA
QEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpT
VmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NS
ZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFosID9qc0FycmF5QFdlYkNvcmVA
QFlBP0FWSlNWYWx1ZUBKU0NAQFBFQVZFeGVjU3RhdGVAM0BQRUFWSlNET01HbG9iYWxPYmplY3RA
MUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tCmluZGV4IDc4OTNmOGIyM2E4OTRmNzI1ZjkxOTc0OTJhMDdmZGZiN2UzYjQ0MGYuLjM0NDNk
Y2Q0Y2I3OTNlZGU4NTY0YThkMTM4YTY2YTNkYzExNzA2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTcz
MCw3ICs3MzAsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphcHBlbmQoY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogCiAgICAgaWYgKG5vdGlmeUlu
c3BlY3RvckNvbnRyb2xsZXIpIHsKICAgICAgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBb
X2luc3BlY3RlZFdlYlZpZXcuZ2V0KCkgcGFnZV0pCi0gICAgICAgICAgICBpbnNwZWN0ZWRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICAgICAgICAg
IGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogICAgIH0K
IAogICAgIFtfd2ViVmlldyBjbG9zZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA4MjI0ZDRlZThiNTVh
ODM1ZWI5NDQ0NmFlOTg1MjNiMDI3YTFlYWYzLi42OGViMWVjMTBiZTA3OGY1NDg1MWQwZmUyODU2
NDMwY2NiNTkzZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yVmlldyhib29sIG5vdGlm
eUluc3BlY3RvckNvbnRybwogICAgIGNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsK
IAogICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9sbGVyKSB7Ci0gICAgICAgIG1faW5zcGVj
dGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJv
eWVkKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uOjpJ
bnNwZWN0b3JEZXN0cm95ZWQpOwogICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+dXBkYXRlSGln
aGxpZ2h0KCk7CiAgICAgfQogICAgIDo6RGVzdHJveVdpbmRvdyhtX2Zyb250ZW5kSHduZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3Bw
CmluZGV4IDQ1NzBmOTEzNDdjZmUwNTgxMzllMDc1OGM2MjBhOTM4NTA4NjA5OTUuLmJmMDQ3NjA1
ZjEzMjUyZTNlZjkwYjBhOTZmMjllMWIzYzI0NTcyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC0yNzEsNyArMjcxLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCkKICAgICBt
X3JlbW90ZUZyb250ZW5kQ29ubmVjdGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9wYWdlLT5jb3Jl
UGFnZSgpKQotICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29u
OjpJbnNwZWN0b3JEZXN0cm95ZWQpOworICAgICAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246605</attachid>
            <date>2015-02-14 12:51:03 -0800</date>
            <delta_ts>2015-02-14 12:51:03 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-141372-20150214125100.patch</filename>
            <type>text/plain</type>
            <size>308398</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ODM0MWE3Njg1OWE0MWJhYjI5Mzk3YTlhYjY5ZGEzMWNiNDU0ZmZlLi4wMmE4ZDIzMTQxYjMzYmU2
N2JmZTZlNTAzZGMyMDRlZmU1OGMzZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDcgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U6OmFkZFRvRnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnk6OkFnZW50UmVnaXN0cnkpOgorICAgICAgICAoSW5z
cGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjphcHBlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpBZ2Vu
dFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6QWdlbnRS
ZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6QWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5OjpkaXNjYXJkQWdlbnRzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6SW5zcGVjdG9yQWdlbnRSZWdpc3RyeSk6
IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFw
cGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50UmVnaXN0
cnk6OmFwcGVuZEV4dHJhQWdlbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50UmVnaXN0cnk6OmRpc2NhcmRBZ2VudHMpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6Q2FsbGJhY2tCYXNlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6aXNBY3RpdmUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVy
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6
OnNlbmRJZkFjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJE
aXNwYXRjaGVyRm9yRG9tYWluKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnNl
bmRSZXNwb25zZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpyZXBv
cnRQcm90b2NvbEVycm9yKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6
OmdldEludGVnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
RG91YmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmlu
Zyk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZEZhaWx1cmUp
OiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpzZW5kSWZBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlZ2lzdGVyRGlzcGF0
Y2hlckZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOiBEZWxldGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9j
b2xFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpnZXRJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0Qm9v
bGVhbik6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpnZXRPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0VmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAo
SW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcjo6U3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcjo6flN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rv
clN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yU3VwcGxlbWVudGFsQmFja2VuZERpc3BhdGNoZXI6On5JbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oOgorICAgICAgICAoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWw6On5Gcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWw6On5JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0RGVzdHJv
eWVkKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRsZUNvbnNvbGVBc3NlcnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cGF1c2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1ApOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyQnJlYWtEZXRhaWxzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHA6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYXVnbWVudGFibGUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dl
bmVyYXRvci5weToKKyAgICAgICAgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfZm9ybWFsX291
dF9wYXJhbWV0ZXIpOgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl9zdGFja19v
dXRfcGFyYW1ldGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9n
ZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAoQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXIpOgorICAgICAgICAoQWx0ZXJuYXRlKToKKyAgICAgICAgKHZvaWQpOgorICAgICAgICAoQWx0
ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIpOiBEZWxldGVkLgorICAgICAgICAoQWx0
ZXJuYXRlSW5zcGVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5OgorICAgICAg
ICAoQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IuX2dlbmVyYXRlX2FsdGVybmF0
ZV9oYW5kbGVyX2ZvcndhcmRfZGVjbGFyYXRpb25zX2Zvcl9kb21haW5zLkFsdGVybmF0ZSk6Cisg
ICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfZGlz
cGF0Y2hlcl9kZWNsYXJhdGlvbl9mb3JfY29tbWFuZCk6CisgICAgICAgIChDcHBCYWNrZW5kRGlz
cGF0Y2hlckhlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYWx0ZXJuYXRlX2hhbmRsZXJfZm9yd2Fy
ZF9kZWNsYXJhdGlvbnNfZm9yX2RvbWFpbnMuQWx0ZXJuYXRlSW5zcGVjdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5k
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9oYW5kbGVyX2NsYXNzX2Rlc3Ry
dWN0b3JfZm9yX2RvbWFpbik6CisgICAgICAgIChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVu
dGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9sYXJnZV9kaXNwYXRjaGVyX3N3aXRjaF9pbXBsZW1l
bnRhdGlvbl9mb3JfZG9tYWluKToKKyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9y
X2NvbW1hbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBG
cm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0
Y2hlcl9pbXBsZW1lbnRhdGlvbl9mb3JfZXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5OgorICAgICAgICAoT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9ldmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1k
b21haW4uanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxp
YXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3REZWJ1Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpjb25uZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
OjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5oOgorCiAyMDE1LTAyLTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEF0dGVtcHQgdG8gZml4IDMyYml0cyBidWlsZCBhZnRlciByMTgwMDk4CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYjMzZmZhNTZiZGFiMWUxNWZlYWFjOGRiOTU0NTdjMTc4NjQ3MjVhOC4uY2E0
MjMzOTU2YzgwZTcxYTE0Y2QzYTFkNTc4MTI5MDI3NGIxMTZmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwOSBAQAorMjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkg
SW5zcGVjdG9yIHByZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5hbWVzcGFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzcy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1c2VPbk5h
dGl2ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Ondp
bGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcyk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6V29ya2VyRnJvbnRlbmRDaGFubmVsOjpX
b3JrZXJGcm9udGVuZENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1l
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOjp+V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250
ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVudGltZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VEZWJ1
Z2dhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KToKKyAgICAgICAg
KiBwYWdlL1BhZ2VEZWJ1Z2dhYmxlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjbG9zZUR1bW15SW5zcGVjdG9yRnJvbnRl
bmQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OmRpc2Nvbm5lY3RGcm9tSW5zcGVjdG9y
KToKKwogMjAxNS0wMi0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAog
ICAgICAgICByZWw9Im5vcmVmZXJyZXIiIHNob3VsZCBtYWtlIHdpbmRvdy5vcGVuZXIgbnVsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBiY2FmYWM1MWJiMzVhNmI1Y2Y0YTBjNTMxMWUyYTRmMjhmYTgzNmZlLi42NWQ0
MGViZjc4NGY5YTIxNWZjNzIzMGViMDY5YTE1ZmEyNWEzOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE1LTAyLTA5ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVk
dT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBJbnNw
ZWN0b3IgcHJlZml4ZXMgZnJvbSBjbGFzcyBuYW1lcyBpbiBJbnNwZWN0b3IgbmFtZXNwYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEzNzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52
Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKwogMjAx
NS0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA0
NWFjYWI0NzgwZDRlYWZhN2M1MmYxYmUyY2FjNGNkOWE4YjU4NTQuLjIyMjJmOWQ4ZjRmYzhhMDcw
MmJkZWE1NmJkN2E4MjQ4ZDIyMTM3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgSW5zcGVjdG9y
IHByZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5hbWVzcGFjZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgICgtW1dlYkluc3BlY3RvcldpbmRvd0Nv
bnRyb2xsZXIgZGVzdHJveUluc3BlY3RvclZpZXc6XSk6CisKIDIwMTUtMDItMTQgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgcmVsPSJub3JlZmVycmVyIiBz
aG91bGQgbWFrZSB3aW5kb3cub3BlbmVyIG51bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA4MTEwNDU5
OWI1MjYzZWRhZjlmNjcwM2ZkYzY0OWFmYTBmNDA3MWU5Li40YzgzNzUwODg4NDE0MDM4NTNmOGJh
MjlhOTM3MWNlNzg0ZDExNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVm
aXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpkZXN0cm95SW5zcGVjdG9yVmlldyk6CisKIDIwMTUtMDItMTEgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gWzY0LWJpdF0gV29yayBhcm91bmQg
TVNWQzIwMTMgUnVudGltZSBCdWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MDYzMGRiZGY5NjcyMmJmMDJlYzg3
YWU3Njk4NDI4ZWMyODczYTY2Li43YTc3MGVmYjk1MmQ2MDYzZDk5OGViY2IxZjYxMTkyNTAxNzJk
YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDItMDkgIEJyaWFuIEouIEJ1
cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJl
bW92ZSBzb21lIHVubmVjZXNzYXJ5IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVz
IGluIEluc3BlY3RvciBuYW1lc3BhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTM3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rvcjo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQp
OgorCiAyMDE1LTAyLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIENyYXNoIGNsb3NpbmcgYSB0YWIgd2hlbiBhIGNvbnRleHQgb3IgcG9wdXAgbWVu
dSBpcyBvcGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCmluZGV4IDUwZTExNDg3NGQxNjc5NGFhMDU2N2FjYjI1MTEwYzYxY2JmMDRi
YTguLmMxMTEyY2VjYTE0NWU5ODIwZjMzZWY5MGQ0OTNjNDFlYzIxY2Y1ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0x
NzcsNyArMTc3LDcgQEAgc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNvbnNvbGU6OkNvbnNv
bGVNZXNzYWdlOjpMZXZlbCBtZXNzYWdlTGV2ZWxWYWx1ZShNZXMKICAgICByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U6OkxldmVsOjpMb2c7CiB9CiAK
LXZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yQ29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgYm9vbCBnZW5lcmF0ZVBy
ZXZpZXcpCit2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVu
ZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIsIEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBib29sIGdlbmVyYXRlUHJldmlldykKIHsKICAg
ICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q29uc29sZTo6Q29uc29sZU1lc3NhZ2U+IGpzb25P
YmogPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDb25zb2xlOjpDb25zb2xlTWVzc2FnZTo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFNvdXJjZShtZXNzYWdlU291cmNlVmFsdWUobV9zb3VyY2UpKQpAQCAt
MjMwLDcgKzIzMCw3IEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVj
dG9yQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciogY29uc29sZUZyCiAgICAgY29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZUFkZGVkKFdURjo6bW92ZShqc29uT2JqKSk7CiB9CiAKLXZv
aWQgQ29uc29sZU1lc3NhZ2U6OnVwZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKEluc3BlY3RvckNv
bnNvbGVGcm9udGVuZERpc3BhdGNoZXIqIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIpCit2b2lk
IENvbnNvbGVNZXNzYWdlOjp1cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShDb25zb2xlRnJvbnRl
bmREaXNwYXRjaGVyKiBjb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKQogewogICAgIGNvbnNvbGVG
cm9udGVuZERpc3BhdGNoZXItPm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQobV9yZXBlYXRDb3Vu
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmgKaW5kZXggZWYxYzc5ZDE1YzdjZTg3M2Y3MGFlYTE1ZDEyZDk5MzdjZWRiZjdmYS4uYTcz
ZTI4NjMwYWZjOWQ3OGQ5Yjk0MDk0NjhmYTQ4NDUzOTkxOWNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApAQCAtNTUsOCArNTUsOCBA
QCBwdWJsaWM6CiAgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4sIEpTQzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
ciA9IDApOwogICAgIH5Db25zb2xlTWVzc2FnZSgpOwogCi0gICAgdm9pZCBhZGRUb0Zyb250ZW5k
KEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqLCBib29sIGdlbmVyYXRlUHJldmlldyk7Ci0gICAgdm9pZCB1cGRhdGVSZXBlYXRDb3VudElu
Q29uc29sZShJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCBh
ZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIqLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqLCBib29sIGdlbmVyYXRlUHJldmlldyk7CisgICAgdm9pZCB1cGRhdGVSZXBlYXRDb3Vu
dEluQ29uc29sZShDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyKik7CiAKICAgICBNZXNzYWdlU291
cmNlIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaAppbmRleCA2Mzlk
MDQ4YjI3YWVmOTdlZDNmYzJkMmUwODhmNWViNjMzMDlhNWE2Li42MzQwNGNmNTQyNTRhZDZhM2Vh
YTFhNWYyN2M0OWI5MTc3MmM4NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50QmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRCYXNlLmgKQEAgLTMxLDEwICszMSwxMCBAQAogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7
Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hl
cjsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKIAotZW51bSBjbGFzcyBJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uIHsKK2VudW0gY2xhc3MgRGlzY29ubmVjdFJlYXNvbiB7CiAgICAgSW5zcGVjdGVk
VGFyZ2V0RGVzdHJveWVkLAogICAgIEluc3BlY3RvckRlc3Ryb3llZAogfTsKQEAgLTQ1LDggKzQ1
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRvbWFpbk5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hl
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSB7
IH0KIAogcHJvdGVjdGVkOgpAQCAtNTcsNyArNTcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBTdHJp
bmcgbV9uYW1lOwogfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRp
ZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBZ2VudEJhc2VfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmlu
ZGV4IDQwMTA4ZWI0OWI0ZTliZGQ0ODMzZjVhOGZhZDM1MzdlYmJkYmFiNGMuLmJjYzA5ODgyMTRh
NjFkZjFlYTY3MzQzZDUzMjI2MTUyNWU3ZWY0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApAQCAt
MzEsMTcgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5OjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5KCkKK0FnZW50UmVnaXN0cnk6OkFnZW50
UmVnaXN0cnkoKQogewogfQogCi12b2lkIEluc3BlY3RvckFnZW50UmVnaXN0cnk6OmFwcGVuZChz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2VudCkKK3ZvaWQgQWdlbnRSZWdp
c3RyeTo6YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQog
ewogICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoYWdlbnQpKTsKIH0KIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotdm9pZCBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJh
c2U+IGFnZW50KQordm9pZCBBZ2VudFJlZ2lzdHJ5OjphcHBlbmRFeHRyYUFnZW50KHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQogewogICAgIG1fZXh0cmFEb21haW5z
LmFwcGVuZChhZ2VudC0+ZG9tYWluTmFtZSgpKTsKIApAQCAtNDksMTkgKzQ5LDE5IEBAIHZvaWQg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yQWdlbnRCYXNlCiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcikKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5z
aXplKCk7IGkrKykKICAgICAgICAgbV9hZ2VudHNbaV0tPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChmcm9udGVuZENoYW5uZWwsIGJhY2tlbmREaXNwYXRjaGVyKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JBZ2VudFJlZ2lzdHJ5Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgQWdlbnRSZWdpc3RyeTo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FnZW50cy5zaXplKCk7IGkrKykKICAgICAgICAgbV9hZ2Vu
dHNbaV0tPndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKHJlYXNvbik7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQWdlbnRSZWdpc3RyeTo6ZGlzY2FyZEFnZW50cygpCit2b2lkIEFnZW50UmVnaXN0
cnk6OmRpc2NhcmRBZ2VudHMoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hZ2Vu
dHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIG1fYWdlbnRzW2ldLT5kaXNjYXJkQWdlbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRS
ZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dFJlZ2lzdHJ5LmgKaW5kZXggOGI3NzU3ZjhjYTU1YjkyMzNmNWVkY2NjOGMzYmIyOWY3ZGY2NmNl
ZS4uOTYyZjAwNmRmNzI3MTNjMmQ5NDdmZTg3NTc5NGM4Nzk4MDk1NmM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lz
dHJ5LmgKQEAgLTMyLDE5ICszMiwyMCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xh
c3MgQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNw
ZWN0b3JBZ2VudEJhc2U7Ci1jbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLWNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKLWVudW0gY2xhc3MgSW5zcGVjdG9yRGlzY29ubmVj
dFJlYXNvbjsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQWdlbnRSZWdpc3Ry
eSB7CitlbnVtIGNsYXNzIERpc2Nvbm5lY3RSZWFzb247CisKK2NsYXNzIEpTX0VYUE9SVF9QUklW
QVRFIEFnZW50UmVnaXN0cnkgewogcHVibGljOgotICAgIEluc3BlY3RvckFnZW50UmVnaXN0cnko
KTsKKyAgICBBZ2VudFJlZ2lzdHJ5KCk7CiAKICAgICB2b2lkIGFwcGVuZChzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yQWdlbnRCYXNlPik7CiAKLSAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciopOwotICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbiByZWFzb24pOworICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKik7CisgICAgdm9pZCB3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lk
IGRpc2NhcmRBZ2VudHMoKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTKQpAQCAtNTUsOCArNTYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRoZXNl
IGFyZSBkZWNsYXJlZCBoZXJlIHRvIGF2b2lkIE1TVkMgZnJvbSB0cnlpbmcgdG8gY3JlYXRlIGRl
ZmF1bHQgaXBsZW1lbnRhdGlvbnMgd2hpY2ggd291bGQKICAgICAvLyBpbnZvbHZlIGdlbmVyYXRp
bmcgYSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IgZm9yIHRo
ZSBWZWN0b3Igb2Ygc3RkOjp1bmlxdWVfcHRycy4KLSAgICBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5
KGNvbnN0IEluc3BlY3RvckFnZW50UmVnaXN0cnkmKSA9IGRlbGV0ZTsKLSAgICBJbnNwZWN0b3JB
Z2VudFJlZ2lzdHJ5JiBvcGVyYXRvcj0oY29uc3QgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSYpID0g
ZGVsZXRlOworICAgIEFnZW50UmVnaXN0cnkoY29uc3QgQWdlbnRSZWdpc3RyeSYpID0gZGVsZXRl
OworICAgIEFnZW50UmVnaXN0cnkmIG9wZXJhdG9yPShjb25zdCBBZ2VudFJlZ2lzdHJ5JikgPSBk
ZWxldGU7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4+
IG1fYWdlbnRzOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCAzMTU2NGQ4NzQ1NGVlNTUxZWU2OTI1MDIz
YTc1YmM1N2ExOTRlMzBlLi5mODhjZmJkYWJjMWRjOWNlYWY4ZjUwMzBjNjc1ZDQ5NGQ3NjAzODE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMzQsMjUgKzM0LDI1IEBACiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCi1JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlOjpDYWxsYmFja0Jhc2UoUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJh
Y2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpCitCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
OjpDYWxsYmFja0Jhc2UoUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVy
LCBpbnQgaWQpCiAgICAgOiBtX2JhY2tlbmREaXNwYXRjaGVyKFdURjo6bW92ZShiYWNrZW5kRGlz
cGF0Y2hlcikpCiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9hbHJlYWR5U2VudChmYWxzZSkKIHsK
IH0KIAotYm9vbCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjppc0Fj
dGl2ZSgpIGNvbnN0Citib29sIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OmlzQWN0
aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fYWxyZWFkeVNlbnQgJiYgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+aXNBY3RpdmUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlOjpzZW5kRmFpbHVyZShjb25zdCBFcnJvclN0cmluZyYgZXJyb3IpCit2
b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRGYWlsdXJlKGNvbnN0IEVy
cm9yU3RyaW5nJiBlcnJvcikKIHsKICAgICBBU1NFUlQoZXJyb3IubGVuZ3RoKCkpOwogICAgIHNl
bmRJZkFjdGl2ZShudWxscHRyLCBlcnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZTo6c2VuZElmQWN0aXZlKFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiYgcGFydGlhbE1lc3NhZ2UsIGNvbnN0IEVycm9yU3RyaW5nJiBpbnZvY2F0aW9uRXJyb3Ip
Cit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRJZkFjdGl2ZShSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBhcnRpYWxNZXNzYWdlLCBjb25zdCBFcnJvclN0cmluZyYg
aW52b2NhdGlvbkVycm9yKQogewogICAgIGlmIChtX2FscmVhZHlTZW50KQogICAgICAgICByZXR1
cm47CkBAIC02MSwyMCArNjEsMjAgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlOjpzZW5kSWZBY3RpdmUoUmVmUHRyPEluc3BlY3Rvck9iamUKICAgICBtX2Fs
cmVhZHlTZW50ID0gdHJ1ZTsKIH0KIAotUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogaW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKGlu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhY2tl
bmREaXNwYXRjaGVyKGZyb250ZW5kQ2hhbm5lbCkpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpyZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29uc3QgU3RyaW5nJiBk
b21haW4sIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKiBkaXNwYXRjaGVy
KQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKGNv
bnN0IFN0cmluZyYgZG9tYWluLCBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0
Y2hlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZGlzcGF0Y2hlcnMuYWRkKGRvbWFpbiwgZGlz
cGF0Y2hlcik7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPEJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsK
IAogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcGFyc2VkTWVzc2FnZTsKICAgICBpZiAoIUlu
c3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSwgcGFyc2VkTWVzc2FnZSkpIHsKQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgfQogCiAgICAgU3RyaW5nIGRvbWFpbiA9IG1ldGhv
ZC5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOwotICAgIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyKiBkb21haW5EaXNwYXRjaGVyID0gbV9kaXNwYXRjaGVycy5nZXQoZG9tYWlu
KTsKKyAgICBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciogZG9tYWluRGlzcGF0Y2hlciA9
IG1fZGlzcGF0Y2hlcnMuZ2V0KGRvbWFpbik7CiAgICAgaWYgKCFkb21haW5EaXNwYXRjaGVyKSB7
CiAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgTWV0aG9kTm90Rm91bmQsICIn
IiArIGRvbWFpbiArICInIGRvbWFpbiB3YXMgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybjsK
QEAgLTEyOSw5ICsxMjksOSBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgZG9tYWluRGlzcGF0Y2hlci0+ZGlzcGF0
Y2goY2FsbElkLCBkb21haW5NZXRob2QsIG1lc3NhZ2VPYmplY3QucmVsZWFzZU5vbk51bGwoKSk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnNlbmRSZXNwb25zZShsb25n
IGNhbGxJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiByZXN1bHQsIGNvbnN0IEVycm9yU3Ry
aW5nJiBpbnZvY2F0aW9uRXJyb3IpCit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9u
c2UobG9uZyBjYWxsSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcmVzdWx0LCBjb25zdCBF
cnJvclN0cmluZyYgaW52b2NhdGlvbkVycm9yKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGludm9jYXRpb25FcnJvci5sZW5ndGgoKSkgewpAQCAtMTQyLDE1ICsxNDIs
MTUgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcg
Y2FsbElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWMKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBy
ZXNwb25zZU1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHJlc3BvbnNl
TWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIHJlc3VsdCk7CiAgICAg
cmVzcG9uc2VNZXNzYWdlLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgY2FsbElkKTsK
LSAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHJl
c3BvbnNlTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmRDaGFubmVsLT5z
ZW5kTWVzc2FnZVRvRnJvbnRlbmQocmVzcG9uc2VNZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3Io
Y29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3QKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJl
cG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNv
ZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgY29uc3QKIHsKICAgICBy
ZXBvcnRQcm90b2NvbEVycm9yKGNhbGxJZCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UsIG51bGxw
dHIpOwogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2Nv
bEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiYmIGRhdGEpIGNvbnN0Cit2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpy
ZXBvcnRQcm90b2NvbEVycm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JD
b2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYmIGRhdGEpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IGNvbnN0IGludCBlcnJvckNvZGVzW10gPSB7CiAgICAgICAgIC0zMjcwMCwgLy8gUGFyc2VFcnJv
cgpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJl
cG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiAgICAgQVNTRVJU
X0FSRyhlcnJvckNvZGUsICh1bnNpZ25lZCllcnJvckNvZGUgPCBXVEZfQVJSQVlfTEVOR1RIKGVy
cm9yQ29kZXMpKTsKICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwgZXJyb3JDb2Rlc1tlcnJvckNv
ZGVdKTsKIAotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFt
X2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEluc3BlY3Rvck9i
amVjdD4gZXJyb3IgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3
IEBAIHZvaWQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3Io
Y29uc3QgbG9uZyogY29uc3QgY2FsbElkLCBDCiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlLT5z
ZXRWYWx1ZShBU0NJSUxpdGVyYWwoImlkIiksIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOwogCi0g
ICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNz
YWdlLT50b0pTT05TdHJpbmcoKSk7CisgICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFJldHVyblZhbHVlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBEZWZhdWx0
VmFsdWVUeXBlPgpAQCAtMjI3LDM3ICsyMjcsMzcgQEAgc3RydWN0IEFzTWV0aG9kQnJpZGdlcyB7
CiAgICAgc3RhdGljIGJvb2wgYXNWYWx1ZShJbnNwZWN0b3JWYWx1ZSYgdmFsdWUsIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4mIG91dHB1dCkgeyByZXR1cm4gdmFsdWUuYXNWYWx1ZShvdXRwdXQpOyB9
CiB9OwogCi1pbnQgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIoSW5zcGVj
dG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCitpbnQg
QmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5
VmFsdWU8aW50LCBpbnQsIGludD4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2NvbEVy
cm9ycywgMCwgQXNNZXRob2RCcmlkZ2VzOjphc0ludGVnZXIsICJJbnRlZ2VyIik7CiB9CiAKLWRv
dWJsZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKEluc3BlY3Rvck9iamVj
dCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQorZG91YmxlIEJhY2tl
bmREaXNwYXRjaGVyOjpnZXREb3VibGUoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8
ZG91YmxlLCBkb3VibGUsIGRvdWJsZT4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBwcm90b2Nv
bEVycm9ycywgMCwgQXNNZXRob2RCcmlkZ2VzOjphc0RvdWJsZSwgIk51bWJlciIpOwogfQogCi1T
dHJpbmcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhJbnNwZWN0b3JPYmpl
Y3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1N0cmluZyBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVl
PFN0cmluZywgU3RyaW5nLCBTdHJpbmc+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9j
b2xFcnJvcnMsICIiLCBBc01ldGhvZEJyaWRnZXM6OmFzU3RyaW5nLCAiU3RyaW5nIik7CiB9CiAK
LWJvb2wgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEJvb2xlYW4oSW5zcGVjdG9yT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCitib29sIEJhY2tl
bmREaXNwYXRjaGVyOjpnZXRCb29sZWFuKEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVl
PGJvb2wsIGJvb2wsIGJvb2w+KG9iamVjdCwgbmFtZSwgdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJv
cnMsIGZhbHNlLCBBc01ldGhvZEJyaWRnZXM6OmFzQm9vbGVhbiwgIkJvb2xlYW4iKTsKIH0KIAot
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9i
amVjdChJbnNwZWN0b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2
YWx1ZUZvdW5kLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVy
cm9ycykKK1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmpl
Y3QoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFs
dWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJv
cnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWU8UmVmUHRyPEluc3BlY3Rvck9iamVj
dD4sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBJbnNwZWN0b3JPYmplY3QqPihvYmplY3QsIG5h
bWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxscHRyLCBBc01ldGhvZEJyaWRnZXM6
OmFzT2JqZWN0LCAiT2JqZWN0Iik7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KEluc3BlY3Rvck9iamVjdCogb2JqZWN0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQorUmVmUHRyPEluc3BlY3RvckFycmF5PiBC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkoSW5zcGVjdG9yT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpCiB7CiAgICAgcmV0dXJuIGdldFByb3BlcnR5VmFs
dWU8UmVmUHRyPEluc3BlY3RvckFycmF5PiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiwgSW5zcGVj
dG9yQXJyYXkqPihvYmplY3QsIG5hbWUsIHZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLCBudWxs
cHRyLCBBc01ldGhvZEJyaWRnZXM6OmFzQXJyYXksICJBcnJheSIpOwogfQogCi1SZWZQdHI8SW5z
cGVjdG9yVmFsdWU+IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShJbnNwZWN0
b3JPYmplY3QqIG9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sKiB2YWx1ZUZvdW5kLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+JiBwcm90b2NvbEVycm9ycykKK1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKEluc3BlY3Rvck9i
amVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wqIHZhbHVlRm91bmQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4mIHByb3RvY29sRXJyb3JzKQogewogICAgIHJl
dHVybiBnZXRQcm9wZXJ0eVZhbHVlPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4sIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4sIEluc3BlY3RvclZhbHVlKj4ob2JqZWN0LCBuYW1lLCB2YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9ycywgbnVsbHB0ciwgQXNNZXRob2RCcmlkZ2VzOjphc1ZhbHVlLCAiVmFsdWUi
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAppbmRleCAwZjBhMjQ1OWExOWNmMWU3ZDQ2Y2I0
MmQ1NjdjYmM3ZDAyZjRjNmFkLi5iMzAzNzAwYTIwOWJiMjIyNjZiYWU4ZjRlNGRlOGRkMzI2ZmI5
NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC0zMywyNyArMzMsMjggQEAKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwot
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgQmFja2VuZERpc3BhdGNoZXI7
CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CisKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwog
Ci1jbGFzcyBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyPiB7CitjbGFz
cyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPFN1cHBs
ZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyPiB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXImIGJhY2tl
bmREaXNwYXRjaGVyKQorICAgIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmRE
aXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAgICAgOiBtX2JhY2tlbmREaXNwYXRj
aGVyKGJhY2tlbmREaXNwYXRjaGVyKSB7IH0KLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgflN1cHBsZW1lbnRhbEJh
Y2tlbmREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2Fs
bElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdl
KSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5k
RGlzcGF0Y2hlcjsKIH07CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8QmFja2VuZERpc3BhdGNoZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKik7CisgICAgc3RhdGljIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEZyb250ZW5k
Q2hhbm5lbCopOwogCiAgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ2FsbGJhY2tCYXNlIDog
cHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tCYXNlPiB7CiAgICAgcHVibGljOgotICAgICAgICBD
YWxsYmFja0Jhc2UoUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwor
ICAgICAgICBDYWxsYmFja0Jhc2UoUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOwog
CiAgICAgICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZW5kRmFpbHVy
ZShjb25zdCBFcnJvclN0cmluZyYpOwpAQCAtNjMsMTMgKzY0LDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgdm9pZCBzZW5kSWZBY3RpdmUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBwYXJ0aWFsTWVz
c2FnZSwgY29uc3QgRXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcik7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgICAgIFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hl
cjsKICAgICAgICAgaW50IG1faWQ7CiAgICAgICAgIGJvb2wgbV9hbHJlYWR5U2VudDsKICAgICB9
OwogCi0gICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCA9IG51bGxwdHI7IH0KLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsgfQorICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9m
cm9udGVuZENoYW5uZWwgPSBudWxscHRyOyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9mcm9udGVuZENoYW5uZWw7IH0KIAogICAgIGVudW0gQ29tbW9uRXJyb3JDb2Rl
IHsKICAgICAgICAgUGFyc2VFcnJvciA9IDAsCkBAIC04MCw3ICs4MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgU2VydmVyRXJyb3IKICAgICB9OwogCi0gICAgdm9pZCByZWdpc3RlckRpc3BhdGNoZXJG
b3JEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW4sIEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tl
bmREaXNwYXRjaGVyKik7CisgICAgdm9pZCByZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oY29u
c3QgU3RyaW5nJiBkb21haW4sIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKik7CiAgICAg
dm9pZCBkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2VuZFJlc3Bv
bnNlKGxvbmcgY2FsbElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHJlc3VsdCwgY29uc3Qg
RXJyb3JTdHJpbmcmIGludm9jYXRpb25FcnJvcik7CiAgICAgdm9pZCByZXBvcnRQcm90b2NvbEVy
cm9yKGNvbnN0IGxvbmcqIGNvbnN0IGNhbGxJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgY29uc3Q7CkBAIC05NSwxMCArOTYsMTEgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGdldEFycmF5KEluc3BlY3Rvck9iamVjdCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCogdmFsdWVGb3VuZCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPiYgcHJvdG9jb2xFcnJvcnMpOwogCiBwcml2YXRlOgotICAgIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogaW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKSA6IG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKGluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCkgeyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVs
KiBGcm9udGVuZENoYW5uZWwpCisgICAgICAgIDogbV9mcm9udGVuZENoYW5uZWwoRnJvbnRlbmRD
aGFubmVsKSB7IH0KIAotICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JG
cm9udGVuZENoYW5uZWw7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIEluc3BlY3RvclN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyKj4gbV9kaXNwYXRjaGVyczsKKyAgICBGcm9udGVuZENoYW5uZWwq
IG1fZnJvbnRlbmRDaGFubmVsOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdXBwbGVtZW50YWxCYWNr
ZW5kRGlzcGF0Y2hlcio+IG1fZGlzcGF0Y2hlcnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oCmluZGV4IGZhMGE4ZWFlODM5ZjVmZTQ3MTc0ZTRjYmJj
OWRlNTc0MzJhNmI5NjEuLmEyYmY2ZjNjMjRmZTlhMzMwZGEzY2ZkYWVhN2IyY2NmNjhjMzgzNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKK2NsYXNzIEZyb250
ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKCkgeyB9CisgICAgdmlydHVhbCB+RnJvbnRlbmRDaGFubmVsKCkgeyB9CiAgICAgdmlydHVh
bCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA4NTA5
M2EzZGNlODhjNGMxMzFjZjk4YzRlNGE3YmNiMzFlNTYxMzlkLi42NTdjZWQ0NzkwMDg5NTkzMTQx
Mzc5Y2VjYjg1Y2YwMGI3NGZiNmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0
KGdsb2JhbE9iamVjdCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91
bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpj
cmVhdGUoKSkpCi0gICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQorICAg
ICwgbV9mcm9udGVuZENoYW5uZWwobnVsbHB0cikKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNo
KFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRo
RXhjZXB0aW9ucyh0cnVlKQogICAgICwgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24oZmFsc2UpCkBA
IC05NSwyMiArOTUsMjIgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp+SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCkKIAogdm9pZCBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6Omdsb2JhbE9iamVjdERlc3Ryb3llZCgpCiB7Ci0gICAgZGlzY29u
bmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERl
c3Ryb3llZCk7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3Bl
Y3RlZFRhcmdldERlc3Ryb3llZCk7CiAKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+ZGlz
Y29ubmVjdCgpOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
LCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQogewotICAgIEFTU0VSVCghbV9pbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcik7CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUKCFt
X2JhY2tlbmREaXNwYXRjaGVyKTsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNB
dXRvbWF0aWNJbnNwZWN0aW9uOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBm
cm9udGVuZENoYW5uZWw7Ci0gICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Zy
b250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9h
Z2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBt
X2luc3BlY3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhtX2FnZW50cy5leHRyYURvbWFp
bnMoKSk7CkBAIC0xMjAsMTYgKzEyMCwxNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbAogI2Vu
ZGlmCiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25u
ZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lkIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwp
CisgICAgaWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9h
Z2VudHMud2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKIAotICAgIG1faW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX2luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwgPSBudWxscHRyOworICAgIG1fYmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsK
KyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwg
PSBudWxscHRyOwogCiAgICAgbV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAt
MTQxLDggKzE0MSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlCiAKIHZvaWQgSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKQotICAgICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5kaXNwYXRjaChtZXNz
YWdlKTsKKyAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKKyAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjphcHBlbmRBUElCYWNrdHJhY2UoU2NyaXB0Q2FsbFN0YWNrKiBjYWxs
U3RhY2spCkBAIC0yNDUsMTIgKzI0NSwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6YXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdAogewog
ICAgIFN0cmluZyBkb21haW5OYW1lID0gYWdlbnQtPmRvbWFpbk5hbWUoKTsKIAotICAgIGlmICht
X2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkKLSAgICAgICAgYWdlbnQtPmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgaWYgKG1fZnJvbnRlbmRDaGFubmVsKQorICAgICAg
ICBhZ2VudC0+ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKG1fZnJvbnRlbmRDaGFubmVsLCBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZEV4dHJhQWdl
bnQoV1RGOjptb3ZlKGFnZW50KSk7CiAKLSAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwpCisgICAgaWYgKG1fZnJvbnRlbmRDaGFubmVsKQogICAgICAgICBtX2luc3BlY3RvckFnZW50
LT5hY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbk5hbWUpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiNjkzZTI4ZGE4MDRmZTZmYjU4NmVjODU4
Zjc1MWU3NjgxNzlmMDM5Li5hYjBhNTI4MDNhZGU3NTVhNjQyMmNiOGI2YWVhNmI3YjU4ZDkyZmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTUwLDEyICs1MCwx
MiBAQCBjbGFzcyBKU1ZhbHVlOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAorY2xhc3MgQmFj
a2VuZERpc3BhdGNoZXI7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKLWNsYXNzIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNz
IEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIApA
QCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICB+SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbik7Ci0gICAgdm9pZCBkaXNj
b25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pOworICAgIHZv
aWQgY29ubmVjdEZyb250ZW5kKEZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNw
ZWN0aW9uKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uKTsK
ICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIAog
ICAgIHZvaWQgZ2xvYmFsT2JqZWN0RGVzdHJveWVkKCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9hdWdtZW50aW5nQ2xpZW50OyB9IAogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Q2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9hdWdtZW50aW5nQ2xpZW50ID0gY2xpZW50OyB9
CiAKLSAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7IH0K
KyAgICB2aXJ0dWFsIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9mcm9udGVuZENoYW5uZWw7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIApAQCAtMTEwLDkgKzExMCw5IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
QWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2Nv
bnNvbGVBZ2VudDsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQ7
Ci0gICAgSW5zcGVjdG9yQWdlbnRSZWdpc3RyeSBtX2FnZW50czsKLSAgICBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRzOworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVu
ZENoYW5uZWw7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7CiAgICAg
Ym9vbCBtX2luY2x1ZGVOYXRpdmVDYWxsU3RhY2tXaXRoRXhjZXB0aW9uczsKICAgICBib29sIG1f
aXNBdXRvbWF0aWNJbnNwZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGU2MmVjMmVjMDRi
MGE4YjNiNmFjYWYyMTBkOTg4Njg3ZWZlNDE4YTAuLmJmMjQxYmE3NzgyZDljMDljYTZkYWQzNjA5
MmI4MjFhNzJhODM4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBJ
bnNwZWN0b3JBZ2VudDo6fkluc3BlY3RvckFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNwZWN0b3JB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9ySW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENo
YW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yQWdlbnQ6OndpbGxEZXN0
cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5oCmluZGV4IDM4YzllZWYyNzczMWE2OGRmMDA4OTVhNzVkNzVlNmY1ODViMWQz
NGMuLjRjNmVmNzgyYzE3N2ZlMmM4NWIyOGFkZWE1ZTY0ZGM3MzY2OWY5YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuaApAQCAtMzgsMjIgKzM4LDIxIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCitjbGFz
cyBCYWNrZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3RvckVudmlyb25tZW50OwotY2xhc3Mg
SW5zcGVjdG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JJbnNw
ZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVj
dG9yQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVj
dG9ySW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIEluc3BlY3RvckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEluc3BlY3RvckFnZW50KEluc3BlY3RvckVudmlyb25tZW50Jik7CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJv
bnRlbmRDaGFubmVsKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTY5
LDggKzY4LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckVudmlyb25tZW50
JiBtX2Vudmlyb25tZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JJbnNwZWN0b3JG
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3JJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9wZW5kaW5nRXZhbHVhdGVUZXN0
Q29tbWFuZHM7CiAgICAgc3RkOjpwYWlyPFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3Rl
T2JqZWN0PiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IG1fcGVuZGluZ0luc3BlY3REYXRhOwog
I2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMDUwNTExOTMxN2UzYTIxNGRiODg5MWU5OTI3Yjc2ZDE3
NDI1N2FmZS4uODE0YTBjMTFjZjYwOGVjNjk4OTljZWJmMWJhYzE0ZWFiYzE5YmFkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgSW5zcGVjdG9y
Q29uc29sZUFnZW50Ojp+SW5zcGVjdG9yQ29uc29sZUFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsLCBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IEluc3BlY3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBt
X2JhY2tlbmREaXNwYXRjaGVyID0gQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikK
K3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0
cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCmluZGV4IDcyNjJjMDc1YWQyMDIxMjFiNTNjMGI1YjYzODJhYmY4YWMxNmZmMWQuLmI5
ZGE5OWQzODJlZmNiMWIyNmQ5N2MyNTdlNmQwZDRjNTA1ZjIxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oCkBAIC00OCwxNSArNDgsMTUgQEAgY2xhc3MgU2NyaXB0QXJndW1lbnRzOwog
Y2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBDb25zb2xlQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDb25zb2xlQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JDb25zb2xlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtODEsOCArODEsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29s
ZU1lc3NhZ2U+KTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JDb25z
b2xlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwor
ICAgIFJlZlB0cjxDb25zb2xlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiAgICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOwogICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+PiBtX2NvbnNvbGVNZXNzYWdlczsKICAgICBpbnQg
bV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggM2FlNzYwOWNhZTIwYjdhZjBhZjM2MzczNjliN2Y0MmM3NDgyZmQyMC4uMmFj
YmNmNDkzNDM2ZjA2Njg1M2IzNDdlMjNlOGZmMzdkMTM5OTRmMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTY4LDE4ICs2OCwxOCBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Ojp+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFj
a2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CisgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiByZWFzb24pCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERp
c2Nvbm5lY3RSZWFzb24gcmVhc29uKQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVs
bHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CiAKLSAgICBib29sIHNraXBS
ZWNvbXBpbGUgPSByZWFzb24gPT0gSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVk
VGFyZ2V0RGVzdHJveWVkOworICAgIGJvb2wgc2tpcFJlY29tcGlsZSA9IHJlYXNvbiA9PSBEaXNj
b25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQ7CiAgICAgZGlzYWJsZShza2lw
UmVjb21waWxlKTsKIH0KIApAQCAtMTgxLDcgKzE4MSw3IEBAIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhjZXB0aW9uUGF1c2VSZWFzb24oY29u
c3QKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29uc29sZUFzc2VydChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKHNjcmlwdERlYnVnU2VydmVyKCkucGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9u
cykKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkFzc2VydCwgYnVpbGRBc3NlcnRQYXVzZVJlYXNvbihtZXNzYWdlKSk7Cisg
ICAgICAgIGJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpB
c3NlcnQsIGJ1aWxkQXNzZXJ0UGF1c2VSZWFzb24obWVzc2FnZSkpOwogfQogCiBzdGF0aWMgUmVm
PEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBjb25kaXRpb24sIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGFjdGlvbnMsIGJvb2wgaXNSZWdl
eCwgYm9vbCBhdXRvQ29udGludWUpCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdAogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWlscyhlcnJvclN0cmlu
ZywgZnVuY3Rpb25JZCwgJmRldGFpbHMpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
JiBkYXRhKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25OZXh0
U3RhdGVtZW50KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24s
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0
UGF1c2VTY2hlZHVsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCkKIAog
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShFcnJvclN0cmluZyYpCiB7Ci0gICAg
c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpQYXVzZU9uTmV4dFN0YXRlbWVudCwgbnVsbHB0cik7CisgICAgc2No
ZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpQYXVzZU9uTmV4dFN0YXRlbWVudCwgbnVsbHB0cik7CiAKICAgICBtX2phdmFTY3JpcHRQ
YXVzZVNjaGVkdWxlZCA9IHRydWU7CiB9CkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyopCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2Nr
ZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7CiAgICAgaWYgKHNjcmlwdERl
YnVnU2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRv
bnRQYXVzZU9uRXhjZXB0aW9ucykKLSAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkNTUFZpb2xhdGlvbiwgYnVpbGRDU1BWaW9s
YXRpb25QYXVzZVJlYXNvbihkaXJlY3RpdmVUZXh0KSk7CisgICAgICAgIGJyZWFrUHJvZ3JhbShE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpDU1BWaW9sYXRpb24sIGJ1aWxkQ1NQ
VmlvbGF0aW9uUGF1c2VSZWFzb24oZGlyZWN0aXZlVGV4dCkpOwogfQogCiBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFt
ZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKEluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0KQpAQCAtNjY0LDIyICs2NjQsMjIgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0
IERlcHJlY2EKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiAKICAgICAvLyBJ
ZiBhIGhpZ2ggbGV2ZWwgcGF1c2UgcGF1c2UgcmVhc29uIGlzIG5vdCBhbHJlYWR5IHNldCwgdHJ5
IHRvIGluZmVyIGEgcmVhc29uIGZyb20gdGhlIGRlYnVnZ2VyLgotICAgIGlmIChtX2JyZWFrUmVh
c29uID09IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok90aGVy
KSB7CisgICAgaWYgKG1fYnJlYWtSZWFzb24gPT0gRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbjo6T3RoZXIpIHsKICAgICAgICAgc3dpdGNoIChzY3JpcHREZWJ1Z1NlcnZlcigpLnJl
YXNvbkZvclBhdXNlKCkpIHsKICAgICAgICAgY2FzZSBKU0M6OkRlYnVnZ2VyOjpQYXVzZWRGb3JC
cmVha3BvaW50OiB7CiAgICAgICAgICAgICBKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFr
cG9pbnRJZCA9IHNjcmlwdERlYnVnU2VydmVyKCkucGF1c2luZ0JyZWFrcG9pbnRJRCgpOwogICAg
ICAgICAgICAgaWYgKGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElEKSB7Ci0gICAgICAgICAgICAgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3Rv
ckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQ7CisgICAgICAg
ICAgICAgICAgbV9icmVha1JlYXNvbiA9IERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFz
b246OkJyZWFrcG9pbnQ7CiAgICAgICAgICAgICAgICAgbV9icmVha0F1eERhdGEgPSBidWlsZEJy
ZWFrcG9pbnRQYXVzZVJlYXNvbihkZWJ1Z2dlckJyZWFrcG9pbnRJZCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEpTQzo6RGVidWdn
ZXI6OlBhdXNlZEZvckRlYnVnZ2VyU3RhdGVtZW50OgotICAgICAgICAgICAgbV9icmVha1JlYXNv
biA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRlYnVnZ2Vy
U3RhdGVtZW50OworICAgICAgICAgICAgbV9icmVha1JlYXNvbiA9IERlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkRlYnVnZ2VyU3RhdGVtZW50OwogICAgICAgICAgICAgbV9icmVh
a0F1eERhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSlND
OjpEZWJ1Z2dlcjo6UGF1c2VkRm9yRXhjZXB0aW9uOgotICAgICAgICAgICAgbV9icmVha1JlYXNv
biA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV4Y2VwdGlv
bjsKKyAgICAgICAgICAgIG1fYnJlYWtSZWFzb24gPSBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uOjpFeGNlcHRpb247CiAgICAgICAgICAgICBtX2JyZWFrQXV4RGF0YSA9IGJ1aWxk
RXhjZXB0aW9uUGF1c2VSZWFzb24oZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSwgaW5qZWN0ZWRTY3Jp
cHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSlNDOjpEZWJ1Z2dlcjo6UGF1
c2VkQXRTdGF0ZW1lbnQ6CkBAIC03NTUsNyArNzU1LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRDb250aW51ZSgpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oSW5zcGVj
dG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
cmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBicmVha1JlYXNv
biwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhKQogewogICAgIG1fYnJlYWtSZWFzb24g
PSBicmVha1JlYXNvbjsKICAgICBtX2JyZWFrQXV4RGF0YSA9IFdURjo6bW92ZShkYXRhKTsKQEAg
LTgxNCw3ICs4MTQsNyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmFzc2VydFBhdXNl
ZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Y2xlYXJCcmVha0RldGFpbHMoKQogewotICAgIG1fYnJlYWtSZWFzb24gPSBJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpPdGhlcjsKKyAgICBtX2JyZWFrUmVh
c29uID0gRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXI7CiAgICAgbV9i
cmVha0F1eERhdGEgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
aW5kZXggOWJlMzIzMzE1MTA5NDU1ODc4YjAxYzM0YjA2MThjNTYzODE0NDUyYy4uYzFkNzk3Y2Ix
ZmI5OWM0MGZkMGUxZTVhNGU1NjUyOGE3MzNhZDY5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIFNj
cmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QWdlbnRCYXNlLCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckRl
YnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJs
aWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTY1LDggKzY1LDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEZyb250ZW5kQ2hhbm5lbCosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CkBAIC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGhhbmRs
ZUNvbnNvbGVBc3NlcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAotICAgIHZvaWQgc2NoZWR1
bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpOwor
ICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRh
dGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKLSAgICB2b2lkIGJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJy
ZWFrUmVhc29uLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEpOworICAgIHZvaWQgYnJl
YWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24s
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZGF0YSk7CiAgICAgdm9pZCBzY3JpcHRFeGVjdXRp
b25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsKIAogICAgIGNsYXNz
IExpc3RlbmVyIHsKQEAgLTE1NSw4ICsxNTUsOCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxKU0M6OkJyZWFrcG9pbnRJRCwgU3RyaW5nPiBEZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRFRv
QnJlYWtwb2ludElkZW50aWZpZXI7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPElu
c3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5k
RGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKICAgICBMaXN0ZW5lciogbV9saXN0ZW5lciB7bnVsbHB0cn07CiAgICAg
SlNDOjpFeGVjU3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGUge251bGxwdHJ9OwogICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKQEAgLTE2NSw3ICsxNjUsNyBA
QCBwcml2YXRlOgogICAgIEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50TWFwIG1famF2
YVNjcmlwdEJyZWFrcG9pbnRzOwogICAgIERlYnVnU2VydmVyQnJlYWtwb2ludElEVG9CcmVha3Bv
aW50SWRlbnRpZmllciBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3RvckJy
ZWFrcG9pbnRJZGVudGlmaWVyOwogICAgIEpTQzo6QnJlYWtwb2ludElEIG1fY29udGludWVUb0xv
Y2F0aW9uQnJlYWtwb2ludElEOwotICAgIEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb24gbV9icmVha1JlYXNvbjsKKyAgICBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uIG1fYnJlYWtSZWFzb247CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9i
cmVha0F1eERhdGE7CiAgICAgYm9vbCBtX2VuYWJsZWQge2ZhbHNlfTsKICAgICBib29sIG1famF2
YVNjcmlwdFBhdXNlU2NoZWR1bGVkIHtmYWxzZX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcAppbmRleCA5Yzk3MjVhNWZiMDg3NzgxMzM4ZjNlZTU3YmQxNTNkZGZhNTQzNjE5Li5mNDUz
OTM1ZWIwODdlZDYzMjQwYTBkOTgzNzkyMzJiZTk0OGE4YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTI5Niw5ICsyOTYsOSBAQCBzdGF0aWMgdm9pZCByZWNvbXBpbGVB
bGxKU0Z1bmN0aW9uc0ZvclR5cGVQcm9maWxpbmcoVk0mIHZtLCBib29sIHNob3VsZEVuYWJsZVR5
cAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nv
bm5lY3RSZWFzb24gcmVhc29uKQogewotICAgIGlmIChyZWFzb24gIT0gSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkICYmIG1faXNUeXBlUHJvZmlsaW5n
RW5hYmxlZCkKKyAgICBpZiAocmVhc29uICE9IERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRh
cmdldERlc3Ryb3llZCAmJiBtX2lzVHlwZVByb2ZpbGluZ0VuYWJsZWQpCiAgICAgICAgIHNldFR5
cGVQcm9maWxlckVuYWJsZWRTdGF0ZShmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmgKaW5kZXggMDdlNGZlY2Y5NzBjZDk3MDJhNGJmOWViNTAzYTZlZjk4NjZkMjVlNC4uODcx
M2VjMmIxZTczMmY2ZmU4NTFjZDUzZDE0NDM2OWYwMmQ0NTEzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmgKQEAgLTUwLDEyICs1MCwxMiBAQCBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNs
YXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNs
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBSdW50aW1lQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdl
bnQpOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZy
b250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IHRydWU7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9l
bmFibGVkID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cAppbmRleCBkYzQ0Y2M3ZmY2MTIxMWI2NzcyNmIzMGNiYjRmNGEwY2IzODgxN2YxLi42NThjNjdh
YjE1Zjg5NTIwNWM1NWJiNTI4OWMwYjlkMmU0ZTQwYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgSlNHbG9iYWxPYmplY3RS
dW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0TWFu
YWdlciogaW4KIHsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2
b2lkIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEJhY2tlbmREaXNwYXRjaGVyKiBi
YWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yUnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFu
bmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGltZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBSdW50aW1lQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZv
aWQgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJl
YXNvbiByZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudC5oCmluZGV4IGM2NTA2OGU2ODllYzQ1M2EzYzI1NDNhNmY4ZDQ4NTdlZTA4Y2Y3OTcu
LjYzMWJhZWMwZWIzM2RiOWUwODliNWNjYzEzOTFiOTU4MGE3ZmY0ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaApAQCAtMzgsOCArMzgsOCBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JSdW50aW1lQWdlbnQg
ewogcHVibGljOgogICAgIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEluamVjdGVkU2NyaXB0
TWFuYWdlciosIEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERl
c3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVu
ZENoYW5uZWwqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgSlNDOjpWTSYgZ2xvYmFsVk0oKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNv
bnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKQEAgLTUwLDggKzUwLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGUgeyB9CiAK
IHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3JSdW50
aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwor
ICAgIFJlZlB0cjxSdW50aW1lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1
Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKaW5kZXggOGY3YjQ3MDQxYWQ4
MjA4NmVkNGJmYWVjNzIwYzQzMmE2ODRkZTMxNS4uNWZmMDM1MzU4NGJkZTJlOTkyYzhiMDA5ZGIz
OTZkYmI2YTY1MjViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQuaApAQCAtMzUsMzIgKzM1LDMyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kRGlzcGF0Y2hlciwgdHlwZW5hbWUgQWx0ZXJuYXRlRGlz
cGF0Y2hlcj4KK3RlbXBsYXRlPHR5cGVuYW1lIFRCYWNrZW5kRGlzcGF0Y2hlciwgdHlwZW5hbWUg
VEFsdGVybmF0ZURpc3BhdGNoZXI+CiBjbGFzcyBBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50KGNvbnN0IFN0
cmluZyYgZG9tYWluTmFtZSwgc3RkOjp1bmlxdWVfcHRyPEFsdGVybmF0ZURpc3BhdGNoZXI+IGFs
dGVybmF0ZURpc3BhdGNoZXIpCisgICAgQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQoY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8VEFsdGVybmF0ZURpc3BhdGNoZXI+
IGFsdGVybmF0ZURpc3BhdGNoZXIpCiAgICAgICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKGRvbWFp
bk5hbWUpCiAgICAgICAgICwgbV9hbHRlcm5hdGVEaXNwYXRjaGVyKFdURjo6bW92ZShhbHRlcm5h
dGVEaXNwYXRjaGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpIG92ZXJyaWRlCisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqLCBCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpIG92ZXJyaWRlCiAgICAgewotICAgICAg
ICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5k
RGlzcGF0Y2hlciwgbnVsbHB0cik7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBUQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgbnVsbHB0cik7CiAgICAg
ICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNldEFsdGVybmF0ZURpc3BhdGNoZXIobV9hbHRlcm5h
dGVEaXNwYXRjaGVyLmdldCgpKTsKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRC
YWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcik7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5z
ZXRCYWNrZW5kRGlzcGF0Y2hlcihudWxscHRyKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFsdGVybmF0ZURpc3BhdGNoZXI+IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsK
LSAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFRBbHRlcm5hdGVEaXNwYXRjaGVyPiBtX2FsdGVybmF0ZURpc3BhdGNo
ZXI7CisgICAgUmVmUHRyPFRCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggOGE4ZTdhZDEwMmM0NGQ1Mjk4ZWZh
YmQ1NmNjZWQwMjkzMmI4MmUxZS4uMjQ1NmFjNTkxOWQ4YTBkNTY1OWQ2ZjcxY2MwNzU4OGY2Yzc3
NjhiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50
YWJsZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEF1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Q2xpZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3Bl
Y3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50
KikgPSAwOwogCi0gICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRl
bmRDaGFubmVsKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRFeHRyYUFnZW50
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+KSA9IDA7CiAKICAgICBib29sIGNv
bm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhZnJvbnRlbmRDaGFubmVsKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaAppbmRleCBkZDZhYTQ3OGM4ZDQ4ZTI3OTYzNGNjMDBl
YzA1YzliYjUyNTU3YjgzLi43MmZiMGRkM2QzN2MxYjFmYjJlOTIwN2M5ZjJjMWQzYjI0YjMyNGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC0zNCw3ICszNCw4IEBA
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWw7CitjbGFzcyBGcm9udGVuZENoYW5uZWw7CisKIHN0cnVjdCBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlSW5mbzsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZSB7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1
cmwoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBXZWIKICAgICB2aXJ0dWFsIGJvb2wg
aGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoRnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRpY2F0aW5n
KGJvb2wpIHsgfSAvLyBEZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAppbmRleCA1NDI1MTExNGU2M2Fj
NTRhODM1NDM4NjZhZGI1NDIzN2VjOTQxYmViLi4wNjA2MjdmYmQ0NTJlNDc3YjIwNjIwNWJiNDZl
YWQzZGI4NDE5ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogdHlwZWRlZiBWZWN0
b3I8UmVtb3RlSW5zcGVjdG9yQmxvY2s+IFJlbW90ZUluc3BlY3RvclF1ZXVlOwogCi1jbGFzcyBS
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbj4sIHB1Ymxp
YyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeworY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3Rl
SW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+LCBwdWJsaWMgRnJvbnRlbmRDaGFubmVsIHsK
IHB1YmxpYzoKICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlKiwgTlNTdHJpbmcgKmNvbm5lY3Rpb25JZGVudGlmaWVyLCBOU1N0
cmluZyAqZGVzdGluYXRpb24sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVU
eXBlKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vY3BwX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKaW5kZXggMDIxMTVhZTFiZmYzMzYwZDIy
NjRmMGE0MDFkZWNiMTRmOGVjNDU1Yy4uZGY5MGJlOTJkNWI0ZjUzNGFlZjBjM2UwNmZlY2FmNTMx
OTVkNjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CkBAIC0xOTUsNyArMTk1
LDcgQEAgY2xhc3MgQ3BwR2VuZXJhdG9yOgogICAgICAgICAgICAgICAgIHJldHVybiAnJXMqJyAl
IGNwcF9uYW1lCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKToKICAgICAg
ICAgICAgIGlmIF90eXBlLmlzX2Fub255bW91czoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ0lu
c3BlY3RvciVzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolcyonICUgKF90eXBlLnR5cGVfZG9t
YWluKCkuZG9tYWluX25hbWUsIHVjZmlyc3QocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJyVzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolcyonICUg
KF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIHVjZmlyc3QocGFyYW1ldGVyLnBhcmFt
ZXRlcl9uYW1lKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdJ
bnNwZWN0b3I6OlByb3RvY29sOjolczo6JXMqJyAlIChfdHlwZS50eXBlX2RvbWFpbigpLmRvbWFp
bl9uYW1lLCBfdHlwZS5yYXdfbmFtZSgpKQogCkBAIC0yNzAsNyArMjcwLDcgQEAgY2xhc3MgQ3Bw
R2VuZXJhdG9yOgogICAgICAgICAgICAgICAgIHJldHVybiBjcHBfbmFtZQogICAgICAgICBpZiBp
c2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSk6CiAgICAgICAgICAgICBpZiBfdHlwZS5pc19hbm9u
eW1vdXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3Ilc0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6JXMnICUgKF90eXBlLnR5cGVfZG9tYWluKCkuZG9tYWluX25hbWUsIHVjZmly
c3QocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJyVz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjolcycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21h
aW5fbmFtZSwgdWNmaXJzdChwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpKQogICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OiVzOjol
cycgJSAoX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZSwgX3R5cGUucmF3X25hbWUoKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vY3BwX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRl
eCAwMDI4NmFhOGUzZWQyNjg0MzAwZjhlYTdjNjBjNjQyOTdmYTlkZGJmLi4wNWYzNTMwOTc0ZTA1
OWQ3ZjljNjRmOWZlODk2MGU0NTMyY2FmZjhlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9j
cHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtNjYsMTIgKzY2LDEyIEBAICR7aW5jbHVkZXN9
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjpt
b3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsg
fQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRj
aGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAg
IFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAiIiIp
CiAKQEAgLTgzLDYxICs4Myw2MSBAQCBwcml2YXRlOgogI2VuZGlmIC8vICFkZWZpbmVkKCR7aGVh
ZGVyR3VhcmRTdHJpbmd9KSIiIikKIAogICAgIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVh
ZGVyRG9tYWluSGFuZGxlckludGVyZmFjZURlY2xhcmF0aW9uID0gKAotICAgICIiImNsYXNzIEFs
dGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CisgICAgIiIiY2xhc3MgQWx0ZXJu
YXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5h
dGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICR7Y29tbWFuZERlY2xhcmF0
aW9uc30KIH07IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJEb21haW5IYW5kbGVy
RGVjbGFyYXRpb24gPSAoCi0gICAgIiIiJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSBJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKKyAgICAiIiIke2NsYXNzQW5k
RXhwb3J0TWFjcm99ICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogcHVi
bGljOgogJHtjb21tYW5kRGVjbGFyYXRpb25zfQogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfklu
c3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0
dWFsIH4ke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OyIiIikKIAog
ICAgIEJhY2tlbmREaXNwYXRjaGVySGVhZGVyRG9tYWluRGlzcGF0Y2hlckRlY2xhcmF0aW9uID0g
KAotICAgICIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gSW5zcGVjdG9yJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworICAgICIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30g
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIFN1cHBsZW1lbnRh
bEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvciR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqLCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25z
dCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVy
cmlkZTsKICR7Y29tbWFuZERlY2xhcmF0aW9uc30KIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yJHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXImLCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
Kik7Ci0gICAgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciog
bV9hZ2VudDsKKyAgICAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3Bh
dGNoZXImLCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgJHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFs
dGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIo
QWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRj
aGVyKSB7IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHBy
aXZhdGU6Ci0gICAgQWx0ZXJuYXRlSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRj
aGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CiAjZW5kaWYKIH07IiIiKQog
CiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJBc3luY0NvbW1hbmREZWNsYXJhdGlvbiA9ICgK
LSAgICAiIiIgICAgJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2NhbGxiYWNrTmFtZX0gOiBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsK
KyAgICAiIiIgICAgJHtjbGFzc0FuZEV4cG9ydE1hY3JvfSAke2NhbGxiYWNrTmFtZX0gOiBwdWJs
aWMgQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSB7CiAgICAgcHVibGljOgotICAgICAg
ICAke2NhbGxiYWNrTmFtZX0oUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+JiYsIGludCBpZCk7CisgICAgICAgICR7Y2FsbGJhY2tOYW1lfShSZWY8QmFja2VuZERpc3Bh
dGNoZXI+JiYsIGludCBpZCk7CiAgICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoJHtvdXRQYXJhbWV0
ZXJzfSk7CiAgICAgfTsKICAgICB2aXJ0dWFsIHZvaWQgJHtjb21tYW5kTmFtZX0oJHtpblBhcmFt
ZXRlcnN9KSA9IDA7IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvblNt
YWxsU3dpdGNoID0gKAotICAgICIiInZvaWQgSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJl
ZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKKyAgICAiIiJ2b2lkICR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVm
PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAKICR7ZGlz
cGF0Y2hDYXNlc30KICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9y
dFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhv
ZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcXCcnLCAiJHtkb21haW5OYW1lfSIsICcuJywgbWV0aG9k
LCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3Vu
ZCwgbWFrZVN0cmluZygnXFwnJywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1ldGhvZCwgIicgd2Fz
IG5vdCBmb3VuZCIpKTsKIH0iIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0
aW9uTGFyZ2VTd2l0Y2ggPSAoCi0iIiJ2b2lkIEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCisiIiJ2b2lkICR7ZG9tYWluTmFtZX1CYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3RvciR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPCR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAKLSAgICB0eXBl
ZGVmIHZvaWQgKEluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcjo6KkNhbGxI
YW5kbGVyKShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpOworICAgIHR5cGVkZWYgdm9pZCAoJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVy
OjoqQ2FsbEhhbmRsZXIpKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhbGxIYW5kbGVyPiBEaXNwYXRjaE1h
cDsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGlzcGF0Y2hNYXAsIGRpc3Bh
dGNoTWFwLCAoKSk7CiAgICAgaWYgKGRpc3BhdGNoTWFwLmlzRW1wdHkoKSkgewpAQCAtMTU0LDcg
KzE1NCw3IEBAICR7ZGlzcGF0Y2hDYXNlc30KIAogICAgIEhhc2hNYXA8U3RyaW5nLCBDYWxsSGFu
ZGxlcj46Oml0ZXJhdG9yIGl0ID0gZGlzcGF0Y2hNYXAuZmluZChtZXRob2QpOwogICAgIGlmIChp
dCA9PSBkaXNwYXRjaE1hcC5lbmQoKSkgewotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpN
ZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXFwnJywgIiR7ZG9tYWluTmFtZX0iLCAnLicsIG1l
dGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+
cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90
Rm91bmQsIG1ha2VTdHJpbmcoJ1xcJycsICIke2RvbWFpbk5hbWV9IiwgJy4nLCBtZXRob2QsICIn
IHdhcyBub3QgZm91bmQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2MiwxMyAr
MTYyLDEzIEBAICR7ZGlzcGF0Y2hDYXNlc30KIH0iIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hl
ckltcGxlbWVudGF0aW9uRG9tYWluQ29uc3RydWN0b3IgPSAoCi0gICAgIiIiUmVmPEluc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyLCBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyKiBhZ2VudCkKKyAgICAiIiJSZWY8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPiAk
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIsICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIq
IGFnZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvciR7ZG9tYWluTmFt
ZX1CYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5k
RGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyOjpJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3Ike2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6IEluc3BlY3RvclN1
cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQorJHtkb21haW5O
YW1lfUJhY2tlbmREaXNwYXRjaGVyOjoke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoQmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCAke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRj
aGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcihudWxscHRyKQpAQCAtMTg0LDE1ICsxODQsMTUgQEAgSW5zcGVjdG9yJHtkb21haW5OYW1l
fUJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXIKICR7aW5QYXJhbWV0ZXJEZWNsYXJhdGlvbnN9CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5s
ZW5ndGgoKSkgewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQo
IlNvbWUgYXJndW1lbnRzIG9mIG1ldGhvZCBcJyVzXCcgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwgIiR7
ZG9tYWluTmFtZX0uJHtjb21tYW5kTmFtZX0iKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMp
KTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2Fs
bElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6
Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICIiIikKIAog
ICAgIEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25Bc3luY0NvbW1hbmQgPSAoCi0iIiJJ
bnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjoke2NhbGxiYWNr
TmFtZX06OiR7Y2FsbGJhY2tOYW1lfShSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYg
YmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQp
IHsgfQorIiIiJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFj
a05hbWV9Ojoke2NhbGxiYWNrTmFtZX0oUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmRE
aXNwYXRjaGVyLCBpbnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEY6
Om1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFja05hbWV9OjpzZW5kU3Vj
Y2Vzcygke2Zvcm1hbFBhcmFtZXRlcnN9KQordm9pZCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjoke2NhbGxiYWNrTmFtZX06OnNlbmRTdWNjZXNzKCR7Zm9ybWFsUGFyYW1l
dGVyc30pCiB7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpOwogJHtvdXRQYXJhbWV0ZXJBc3NpZ25tZW50c30KQEAgLTIwMCwy
NiArMjAwLDI2IEBAICR7b3V0UGFyYW1ldGVyQXNzaWdubWVudHN9CiB9IiIiKQogCiAgICAgRnJv
bnRlbmREaXNwYXRjaGVyRG9tYWluRGlzcGF0Y2hlckRlY2xhcmF0aW9uID0gKAotIiIiJHtjbGFz
c0FuZEV4cG9ydE1hY3JvfSBJbnNwZWN0b3Ike2RvbWFpbk5hbWV9RnJvbnRlbmREaXNwYXRjaGVy
IHsKKyIiIiR7Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yJHtkb21haW5OYW1lfUZyb250ZW5kRGlzcGF0
Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkg
OiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsg
fQorICAgICR7ZG9tYWluTmFtZX1Gcm9udGVuZERpc3BhdGNoZXIoRnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwpIDogbV9mcm9udGVuZENoYW5uZWwoZnJvbnRlbmRDaGFubmVsKSB7IH0K
ICR7ZXZlbnREZWNsYXJhdGlvbnN9CiBwcml2YXRlOgotICAgIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CisgICAgRnJvbnRlbmRDaGFubmVsKiBt
X2Zyb250ZW5kQ2hhbm5lbDsKIH07IiIiKQogCiAgICAgUHJvdG9jb2xPYmplY3RCdWlsZGVyRGVj
bGFyYXRpb25QcmVsdWRlID0gKAogIiIiICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFz
cyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBt
X3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNU
RVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBCdWlsZGVyKFJlZjwvKiR7b2JqZWN0VHlwZX0qL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8Lyoke29iamVjdFR5cGV9Ki9JbnNw
ZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQogICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUo
b2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0g
Tm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CkBAIC0yMzIs
OSArMjMyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgUmVmPCR7b2JqZWN0VHlwZX0+IHJlbGVhc2Uo
KQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVs
ZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKCR7b2JqZWN0VHlwZX0pID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZigke29i
amVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0g
ICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVz
dWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8JHtvYmplY3RUeXBlfT4qPigmcmVzdWx0KSk7
CiAgICAgICAgIH0KICAgICB9OwpAQCAtMjQ1LDE5ICsyNDUsMTkgQEAgJHtjb25zdHJ1Y3RvckV4
YW1wbGV9CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgp
CiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVs
ZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAgIH0iIiIpCiAKICAgICBQcm90
b2NvbE9iamVjdFJ1bnRpbWVDYXN0ID0gKAotIiIiUmVmUHRyPCR7b2JqZWN0VHlwZX0+IEJpbmRp
bmdUcmFpdHM8JHtvYmplY3RUeXBlfT46OnJ1bnRpbWVDYXN0KFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiYmIHZhbHVlKQorIiIiUmVmUHRyPCR7b2JqZWN0VHlwZX0+IEJpbmRpbmdU
cmFpdHM8JHtvYmplY3RUeXBlfT46OnJ1bnRpbWVDYXN0KFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4m
JiB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3Vs
dDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQ7CiAgICAgYm9vbCBjYXN0U3Vj
Y2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KHJlc3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0
U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgQmlu
ZGluZ1RyYWl0czwke29iamVjdFR5cGV9Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUocmVz
dWx0LmdldCgpKTsKICNlbmRpZiAgLy8gIUFTU0VSVF9ESVNBQkxFRAotICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZigke29iamVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDwk
e29iamVjdFR5cGV9Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RCYXNl
Kj4ocmVzdWx0LmdldCgpKSk7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKCR7b2JqZWN0VHlw
ZX0pID09IHNpemVvZihJbnNwZWN0b3JPYmplY3RCYXNlKSwgdHlwZV9jYXN0X3Byb2JsZW0pOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDwke29iamVjdFR5cGV9Kj4oc3RhdGljX2Nhc3Q8SW5zcGVj
dG9yT2JqZWN0QmFzZSo+KHJlc3VsdC5nZXQoKSkpOwogfQogIiIiKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hl
YWRlci5weQppbmRleCBhMjQxYzUzMDZhNDIxMjczMzUzYjAwNWM4NTA2Zjg0OGY1OTI5NDM4Li4y
M2U3ZDk5NzNjNmYyMDdkYjk0MjgzNTNmNzdlNDAyYzNkZGQxNzE5IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBf
YmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVy
X2hlYWRlci5weQpAQCAtODIsNyArODIsNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckhl
YWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxp
bmVzLmFwcGVuZCgnI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKScp
CiAgICAgICAgIGZvciBkb21haW4gaW4gZG9tYWluczoKLSAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZChzZWxmLndyYXBfd2l0aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgJ2NsYXNzIEFsdGVybmF0
ZUluc3BlY3RvciVzQmFja2VuZERpc3BhdGNoZXI7JyAlIGRvbWFpbi5kb21haW5fbmFtZSkpCisg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihk
b21haW4sICdjbGFzcyBBbHRlcm5hdGUlc0JhY2tlbmREaXNwYXRjaGVyOycgJSBkb21haW4uZG9t
YWluX25hbWUpKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyknKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxp
bmVzKQogCkBAIC0xOTcsNCArMTk3LDQgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFk
ZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuIHNlbGYud3JhcF93aXRoX2d1
YXJkX2Zvcl9kb21haW4oZG9tYWluLCBUZW1wbGF0ZShDcHBUZW1wbGF0ZXMuQmFja2VuZERpc3Bh
dGNoZXJIZWFkZXJEb21haW5EaXNwYXRjaGVyRGVjbGFyYXRpb24pLnN1YnN0aXR1dGUoTm9uZSwg
KipoYW5kbGVyX2FyZ3MpKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9kaXNwYXRjaGVyX2RlY2xhcmF0
aW9uX2Zvcl9jb21tYW5kKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICByZXR1cm4gIiAgICB2b2lk
ICVzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2Fn
ZSk7IiAlIGNvbW1hbmQuY29tbWFuZF9uYW1lCisgICAgICAgIHJldHVybiAiICAgIHZvaWQgJXMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7IiAlIGNvbW1hbmQu
Y29tbWFuZF9uYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVu
dGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRl
eCA1ODJkZTRiNGE0Y2FkYmFjYWJmZjkyZDBmYzMxYzkwZTkzMTY0MWExLi5kY2Q2NjRhNzA2OTdm
NjVkODI4ZjgxMzdlMmY4YTU1ZjJlNTI0M2M0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24ucHkKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNo
ZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBkZXN0cnVjdG9y
X2FyZ3MgPSB7CiAgICAgICAgICAgICAnZG9tYWluTmFtZSc6IGRvbWFpbi5kb21haW5fbmFtZQog
ICAgICAgICB9Ci0gICAgICAgIGRlc3RydWN0b3IgPSAnSW5zcGVjdG9yJShkb21haW5OYW1lKXNC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3IlKGRvbWFpbk5hbWUpc0JhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcigpIHsgfScgJSBkZXN0cnVjdG9yX2FyZ3MKKyAgICAgICAgZGVzdHJ1
Y3RvciA9ICclKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fiUoZG9tYWlu
TmFtZSlzQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9JyAlIGRlc3RydWN0b3JfYXJncwog
ICAgICAgICByZXR1cm4gc2VsZi53cmFwX3dpdGhfZ3VhcmRfZm9yX2RvbWFpbihkb21haW4sIGRl
c3RydWN0b3IpCiAKICAgICBkZWYgX2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25z
X2Zvcl9kb21haW4oc2VsZiwgZG9tYWluKToKQEAgLTEyMyw3ICsxMjMsNyBAQCBjbGFzcyBDcHBC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAg
ICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCiAgICAgICAgICAg
ICAgICAgJ2NvbW1hbmROYW1lJzogY29tbWFuZC5jb21tYW5kX25hbWUKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgnICAgICAgICAgICAgeyAiJShjb21tYW5kTmFtZSlz
IiwgJkluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNoZXI6OiUoY29tbWFuZE5h
bWUpcyB9LCcgJSBhcmdzKQorICAgICAgICAgICAgY2FzZXMuYXBwZW5kKCcgICAgICAgICAgICB7
ICIlKGNvbW1hbmROYW1lKXMiLCAmJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShj
b21tYW5kTmFtZSlzIH0sJyAlIGFyZ3MpCiAKICAgICAgICAgc3dpdGNoX2FyZ3MgPSB7CiAgICAg
ICAgICAgICAnZG9tYWluTmFtZSc6IGRvbWFpbi5kb21haW5fbmFtZSwKQEAgLTE5Miw3ICsxOTIs
NyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgICAgICAgICAgJ3N1Y2Nlc3NPdXRQYXJhbSc6IG91dF9zdWNjZXNz
X2FyZ3VtZW50CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGluX3BhcmFtZXRlcl9kZWNs
YXJhdGlvbnMuYXBwZW5kKCcgICAgJShwYXJhbWV0ZXJUeXBlKXMgaW5fJShwYXJhbWV0ZXJOYW1l
KXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6JShrZXllZEdldE1ldGhvZClzKHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCAlKHN1
Y2Nlc3NPdXRQYXJhbSlzLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7JyAlIHBhcmFtX2FyZ3MpCisg
ICAgICAgICAgICBpbl9wYXJhbWV0ZXJfZGVjbGFyYXRpb25zLmFwcGVuZCgnICAgICUocGFyYW1l
dGVyVHlwZSlzIGluXyUocGFyYW1ldGVyTmFtZSlzID0gQmFja2VuZERpc3BhdGNoZXI6OiUoa2V5
ZWRHZXRNZXRob2QpcyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiJShwYXJh
bWV0ZXJOYW1lKXMiKSwgJShzdWNjZXNzT3V0UGFyYW0pcywgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OycgJSBwYXJhbV9hcmdzKQogCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6
CiAgICAgICAgICAgICAgICAgb3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZyA9ICclKHBhcmFt
ZXRlck5hbWUpc192YWx1ZUZvdW5kID8gJShwYXJhbWV0ZXJFeHByZXNzaW9uKXMgOiBudWxscHRy
JyAlIHBhcmFtX2FyZ3MKQEAgLTIwOSw3ICsyMDksNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0
Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGNh
bGxiYWNrLT5kaXNhYmxlKCk7JykKLSAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVu
dHMuYXBwZW5kKCcgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJy
b3IoJmNhbGxJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVy
RXJyb3IsIGVycm9yKTsnKQorICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5h
cHBlbmQoJyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigm
Y2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIGVycm9yKTsnKQogICAgICAg
ICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgcmV0dXJuOycp
CiAgICAgICAgICAgICBtZXRob2RfcGFyYW1ldGVycy5hcHBlbmQoJ2NhbGxiYWNrLmNvcHlSZWYo
KScpCiAKQEAgLTI1MSw5ICsyNTEsOSBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAgICAgICAgbGluZXMgPSBbXQogICAg
ICAgICBpZiBsZW4oY29tbWFuZC5jYWxsX3BhcmFtZXRlcnMpID09IDA6Ci0gICAgICAgICAgICBs
aW5lcy5hcHBlbmQoJ3ZvaWQgSW5zcGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hl
cjo6JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKScg
JSBjb21tYW5kX2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJShkb21haW5O
YW1lKXNCYWNrZW5kRGlzcGF0Y2hlcjo6JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmKScgJSBjb21tYW5kX2FyZ3MpCiAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgSW5zcGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5k
RGlzcGF0Y2hlcjo6JShjb21tYW5kTmFtZSlzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmIG1lc3NhZ2UpJyAlIGNvbW1hbmRfYXJncykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZCgndm9pZCAlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVyOjolKGNvbW1hbmROYW1lKXMo
bG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSknICUgY29tbWFuZF9h
cmdzKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQogCiAgICAgICAgIGlmIGxlbihjb21tYW5k
LmNhbGxfcGFyYW1ldGVycykgPiAwOgpAQCAtMjcwLDcgKzI3MCw3IEBAIGNsYXNzIENwcEJhY2tl
bmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgRXJyb3JTdHJpbmcgZXJyb3I7JykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsnKQogICAgICAgICBpZiBjb21tYW5kLmlzX2FzeW5jOgotICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgUmVmPEluc3BlY3RvciUoZG9tYWluTmFtZSlzQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyOjolKGNhbGxiYWNrTmFtZSlzPiBjYWxsYmFjayA9IGFkb3B0UmVmKCpuZXcgSW5z
cGVjdG9yJShkb21haW5OYW1lKXNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiUoY2FsbGJhY2tO
YW1lKXMobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOycgJSBjb21tYW5k
X2FyZ3MpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBSZWY8JShkb21haW5OYW1lKXNC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OiUoY2FsbGJhY2tOYW1lKXM+IGNhbGxiYWNrID0gYWRv
cHRSZWYoKm5ldyAlKGRvbWFpbk5hbWUpc0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JShjYWxs
YmFja05hbWUpcyhtX2JhY2tlbmREaXNwYXRjaGVyLmNvcHlSZWYoKSwgY2FsbElkKSk7JyAlIGNv
bW1hbmRfYXJncykKICAgICAgICAgaWYgbGVuKGNvbW1hbmQucmV0dXJuX3BhcmFtZXRlcnMpID4g
MDoKICAgICAgICAgICAgIGxpbmVzLmV4dGVuZChvdXRfcGFyYW1ldGVyX2RlY2xhcmF0aW9ucykK
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgbV9hZ2VudC0+JShjb21tYW5kTmFtZSlzKCUoaW52
b2NhdGlvblBhcmFtZXRlcnMpcyk7JyAlIGNvbW1hbmRfYXJncykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3Bh
dGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggYmRiOGRiYzI3YzM4MTQ3MDVjYzBkMGZmMjQ0
Yjc5YWRiMzVjMmU1MS4uNzk4MTU3YTA2MDg5ZTUyMzI4NWMzZDRiZjFmYTBhZDcxMTE2ZWIzZSAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEwNSw3ICsx
MDUsNyBAQCBjbGFzcyBDcHBGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRv
cihHZW5lcmF0b3IpOgogICAgICAgICAgICAgJ2Zvcm1hbFBhcmFtZXRlcnMnOiAiLCAiLmpvaW4o
Zm9ybWFsX3BhcmFtZXRlcnMpCiAgICAgICAgIH0KIAotICAgICAgICBsaW5lcy5hcHBlbmQoJ3Zv
aWQgSW5zcGVjdG9yJShkb21haW5OYW1lKXNGcm9udGVuZERpc3BhdGNoZXI6OiUoZXZlbnROYW1l
KXMoJShmb3JtYWxQYXJhbWV0ZXJzKXMpJyAlIGV2ZW50X2FyZ3MpCisgICAgICAgIGxpbmVzLmFw
cGVuZCgndm9pZCAlKGRvbWFpbk5hbWUpc0Zyb250ZW5kRGlzcGF0Y2hlcjo6JShldmVudE5hbWUp
cyglKGZvcm1hbFBhcmFtZXRlcnMpcyknICUgZXZlbnRfYXJncykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCd7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
anNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOycpCiAgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2Qi
KSwgQVNDSUlMaXRlcmFsKCIlKGRvbWFpbk5hbWUpcy4lKGV2ZW50TmFtZSlzIikpOycgJSBldmVu
dF9hcmdzKQpAQCAtMTE2LDYgKzExNiw2IEBAIGNsYXNzIENwcEZyb250ZW5kRGlzcGF0Y2hlcklt
cGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdU
Rjo6bW92ZShwYXJhbXNPYmplY3QpKTsnKQogCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOycpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIG1fZnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRl
bmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsnKQogICAgICAgICBsaW5lcy5hcHBlbmQo
J30nKQogICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDZkNTIwMWYwNzI3Y2IzNGJiNjQ0Nzc2NGNj
ZjAyOGE5NGYzNmM1MDIuLmZiMmRlNGY2MWYzZmMwMWQ3YTQ2MDgwOGE5ODU1YzVhZGEyZjkwMDAg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTk4LDcg
Kzk4LDcgQEAgY2xhc3MgT2JqQ0Zyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBwZW5k
KHNlbGYuX2dlbmVyYXRlX2V2ZW50X3NpZ25hdHVyZShkb21haW4sIGV2ZW50KSkKICAgICAgICAg
bGluZXMuYXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFu
bmVsKCk7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7JykKICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpJykKICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgICAgIHJldHVybjsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJycpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggMTBk
M2Q3YTRiYTZlNzYyZDI1MTQxNTZmMTNlZjMwMWQ4MjZkNTYzMC4uYTAyZjI2ODE2MDljMzdmOGUz
YjA0ODhhOGZhYWJlZjhlNzc5YjYyYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNf
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtOTMsMTQgKzkzLDE0IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7IiIiKQogICAgICIiIiIiIikKIAogICAgIEJhY2tlbmREaXNwYXRjaGVySGVh
ZGVyRG9tYWluSGFuZGxlckludGVyZmFjZURlY2xhcmF0aW9uID0gKAotICAgICIiImNsYXNzIEFs
dGVybmF0ZUluc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBB
bHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CisgICAgIiIiY2xhc3MgQWx0ZXJu
YXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3Ik
e2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5h
dGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIoKSB7IH0KICR7Y29tbWFuZERlY2xhcmF0
aW9uc30KIH07IiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJIZWFkZXJEb21haW5IYW5kbGVy
T2JqQ0RlY2xhcmF0aW9uID0gKAotICAgICIiImNsYXNzIE9iakNJbnNwZWN0b3Ike2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yJHtk
b21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIHsKKyAgICAiIiJjbGFzcyBPYmpDSW5zcGVjdG9y
JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0ZSR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgT2JqQ0luc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihpZDwke29iamNQcmVmaXh9JHtkb21haW5O
YW1lfURvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICR7
Y29tbWFuZERlY2xhcmF0aW9uc30KQEAgLTEzNyw3ICsxMzcsNyBAQCAke2ludm9jYXRpb259CiAg
ICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCiAg
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUluc3Bl
Y3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiJHtkb21h
aW5OYW1lfSIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0
ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJh
Y2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCIke2RvbWFpbk5hbWV9IiksIFdURjo6bW92
ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGOjptb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJp
YnV0ZS5qc29uLXJlc3VsdAppbmRleCBjZmY5ODllMTYxODhhYTQ0MDczYjliNWI5YTNmYjM2NGQ2
NWIzNGVmLi4wYzZjN2ZkYWJiMmJlYjc3ZTZmZDE2NGIyM2VjNGVhOWQyMDU3MmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0zOSwxOCArMzksMTggQEAKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoK
LSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUo
ZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYg
ZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIp
OyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVm
UHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCi1jbGFz
cyBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFs
dGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZURhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIg
ewogcHVibGljOgotICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcm
IGluX3F1ZXJ5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5n
JiBpbl9xdWVyeSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNh
bGxJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpID0gMDsKQEAg
LTE0OCwxMCArMTQ4LDEwIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7Citj
bGFzcyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciB7CiBwdWJsaWM6CiAgICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1ldGVyICdz
Y3JlZW5Db2xvcicgd2hpbGUgZ2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXMuCiAgICAgZW51bSBjbGFzcyBTY3JlZW5Db2xvciB7CkBAIC0x
NjYsNDEgKzE2Niw0MSBAQCBwdWJsaWM6CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJs
YWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhFcnJvclN0cmluZyYsIGludCBp
bl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRf
dmFsdWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0
b3JWYWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PGludD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29s
b3JzLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xv
ciogb3B0X291dF9wcmludENvbG9yKSA9IDA7Ci0gICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgeworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
U1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0X291dF92YWx1ZXMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiog
b3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0
X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVy
cm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlBy
aW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29s
b3IpID0gMDsKKyAgICBjbGFzcyBFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0Nh
bGxiYWNrIDogcHVibGljIEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFj
ayhSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiwgaW50IGlkKTsK
KyAgICAgICAgRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8
QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7CiAgICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3Mo
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiYgY29sdW1uTmFtZXMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBub3RlcywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogdmFsdWVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIHBh
eWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBkYXRhYmFzZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogc2NyZWVuQ29sb3IsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYmIGFsdGVybmF0ZUNv
bG9ycywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIHByaW50Q29sb3Ip
OwogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzKEVycm9yU3RyaW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5f
cXVlcnksIFJlZjxFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiYm
IGNhbGxiYWNrKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxTeW5jKEVycm9yU3Ry
aW5nJiwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnksIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJp
bmcqIG91dF9ub3RlcywgZG91YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCogb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxv
YWQsIGludCogb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+JiBvdXRfc3FsRXJyb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6Q29sb3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENv
bG9yKSA9IDA7Ci0gICAgY2xhc3MgRXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsKKyAgICB2
aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmMoRXJyb3JTdHJpbmcmLCBpbnQgaW5fZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUq
IG91dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJ
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxF
cnJvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBv
dXRfYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICBjbGFzcyBFeGVjdXRlU1FM
QXN5bmNDYWxsYmFjayA6IHB1YmxpYyBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrKFJlZjxJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmLCBpbnQgaWQpOworICAgICAgICBFeGVj
dXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+JiYsIGludCBpZCk7CiAg
ICAgICAgIHZvaWQgc2VuZFN1Y2Nlc3MoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PFN0cmluZz4+JiYgY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1l
c3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0IHZhbHVlcywgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZSBwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgY29uc3QgU3RyaW5nJiBzY3JlZW5D
b2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYg
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIHByaW50Q29sb3IpOwogICAgIH07CiAgICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGVTUUxBc3luYyhFcnJvclN0cmluZyYsIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5LCBSZWY8RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s+
JiYgY2FsbGJhY2spID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfkRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVh
dGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8RGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKTsKLSAgICB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7
Ci0gICAgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOwotICAgIHZvaWQgZXhlY3V0ZVNRTEFzeW5jKGxvbmcg
Y2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAg
dm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgZXhlY3V0ZVNRTEFzeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVz
c2FnZSk7CisgICAgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVTUUxBc3luYyhsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyJiwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsK
LSAgICBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsK
KyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyJiwgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVybmF0ZURpc3BhdGNoZXIoQWx0ZXJu
YXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogYWx0ZXJuYXRlRGlzcGF0Y2hl
cikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5hdGVEaXNwYXRjaGVyOyB9CisgICAg
dm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0
ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURpc3BhdGNoZXI7CisgICAgQWx0ZXJu
YXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRjaGVyOwogI2Vu
ZGlmCiB9OwogCkBAIC0yNTMsMTUgKzI1MywxNSBAQCBwcml2YXRlOgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5J
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQorRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cigpIHsgfQogCi1SZWY8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIGFnZW50KQorUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
KCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0K
IAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3Bh
dGNoZXIsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkK
LSAgICA6IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNw
YXRjaGVyKQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNw
YXRjaGVyKGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFC
TEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlz
cGF0Y2hlcihudWxscHRyKQpAQCAtMjcwLDkgKzI3MCw5IEBAIEluc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWlu
KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1l
dGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7CiAKICAgICBpZiAobWV0aG9k
ID09ICJleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzIikKICAgICAgICAgZXhlY3V0
ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhjYWxsSWQsIG1lc3NhZ2UpOwpAQCAtMjgzLDE5
ICsyODMsMTkgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKICAgICBlbHNlIGlmIChtZXRob2Qg
PT0gImV4ZWN1dGVTUUxBc3luYyIpCiAgICAgICAgIGV4ZWN1dGVTUUxBc3luYyhjYWxsSWQsIG1l
c3NhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJv
dG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90
Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIkRhdGFiYXNlIiwgJy4nLCBtZXRob2QsICInIHdhcyBu
b3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3Ry
aW5nKCdcJycsICJEYXRhYmFzZSIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwog
fQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxT
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVj
dCYgbWVzc2FnZSkKK3ZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKQogewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBwYXJhbXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJw
YXJhbXMiKSwgcGFyYW1zQ29udGFpbmVyKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKLSAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0
ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAg
U3RyaW5nIGluX3F1ZXJ5ID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBt
ZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmNP
cHRpb25hbFJldHVyblZhbHVlcyIpOwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZh
bGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJh
Y2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShw
cm90b2NvbEVycm9ycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTcsNyArMzE3
LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FM
U3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiBvdXRfc3FsRXJyb3I7CiAgICAgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBvdXRfYWx0ZXJuYXRl
Q29sb3JzOwotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQ
cmludENvbG9yIG91dF9wcmludENvbG9yOworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVT
UUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoZXJyb3IsIGluX2RhdGFiYXNlSWQsIGluX3F1ZXJ5
LCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVz
LCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVl
bkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYg
KCFlcnJvci5sZW5ndGgoKSkgewpAQCAtMzQ1LDkgKzM0NSw5IEBAIHZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
cyhsb25nCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RG
Ojptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0KIAotSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJh
Y2s6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2soUmVmPEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5z
cGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92
ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlkKSB7IH0KK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpFeGVj
dXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0
Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQogCi12b2lk
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG5vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8ZG91YmxlPiogdGltZXN0YW1wLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiB2YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogcGF5bG9hZCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiYgc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiYgYWx0ZXJuYXRlQ29sb3JzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+
KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKQogewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+
IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBpZiAoY29sdW1u
TmFtZXMpCkBAIC0zNzMsMTYgKzM3MywxNiBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbAogICAg
IHNlbmRJZkFjdGl2ZShXVEY6Om1vdmUoanNvbk1lc3NhZ2UpLCBFcnJvclN0cmluZygpKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JiBtZXNzYWdlKQogewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBwYXJhbXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJw
YXJhbXMiKSwgcGFyYW1zQ29udGFpbmVyKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKLSAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0
ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAg
U3RyaW5nIGluX3F1ZXJ5ID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBt
ZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXMiKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVw
b3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW52
YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJvcnMpKTsKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBC
YWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUo
cHJvdG9jb2xFcnJvcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzk1LDI2ICsz
OTUsMjYgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb24KIAogICAgIEVycm9yU3RyaW5nIGVycm9y
OwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7Ci0gICAgUmVmPEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrPiBjYWxsYmFjayA9
IGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2sobV9iYWNrZW5kRGlz
cGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOworICAgIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFj
az4gY2FsbGJhY2sgPSBhZG9wdFJlZigqbmV3IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc0NhbGxiYWNrKG1fYmFja2Vu
ZERpc3BhdGNoZXIuY29weVJlZigpLCBjYWxsSWQpKTsKICAgICBtX2FnZW50LT5leGVjdXRlU1FM
QXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnks
IGNhbGxiYWNrLmNvcHlSZWYoKSk7CiAKICAgICBpZiAoZXJyb3IubGVuZ3RoKCkpIHsKICAgICAg
ICAgY2FsbGJhY2stPmRpc2FibGUoKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVw
b3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJyb3IpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJF
cnJvciwgZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQogCi12b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
IG1lc3NhZ2UpCiB7CiAgICAgYXV0byBwcm90b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IHBhcmFtc0NvbnRhaW5lcjsKICAgICBtZXNzYWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBh
cmFtcyIpLCBwYXJhbXNDb250YWluZXIpOwotICAgIGludCBpbl9kYXRhYmFzZUlkID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OwotICAgIFN0cmluZyBpbl9xdWVyeSA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRT
dHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInF1ZXJ5IiksIG51bGxw
dHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tl
bmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBT
dHJpbmcgaW5fcXVlcnkgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRh
aW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxscHRyLCBwcm90b2NvbEVycm9y
cy5nZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBT
dHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1l
dGhvZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlU1FMU3luYyIp
OwotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxs
SWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBlcnJvck1lc3Nh
Z2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpJbnZh
bGlkUGFyYW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgY29u
c3QgSW5zcGUKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
PiBvdXRfc3FsRXJyb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNl
OjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7CiAgICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNvbG9yOwotICAgIEluc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91dF9wcmludENv
bG9yOworICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yIG91
dF9wcmludENvbG9yOwogICAgIG1fYWdlbnQtPmV4ZWN1dGVTUUxTeW5jKGVycm9yLCBpbl9kYXRh
YmFzZUlkLCBpbl9xdWVyeSwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVz
dGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxF
cnJvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgJm91dF9zY3JlZW5Db2xvciwgJm91dF9wcmludENv
bG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKQEAgLTQ1NCw5ICs0NTQsOSBAQCB2
b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZQogICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNw
b25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7CiB9CiAKLUluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjazo6
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2soUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYm
IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURjo6bW92ZShiYWNrZW5kRGlzcGF0Y2hlciksIGlk
KSB7IH0KK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FMQXN5bmND
YWxsYmFjazo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2soUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYm
IGJhY2tlbmREaXNwYXRjaGVyLCBpbnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZShXVEY6Om1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKLXZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxi
YWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwg
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywg
Y29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIHBheWxvYWQsIGludCBk
YXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYm
IHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0
cmluZyYgcHJpbnRDb2xvcikKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2Fn
ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldEFycmF5
KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgY29sdW1uTmFtZXMpOwpAQCAtNDcyLDE2ICs0
NzIsMTYgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6
RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OnNlbmRTdWMKICAgICBzZW5kSWZBY3RpdmUoV1RGOjpt
b3ZlKGpzb25NZXNzYWdlKSwgRXJyb3JTdHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBt
ZXNzYWdlKQogewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBw
YXJhbXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJh
bXMiKSwgcGFyYW1zQ29udGFpbmVyKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVND
SUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
LSAgICBTdHJpbmcgaW5fcXVlcnkgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3Ry
aW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJxdWVyeSIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFiYXNlSWQgPSBCYWNrZW5k
RGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3Ry
aW5nIGluX3F1ZXJ5ID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWlu
ZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicXVlcnkiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMu
Z2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRo
b2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZVNRTEFzeW5jIik7
Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJ
ZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2Fn
ZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNo
ZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6OkludmFs
aWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ5NCwxMiArNDk0LDEyIEBAIHZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgY2FsbElkLCBj
b25zdCBJbnNwCiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIFJlZjxJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJh
Y2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2sobV9iYWNrZW5kRGlzcGF0Y2hl
ci5jb3B5UmVmKCksIGNhbGxJZCkpOworICAgIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoKm5l
dyBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJh
Y2sobV9iYWNrZW5kRGlzcGF0Y2hlci5jb3B5UmVmKCksIGNhbGxJZCkpOwogICAgIG1fYWdlbnQt
PmV4ZWN1dGVTUUxBc3luYyhlcnJvciwgaW5fZGF0YWJhc2VJZCwgaW5fcXVlcnksIGNhbGxiYWNr
LmNvcHlSZWYoKSk7CiAKICAgICBpZiAoZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgY2FsbGJh
Y2stPmRpc2FibGUoKTsKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9j
b2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpT
ZXJ2ZXJFcnJvciwgZXJyb3IpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQ
cm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgZXJy
b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtNjg0LDE0ICs2ODQsMTQgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBw
cml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVz
dWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAg
ICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxT
VEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwv
KkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAgIEJ1
aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTcxNiw5ICs3MTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxF
cnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNU
QVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAg
ICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZyZXN1bHQpKTsKICAgICAgICAg
fQogICAgIH07CkBAIC03MzIsNyArNzMyLDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRp
YyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1
aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7
CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC04NDgsNyArODQ4LDcgQEAgU3RyaW5nIGdldEVudW1D
b25zdGFudFZhbHVlKGludCBjb2RlKSB7CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCi1jbGFz
cyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBB
bHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIE9iakNJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0
ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKGlkPFJXSVByb3RvY29sRGF0YWJhc2VEb21haW5IYW5k
bGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9CiAgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyBjYWxsSWQsIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSBvdmVycmlkZTsKQEAgLTkzNyw3ICs5
MzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIF9kYXRhYmFzZUhhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJh
bCgiRGF0YWJhc2UiKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRv
IGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92
ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9u
YWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA5MDU4NzEwOThlNDc1
YTM5Y2E2ZjkwNmQ1NTU2MGY4MDk5NGQ3MTE0Li5jYTdlMWE3YTkyMDUwNTU5ZDlkMzA2NmJjYjIx
OGE0MTBlZDY5M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAg
IHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNw
YXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2
b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNw
YXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0K
KyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFs
dGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJu
YXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBw
dWJsaWM6Ci0gICAgdmlydHVhbCB+QWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcigpIHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXIoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
cyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYg
aW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5f
dGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5f
dmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25z
dCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3Rl
cywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYmIGluX3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2Fk
LCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNv
bnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgPSAwOwogfTsKQEAgLTE0MywxMCArMTQzLDEwIEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLWNsYXNzIEFsdGVybmF0
ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5hdGVEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CitjbGFzcyBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiBw
dWJsaWM6CiAgICAgLy8gTmFtZWQgYWZ0ZXIgcGFyYW1ldGVyICdzY3JlZW5Db2xvcicgd2hpbGUg
Z2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMuCiAg
ICAgZW51bSBjbGFzcyBTY3JlZW5Db2xvciB7CkBAIC0xNjEsMjcgKzE2MSwyNyBAQCBwdWJsaWM6
CiAgICAgICAgIFllbGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVt
IGNsYXNzIFByaW50Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3Vi
bGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYmIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9h
ZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3Is
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNv
bG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFs
dWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZT4qIG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGlu
dD4qIG9wdF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpFcnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3Jz
LCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciog
b3B0X291dF9wcmludENvbG9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3Vi
bGUgaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBp
bl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYg
aW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3Ry
aW5nJiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3Rp
bWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNv
bG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91
dF9hbHRlcm5hdGVDb2xvcnMsIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyog
aW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3Ry
aW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgb3B0X291dF9jb2x1bW5O
YW1lcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PFN0cmluZz4qIG9wdF9vdXRfbm90
ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+KiBvcHRfb3V0X3RpbWVz
dGFtcCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0Piogb3B0X291dF92YWx1ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiogb3B0X291dF9wYXlsb2FkLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8aW50Piogb3B0X291dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3B0X291dF9zcWxFcnJvciwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG9wdF9vdXRfc2NyZWVuQ29s
b3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiYgb3B0
X291dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQ
cmludENvbG9yKiBvcHRfb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5f
bm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5
bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3Jz
LCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiYgb3V0X2NvbHVtbk5hbWVzLCBTdHJpbmcqIG91dF9ub3RlcywgZG91
YmxlKiBvdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0X3ZhbHVl
cywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3V0X3BheWxvYWQsIGludCogb3V0X2RhdGFi
YXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvdXRf
c3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBv
dXRfc2NyZWVuQ29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29s
b3JMaXN0PiYgb3V0X2FsdGVybmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlByaW50Q29sb3IqIG91dF9wcmludENvbG9yKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCB+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAg
ICB2aXJ0dWFsIH5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwogfTsKIAotY2xh
c3MgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3I6Okluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFsQmFja2Vu
ZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRob2Qs
IFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAg
ICBzdGF0aWMgUmVmPERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlz
cGF0Y2hlciosIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPElu
c3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAgdm9pZCBl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7Ci0gICAgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBt
ZXNzYWdlKTsKKyAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxs
SWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBleGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVz
c2FnZSk7CiBwcml2YXRlOgotICAgIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlciYsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7
CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBz
ZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0g
YWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihB
bHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7
IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6
Ci0gICAgQWx0ZXJuYXRlSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRl
cm5hdGVEaXNwYXRjaGVyOworICAgIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIq
IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjM0LDE1ICsyMzQsMTUg
QEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIoKSB7IH0KK0RhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KIAotUmVmPEluc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI+IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIElu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPiBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcigqYmFj
a2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6Okluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK0RhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tl
bmREaXNwYXRjaGVyLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisg
ICAgOiBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAg
ICAsIG1fYWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCiAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTI1MSw0NiAr
MjUxLDQ2IEBAIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwg
dGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlz
cGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiYmIG1lc3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4m
JiBtZXNzYWdlKQogewotICAgIFJlZjxJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gcHJv
dGVjdCgqdGhpcyk7CiAKICAgICBpZiAobWV0aG9kID09ICJleGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzIikKICAgICAgICAgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIG1l
c3NhZ2UpOwogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzIikKICAgICAgICAgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGNhbGxJZCwgbWVzc2Fn
ZSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3Vu
ZCwgbWFrZVN0cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBm
b3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmco
J1wnJywgIkRhdGFiYXNlIiwgJy4nLCBtZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlv
bmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdl
KQordm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAg
ICAgYXV0byBwcm90b2NvbEVycm9ycyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc0NvbnRhaW5l
cjsKICAgICBtZXNzYWdlLmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbXND
b250YWluZXIpOwogICAgIGJvb2wgY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9jb2x1bW5OYW1lcyA9IEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJheShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFT
Q0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgJmNvbHVtbk5hbWVzX3ZhbHVlRm91bmQsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4g
aW5fY29sdW1uTmFtZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksICZjb2x1bW5OYW1lc192YWx1
ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBub3Rlc192YWx1ZUZvdW5k
ID0gZmFsc2U7Ci0gICAgU3RyaW5nIGluX25vdGVzID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgibm90ZXMi
KSwgJm5vdGVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcg
aW5fbm90ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5n
ZXQoKSwgQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAmbm90ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xF
cnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgdGltZXN0YW1wX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAg
ICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBpbl90aW1lc3RhbXAgPSBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgJnRpbWVzdGFtcF92YWx1ZUZvdW5kLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRv
dWJsZT4gaW5fdGltZXN0YW1wID0gQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShwYXJhbXND
b250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZ0aW1lc3RhbXBfdmFs
dWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGJvb2wgdmFsdWVzX3ZhbHVlRm91
bmQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3Zh
bHVlcyA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmdmFsdWVzX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IGluX3ZhbHVlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmdmFsdWVzX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHBheWxvYWRfdmFsdWVGb3VuZCA9IGZhbHNl
OwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBpbl9wYXlsb2FkID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwg
QVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICZwYXlsb2FkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJy
b3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5
bG9hZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAmcGF5bG9hZF92YWx1ZUZvdW5kLCBwcm90b2NvbEVy
cm9ycy5nZXQoKSk7CiAgICAgYm9vbCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAg
ICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRl
Z2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZk
YXRhYmFzZUlkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBpbnQgaW5f
ZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5l
ci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZkYXRhYmFzZUlkX3ZhbHVlRm91
bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHNxbEVycm9yX3ZhbHVlRm91bmQg
PSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVy
cm9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWlu
ZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGluX3NxbEVycm9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXND
b250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJnNxbEVycm9yX3ZhbHVl
Rm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBib29sIHNjcmVlbkNvbG9yX3ZhbHVl
Rm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJzY3JlZW5Db2xvciIpLCAmc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJv
cnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9zY3JlZW5Db2xvciA9IEJhY2tlbmREaXNwYXRjaGVy
OjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNv
bG9yIiksICZzY3JlZW5Db2xvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAg
ICAgYm9vbCBhbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxp
dGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCAmYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgJmFsdGVy
bmF0ZUNvbG9yc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CiAgICAgYm9vbCBw
cmludENvbG9yX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fcHJpbnRDb2xvciA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgJnByaW50Q29sb3JfdmFsdWVGb3VuZCwg
cHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIFN0cmluZyBpbl9wcmludENvbG9yID0gQmFja2Vu
ZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJh
bCgicHJpbnRDb2xvciIpLCAmcHJpbnRDb2xvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5n
ZXQoKSk7CiAgICAgaWYgKHByb3RvY29sRXJyb3JzLT5sZW5ndGgoKSkgewogICAgICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlNvbWUgYXJndW1lbnRzIG9mIG1ldGhv
ZCAnJXMnIGNhbid0IGJlIHByb2Nlc3NlZCIsICJEYXRhYmFzZS5leGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzIik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29s
RXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMs
IGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3Bh
dGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJy
b3JzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lk
IEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMobG9uZyBjYWxsSQogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0g
ICAgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Ig
b3V0X3ByaW50Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlBy
aW50Q29sb3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhlcnJvciwgY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA/IGluX2NvbHVtbk5hbWVz
LmNvcHlSZWYoKSA6IG51bGxwdHIsIG5vdGVzX3ZhbHVlRm91bmQgPyAmaW5fbm90ZXMgOiBudWxs
cHRyLCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA/ICZpbl90aW1lc3RhbXAgOiBudWxscHRyLCB2YWx1
ZXNfdmFsdWVGb3VuZCA/IGluX3ZhbHVlcy5jb3B5UmVmKCkgOiBudWxscHRyLCBwYXlsb2FkX3Zh
bHVlRm91bmQgPyBpbl9wYXlsb2FkLmNvcHlSZWYoKSA6IG51bGxwdHIsIGRhdGFiYXNlSWRfdmFs
dWVGb3VuZCA/ICZpbl9kYXRhYmFzZUlkIDogbnVsbHB0ciwgc3FsRXJyb3JfdmFsdWVGb3VuZCA/
IGluX3NxbEVycm9yLmNvcHlSZWYoKSA6IG51bGxwdHIsIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQg
PyAmaW5fc2NyZWVuQ29sb3IgOiBudWxscHRyLCBhbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA/
IGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCkgOiBudWxscHRyLCBwcmludENvbG9yX3ZhbHVl
Rm91bmQgPyAmaW5fcHJpbnRDb2xvciA6IG51bGxwdHIsIG91dF9jb2x1bW5OYW1lcywgJm91dF9u
b3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5bG9hZCwgJm91dF9kYXRh
YmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91dF9hbHRlcm5hdGVDb2xv
cnMsICZvdXRfcHJpbnRDb2xvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKSB7CkBAIC0z
NDAsMjQgKzM0MCwyNCBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSQogICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpCit2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKQog
ewogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNDb250
YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgcGFy
YW1zQ29udGFpbmVyKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5f
Y29sdW1uTmFtZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIG51bGxwdHIsIHBy
b3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBTdHJpbmcgaW5fbm90ZXMgPSBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJub3RlcyIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgZG91Ymxl
IGluX3RpbWVzdGFtcCA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUocGFy
YW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCBudWxscHRyLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBpbl92YWx1ZXMgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgbnVsbHB0ciwgcHJv
dG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
PiBpbl9wYXlsb2FkID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIG51bGxwdHIsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJkYXRhYmFzZUlkIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGluX3NxbEVycm9yID0gSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJ
TGl0ZXJhbCgic3FsRXJyb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAg
IFN0cmluZyBpbl9zY3JlZW5Db2xvciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpnZXRT
dHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiks
IG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRl
cm5hdGVDb2xvcnMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIFN0cmlu
ZyBpbl9wcmludENvbG9yID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhw
YXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBudWxscHRy
LCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXk+IGluX2NvbHVtbk5hbWVzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFt
c0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBudWxscHRyLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgU3RyaW5nIGluX25vdGVzID0gQmFja2VuZERpc3Bh
dGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgibm90
ZXMiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGRvdWJsZSBpbl90aW1l
c3RhbXAgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0RG91YmxlKHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0
KCkpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fdmFsdWVzID0g
QmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJ
TGl0ZXJhbCgidmFsdWVzIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaW5fcGF5bG9hZCA9IEJhY2tlbmREaXNw
YXRjaGVyOjpnZXRWYWx1ZShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicGF5
bG9hZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgaW50IGluX2RhdGFi
YXNlSWQgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0SW50ZWdlcihwYXJhbXNDb250YWluZXIuZ2V0
KCksIEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCBudWxscHRyLCBwcm90b2NvbEVycm9ycy5n
ZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBpbl9zcWxFcnJv
ciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoInNxbEVycm9yIiksIG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsK
KyAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5n
KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBudWxs
cHRyLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXk+IGluX2FsdGVybmF0ZUNvbG9ycyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRBcnJh
eShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiks
IG51bGxwdHIsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBTdHJpbmcgaW5fcHJpbnRDb2xv
ciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgbnVsbHB0ciwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsKICAgICAgICAgU3RyaW5nIGVy
cm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3VtZW50cyBvZiBtZXRob2QgJyVz
JyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzIik7Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3Io
JmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIGVycm9y
TWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7CisgICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6
OkludmFsaWRQYXJhbXMsIGVycm9yTWVzc2FnZSwgV1RGOjptb3ZlKHByb3RvY29sRXJyb3JzKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIEluc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
cyhsb25nIGNhbGxJZAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
RXJyb3I+IG91dF9zcWxFcnJvcjsKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6
UHJpbWFyeUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7Ci0gICAgSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3By
aW50Q29sb3I7CisgICAgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29s
b3Igb3V0X3ByaW50Q29sb3I7CiAgICAgbV9hZ2VudC0+ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzKGVycm9yLCBpbl9jb2x1bW5OYW1lcy5jb3B5UmVmKCksIGluX25vdGVzLCBpbl90aW1lc3Rh
bXAsIGluX3ZhbHVlcy5jb3B5UmVmKCksIGluX3BheWxvYWQuY29weVJlZigpLCBpbl9kYXRhYmFz
ZUlkLCBpbl9zcWxFcnJvci5jb3B5UmVmKCksIGluX3NjcmVlbkNvbG9yLCBpbl9hbHRlcm5hdGVD
b2xvcnMuY29weVJlZigpLCBpbl9wcmludENvbG9yLCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90
ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJh
c2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3Jz
LCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewpAQCAtNTc3
LDE0ICs1NzcsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFz
cyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBt
X3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNU
RVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBv
YmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4mJiBv
YmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVp
bGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTYwOSw5ICs2MDksOSBAQCBwdWJs
aWM6CiAgICAgICAgIFJlZjxFcnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFk
eSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNh
bm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZy
ZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC02MjUsNyArNjI1LDcgQEAgcHVibGljOgog
ICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC03NDEsNyArNzQxLDcg
QEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogCi1jbGFzcyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyIHsKK2NsYXNzIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIGZpbmFs
IDogcHVibGljIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgog
ICAgIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKGlkPFJXSVByb3RvY29s
RGF0YWJhc2VEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9
CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxs
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9k
YXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5f
c3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5n
KiBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKQEAgLTgyOCw3ICs4MjgsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBh
bHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgV1RG
Ojptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlM
aXRlcmFsKCJEYXRhYmFzZSIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAg
IF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5hdGVBZ2VudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0Cmlu
ZGV4IGFlZDAzYTFhZmE1NGI4MjNhZDg1YWE5OTBmZjU3NTdjN2VmY2M5YjguLmRiZjRjYjZhNzdk
NjcxNWI5YzMxNjFkYmJmNzY0NGJjNmJhNzk5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0zOSwyMyArMzksMjMgQEAKIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
IHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lk
IHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4m
JiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hl
cik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBz
ZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hl
cikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAg
QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tl
bmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCi1jbGFzcyBBbHRlcm5h
dGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUlu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGlj
OgotICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQpID0gMDsK
IH07Ci1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIDog
cHVibGljIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVy
bmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgfkFsdGVybmF0ZUluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXIoKSB7IH0KKyAgICB2aXJ0dWFsIH5BbHRlcm5hdGVOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEo
bG9uZyBjYWxsSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMihsb25nIGNh
bGxJZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UzKGxvbmcgY2FsbElkKSA9
IDA7CkBAIC0xNjEsMTggKzE2MSwxOCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlMpCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyOwotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjsK
K2NsYXNzIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBBbHRlcm5h
dGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTEoRXJyb3JTdHJpbmcm
KSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKTsKKyAgICB2aXJ0dWFsIH5OZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcigpOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIgeworY2xhc3MgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKEVycm9yU3RyaW5nJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UyKEVycm9yU3RyaW5nJikgPSAwOwpAQCAt
MTgyLDQ2ICsxODIsNDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U2
KEVycm9yU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U3KEVycm9y
U3RyaW5nJikgPSAwOwogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkluc3BlY3Rvck5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CisgICAgdmlydHVhbCB+TmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CiAKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50
YWxCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZp
bmFsIDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJ
bnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9u
ZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCBOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJ
ZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkg
b3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9h
ZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyJiwgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciogbV9hZ2VudDsKKyAgICBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKEJhY2tl
bmREaXNwYXRjaGVyJiwgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogbV9hZ2VudDsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKIHB1YmxpYzoKLSAgICB2b2lkIHNldEFsdGVy
bmF0ZURpc3BhdGNoZXIoQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
ciogYWx0ZXJuYXRlRGlzcGF0Y2hlcikgeyBtX2FsdGVybmF0ZURpc3BhdGNoZXIgPSBhbHRlcm5h
dGVEaXNwYXRjaGVyOyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGVEaXNwYXRjaGVyKEFsdGVybmF0
ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRl
cm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBB
bHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBtX2FsdGVybmF0ZURp
c3BhdGNoZXI7CisgICAgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRl
cm5hdGVEaXNwYXRjaGVyOwogI2VuZGlmCiB9OwogCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPiBjcmVh
dGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciosIEluc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
KGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHN0YXRpYyBSZWY8TmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyKiwgTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxs
SWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lk
IGxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNv
dXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNz
YWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAgICB2b2lkIGxvYWRSZXNvdXJjZTYobG9u
ZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKLSAg
ICB2b2lkIGxvYWRSZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2Uy
KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQg
bG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdl
KTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9i
amVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHZvaWQgbG9hZFJlc291cmNlNihsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGxvYWRS
ZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiBw
cml2YXRlOgotICAgIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIqIG1fYWdlbnQ7CisgICAgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5k
RGlzcGF0Y2hlciYsIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5h
dGVEaXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIq
IGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6Ci0gICAgQWx0
ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNw
YXRjaGVyOworICAgIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJu
YXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjc0LDE2ICsyNzQsMTYgQEAgcHJpdmF0
ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyOjp+SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRs
ZXIoKSB7IH0KLUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+SW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KK05ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIo
KSB7IH0KK05ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjp+TmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIoKSB7IH0KIAotUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXI+IEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rvck5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPiBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNo
ZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6Oklu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK05ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6Ok5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVy
LCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBTdXBwbGVt
ZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQo
YWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAg
LCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTI5MiwxNyArMjkyLDE3IEBAIElu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJE
aXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0ZXJhbCgiTmV0d29yazEiKSwgdGhpcyk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3Nh
Z2UpCit2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElk
LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQog
ewotICAgIFJlZjxJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgqdGhpcyk7
CiAKICAgICBpZiAobWV0aG9kID09ICJsb2FkUmVzb3VyY2UxIikKICAgICAgICAgbG9hZFJlc291
cmNlMShjYWxsSWQsIG1lc3NhZ2UpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmsxIiwgJy4nLCBt
ZXRob2QsICInIHdhcyBub3QgZm91bmQiKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgQmFja2VuZERpc3BhdGNoZXI6Ok1ldGhvZE5v
dEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMSIsICcuJywgbWV0aG9kLCAiJyB3YXMg
bm90IGZvdW5kIikpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2
b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5B
VEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtMzE4
LDEzICszMTgsMTMgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjps
b2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5zZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwog
fQogCi1SZWY8SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4gSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqIGFnZW50KQorUmVmPE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+IE5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIsIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKCpiYWNr
ZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyKCpiYWNrZW5kRGlzcGF0Y2hlciwgYWdlbnQpKTsKIH0KIAotSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIs
IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKLSAgICA6
IEluc3BlY3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyKGJhY2tlbmREaXNwYXRjaGVy
KQorTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihC
YWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3BhdGNoZXIsIE5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKiBhZ2VudCkKKyAgICA6IFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVy
KGJhY2tlbmREaXNwYXRjaGVyKQogICAgICwgbV9hZ2VudChhZ2VudCkKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICAsIG1fYWx0ZXJuYXRlRGlzcGF0Y2hl
cihudWxscHRyKQpAQCAtMzMzLDExICszMzMsMTEgQEAgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcjo6SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3IK
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZWdpc3RlckRpc3BhdGNoZXJGb3JEb21haW4oQVND
SUlMaXRlcmFsKCJOZXR3b3JrMyIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQgTmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCiB7Ci0gICAgUmVmPEluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXR3b3Jr
M0JhY2tlbmREaXNwYXRjaGVyPiBwcm90ZWN0KCp0aGlzKTsKIAotICAgIHR5cGVkZWYgdm9pZCAo
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6KkNhbGxIYW5kbGVyKShsb25nIGNh
bGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpOworICAgIHR5
cGVkZWYgdm9pZCAoTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6KkNhbGxIYW5kbGVyKShsb25n
IGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBDYWxsSGFuZGxlcj4gRGlzcGF0Y2hNYXA7CiAgICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKERpc3BhdGNoTWFwLCBkaXNwYXRjaE1hcCwgKCkpOwogICAgIGlm
IChkaXNwYXRjaE1hcC5pc0VtcHR5KCkpIHsKQEAgLTM0NSwxMyArMzQ1LDEzIEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyBjYWxsSWQsIGNv
bnN0IFN0cmluZyYgbWV0CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgICAgICAg
ICAgQ2FsbEhhbmRsZXIgaGFuZGxlcjsKICAgICAgICAgfSBjb21tYW5kc1tdID0gewotICAgICAg
ICAgICAgeyAibG9hZFJlc291cmNlMSIsICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyOjpsb2FkUmVzb3VyY2UxIH0sCi0gICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UyIiwgJklu
c3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTIgfSwKLSAgICAg
ICAgICAgIHsgImxvYWRSZXNvdXJjZTMiLCAmSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlMyB9LAotICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNCIsICZJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U0IH0sCi0gICAg
ICAgICAgICB7ICJsb2FkUmVzb3VyY2U1IiwgJkluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI6OmxvYWRSZXNvdXJjZTUgfSwKLSAgICAgICAgICAgIHsgImxvYWRSZXNvdXJjZTYiLCAm
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNiB9LAotICAg
ICAgICAgICAgeyAibG9hZFJlc291cmNlNyIsICZJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2U3IH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2UxIiwg
Jk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEgfSwKKyAgICAgICAgICAg
IHsgImxvYWRSZXNvdXJjZTIiLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291
cmNlMiB9LAorICAgICAgICAgICAgeyAibG9hZFJlc291cmNlMyIsICZOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzIH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3VyY2U0
IiwgJk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQgfSwKKyAgICAgICAg
ICAgIHsgImxvYWRSZXNvdXJjZTUiLCAmTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJl
c291cmNlNSB9LAorICAgICAgICAgICAgeyAibG9hZFJlc291cmNlNiIsICZOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U2IH0sCisgICAgICAgICAgICB7ICJsb2FkUmVzb3Vy
Y2U3IiwgJk5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcgfSwKICAgICAg
ICAgfTsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoY29tbWFuZHMp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQpAQCAtMzYwLDE0
ICszNjAsMTQgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpkaXNw
YXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXQKIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBDYWxsSGFuZGxlcj46Oml0ZXJhdG9yIGl0ID0gZGlzcGF0Y2hNYXAuZmluZChtZXRob2QpOwog
ICAgIGlmIChpdCA9PSBkaXNwYXRjaE1hcC5lbmQoKSkgewotICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazMiLCAnLics
IG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9k
Tm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmszIiwgJy4nLCBtZXRob2QsICInIHdh
cyBub3QgZm91bmQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAoKCp0aGlzKS4q
aXQtPnZhbHVlKShjYWxsSWQsIG1lc3NhZ2UuZ2V0KCkpOwogfQogCi12b2lkIEluc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRS
ZXNvdXJjZTEobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlcikgewpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMShsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3Zl
KHJlc3VsdCksIGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2UyKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
KQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UyKGxvbmcgY2Fs
bElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsKQEAg
LTM5OSw3ICszOTksNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OmxvYWRSZXNvdXJjZTIobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBlcnJvcik7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291
cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlMyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC00MTUsNyArNDE1LDcgQEAg
dm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UzKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVz
cG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12b2lkIEluc3Bl
Y3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OmxvYWRSZXNvdXJjZTQobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYgKG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNChsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RG
Ojptb3ZlKHJlc3VsdCksIGVycm9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JP
YmplY3QmKQordm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1KGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIp
IHsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI6OmxvYWRSZXNvdXJjZTUobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlYwogICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShjYWxsSWQsIFdURjo6bW92ZShyZXN1bHQpLCBl
cnJvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9h
ZFJlc291cmNlNihsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKK3ZvaWQgTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNihsb25nIGNhbGxJZCwgY29uc3Qg
SW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQ
QVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC00NjMsNyArNDYz
LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3Vy
Y2U2KGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWMKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5z
ZW5kUmVzcG9uc2UoY2FsbElkLCBXVEY6Om1vdmUocmVzdWx0KSwgZXJyb3IpOwogfQogCi12b2lk
IEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyBj
YWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYpCit2b2lkIE5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgaWYg
KG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewpAQCAtNzM2LDcgKzczNiw3IEBAIFN0cmluZyBnZXRF
bnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAot
Y2xhc3MgT2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJs
aWMgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBP
YmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRl
cm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBPYmpDSW5zcGVj
dG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihpZDxSV0lQcm90b2NvbE5ldHdvcmsxRG9tYWlu
SGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFuZGxlcjsgfQogICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkKSBvdmVycmlkZTsKQEAgLTc0Niw3ICs3NDYs
NyBAQCBwcml2YXRlOgogCiAKIAotY2xhc3MgT2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlciB7CitjbGFzcyBPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hl
ciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIHsKIHB1
YmxpYzoKICAgICBPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihpZDxSV0lQ
cm90b2NvbE5ldHdvcmszRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFu
ZGxlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgY2FsbElkKSBvdmVy
cmlkZTsKQEAgLTg0MCw3ICs4NDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAg
IF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCiAgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8SW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiTmV0d29yazEiKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRl
cm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5h
dGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJOZXR3b3JrMSIpLCBX
VEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRF
eHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC04NTgsNyArODU4
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBfbmV0d29yazNIYW5kbGVyID0g
W2hhbmRsZXIgcmV0YWluXTsKIAogICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PEluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIsIEFs
dGVybmF0ZUluc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwo
Ik5ldHdvcmszIiksIFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBh
bHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiTmV0d29yazMiKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUo
YWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CmluZGV4IDFmYWIyMzYzZjk3MGVhODY3YjIxN2JhMmE0
YWViMmQ4MDIwYzFlYzIuLjY2N2Q0MmFjNzE2OGYxNTc0NmEwNjNmYzBmZjUwOTc1NjgwOWRiMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQKQEAgLTM5LDE4ICszOSwxOCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xh
c3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNo
ZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVy
KFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdl
dCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4g
bV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiB9OwogCiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckNvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZp
cnR1YWwgfkFsdGVybmF0ZUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcigp
IHsgfQorICAgIHZpcnR1YWwgfkFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
cigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25n
IGNhbGxJZCkgPSAwOwogfTsKIApAQCAtMTQ5LDEwICsxNDksMTAgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQ29tbWFu
ZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyOwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogCi1jbGFzcyBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIHsKK2NsYXNzIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIg
ewogcHVibGljOgogICAgIC8vIE5hbWVkIGFmdGVyIHBhcmFtZXRlciAncmV0dXJuVmFsdWUnIHdo
aWxlIGdlbmVyYXRpbmcgY29tbWFuZC9ldmVudCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZS4K
ICAgICBlbnVtIGNsYXNzIFJldHVyblZhbHVlIHsKQEAgLTE2MSwyNSArMTYxLDI1IEBAIHB1Ymxp
YzoKICAgICAgICAgTWFnZW50YSA9IDcsCiAgICAgICAgIFllbGxvdyA9IDgsCiAgICAgfTsgLy8g
ZW51bSBjbGFzcyBSZXR1cm5WYWx1ZQotICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1S
ZXR1cm5WYWx1ZShFcnJvclN0cmluZyYsIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OlJldHVyblZhbHVlKiBvdXRfcmV0dXJuVmFsdWUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUoRXJyb3JTdHJpbmcmLCBDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5WYWx1ZSogb3V0X3JldHVy
blZhbHVlKSA9IDA7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+SW5zcGVjdG9yQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfkNvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIoKTsKIH07CiAKLWNsYXNzIEluc3BlY3RvckNvbW1h
bmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3Bl
Y3RvclN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKiwgSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRo
b2QsIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBvdmVycmlkZTsK
KyAgICBzdGF0aWMgUmVmPENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJh
Y2tlbmREaXNwYXRjaGVyKiwgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciop
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiBwcml2YXRl
OgotICAgIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBtZXNzYWdlKTsKKyAgICB2b2lkIGNvbW1hbmRX
aXRoRW51bVJldHVyblZhbHVlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1l
c3NhZ2UpOwogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXIoSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3RvckNv
bW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICBJbnNwZWN0b3JDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBtX2FnZW50OworICAgIENvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlciYsIENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKKyAgICBDb21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKiBtX2FnZW50OwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJ
U1BBVENIRVJTKQogcHVibGljOgotICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRl
cm5hdGVJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURp
c3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsg
fQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXIqIGFsdGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNw
YXRjaGVyID0gYWx0ZXJuYXRlRGlzcGF0Y2hlcjsgfQogcHJpdmF0ZToKLSAgICBBbHRlcm5hdGVJ
bnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlcjsKKyAgICBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0
ZXJuYXRlRGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKIApAQCAtMjMyLDE1ICsyMzIsMTUgQEAgcHJp
dmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLUluc3BlY3RvckNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6On5JbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyKCkgeyB9CitDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjp+Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpIHsgfQogCi1SZWY8
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPiBJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXIqIGFnZW50KQorUmVmPENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4g
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyLCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KiBhZ2VudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXIoKmJhY2tlbmREaXNwYXRjaGVyLCBhZ2VudCkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcigqYmFja2Vu
ZERpc3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgSW5zcGVjdG9yQ29tbWFu
ZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK0NvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKEJh
Y2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlciwgQ29tbWFuZERvbWFpbkJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0
Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1fYWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAgICAgLCBtX2FsdGVybmF0ZURpc3Bh
dGNoZXIobnVsbHB0cikKQEAgLTI0OSwxNyArMjQ5LDE3IEBAIEluc3BlY3RvckNvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRj
aGVyCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWlu
KEFTQ0lJTGl0ZXJhbCgiQ29tbWFuZERvbWFpbiIpLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQordm9p
ZCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgY2FsbElkLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKQogewot
ICAgIFJlZjxJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IHByb3RlY3Qo
KnRoaXMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAiY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUi
KQogICAgICAgICBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShjYWxsSWQsIG1lc3NhZ2UpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cigmY2FsbElkLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1h
a2VTdHJpbmcoJ1wnJywgIkNvbW1hbmREb21haW4iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBm
b3VuZCIpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cigmY2FsbElkLCBCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9kTm90Rm91bmQsIG1ha2VTdHJpbmco
J1wnJywgIkNvbW1hbmREb21haW4iLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNvbW1h
bmRXaXRoRW51bVJldHVyblZhbHVlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3Qm
KQordm9pZCBDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmRXaXRoRW51bVJl
dHVyblZhbHVlKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0
ZURpc3BhdGNoZXIpIHsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIEluc3BlY3RvckNvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uZyBj
YQogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVz
dWx0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBJbnNwZWN0b3JDb21tYW5kRG9t
YWluQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXR1cm5WYWx1ZSBvdXRfcmV0dXJuVmFsdWU7
CisgICAgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmV0dXJuVmFsdWUg
b3V0X3JldHVyblZhbHVlOwogICAgIG1fYWdlbnQtPmNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVl
KGVycm9yLCAmb3V0X3JldHVyblZhbHVlKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpCkBA
IC0zMjYsOSArMzI2LDkgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogCi1jbGFzcyBJbnNw
ZWN0b3JFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBFdmVudERvbWFpbkZy
b250ZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yRXZlbnREb21haW5Gcm9u
dGVuZERpc3BhdGNoZXIoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBpbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwpIDogbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwoaW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKSB7IH0KKyAgICBFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlcihGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkgOiBtX2Zyb250ZW5kQ2hhbm5lbChmcm9udGVuZENoYW5u
ZWwpIHsgfQogICAgICAgICAvLyBOYW1lZCBhZnRlciBwYXJhbWV0ZXIgJ3BhcmFtZXRlcicgd2hp
bGUgZ2VuZXJhdGluZyBjb21tYW5kL2V2ZW50IGV2ZW50V2l0aEVudW1QYXJhbWV0ZXIuCiAgICAg
ICAgIGVudW0gY2xhc3MgUGFyYW1ldGVyIHsKICAgICAgICAgICAgIFNoYXJlZCA9IDAsCkBAIC0z
MzcsNyArMzM3LDcgQEAgcHVibGljOgogICAgICAgICB9OyAvLyBlbnVtIGNsYXNzIFBhcmFtZXRl
cgogICAgIHZvaWQgZXZlbnRXaXRoRW51bVBhcmFtZXRlcihQYXJhbWV0ZXIgcGFyYW1ldGVyKTsK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVsOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0zODMsNyArMzgzLDcgQEAgcHJpdmF0ZToK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgSW5zcGVjdG9yRXZlbnREb21haW5Gcm9u
dGVuZERpc3BhdGNoZXI6OmV2ZW50V2l0aEVudW1QYXJhbWV0ZXIoUGFyYW1ldGVyIHBhcmFtZXRl
cikKK3ZvaWQgRXZlbnREb21haW5Gcm9udGVuZERpc3BhdGNoZXI6OmV2ZW50V2l0aEVudW1QYXJh
bWV0ZXIoUGFyYW1ldGVyIHBhcmFtZXRlcikKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBq
c29uTWVzc2FnZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2Ut
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkV2ZW50RG9t
YWluLmV2ZW50V2l0aEVudW1QYXJhbWV0ZXIiKSk7CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlcjo6ZXZlbnRXaXRoRW51bVBhcmFt
ZXRlcihQYXJhbWV0ZXIgcGEKICAgICBwYXJhbXNPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVy
YWwoInBhcmFtZXRlciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1
ZShwYXJhbWV0ZXIpKTsKICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
cGFyYW1zIiksIFdURjo6bW92ZShwYXJhbXNPYmplY3QpKTsKIAotICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGpz
b25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpAQCAtNTgxLDcgKzU4MSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIAotY2xhc3Mg
T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1Ymxp
YyBBbHRlcm5hdGVJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgeworY2xh
c3MgT2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1
YmxpYyBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgog
ICAgIE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoaWQ8UldJUHJv
dG9jb2xDb21tYW5kRG9tYWluRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0g
aGFuZGxlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShs
b25nIGNhbGxJZCkgb3ZlcnJpZGU7CkBAIC02NzEsNyArNjcxLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBfY29tbWFuZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudDxJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0
ZUluc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgi
Q29tbWFuZERvbWFpbiIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1
dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJs
ZUFnZW50PENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERv
bWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJDb21tYW5kRG9tYWluIiksIFdU
Rjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4
dHJhQWdlbnQoV1RGOjptb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTk4OCw3ICs5ODgs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKWV2ZW50V2l0aEVudW1Q
YXJhbWV0ZXJXaXRoUGFyYW1ldGVyOihSV0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51
bVBhcmFtZXRlclBhcmFtZXRlcilwYXJhbWV0ZXIKIHsKLSAgICBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9udGVuZENoYW5uZWwoKTsK
KyAgICBGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IF9jb250cm9sbGVyLT5mcm9u
dGVuZENoYW5uZWwoKTsKICAgICBpZiAoIWZyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGNiMTAz
MzRiOWM4MjE1ZDdkN2Q4NWIyYWZiNGQ0Zjg1ODI0YjMxNzkuLmFlZjc5Mjk4MDIyNzJhNDM0ZGEx
MjM5OWU2OTA2YWVmZDBkODI4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
LWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVy
bmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNw
YXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0
Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hl
ci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCkBAIC0yMzcsMTMgKzIzNywxMyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogCiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlRnJvbnRlbmREaXNw
YXRjaGVyIHsKK2NsYXNzIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAg
ICBJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIGluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbChpbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQorICAgIERhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyKEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRD
aGFubmVsKGZyb250ZW5kQ2hhbm5lbCkgeyB9CiAgICAgdm9pZCBkaWRFeGVjdXRlT3B0aW9uYWxQ
YXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiBjb2x1
bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3RlcywgY29uc3QgZG91YmxlKiBjb25zdCB0
aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25zdCBzY3JlZW5Db2xvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9y
cywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKTsKICAgICB2b2lkIGRpZEV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3Ry
aW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAs
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9hZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3IsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5n
JiBwcmludENvbG9yKTsKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBt
X2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKKyAgICBGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRl
bmRDaGFubmVsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0yODksNyArMjg5
LDcgQEAgcHJpdmF0ZToKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLXZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMo
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG5vdGVzLCBjb25zdCBkb3VibGUqIGNvbnN0IHRpbWVzdGFtcCwg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZXMsIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlPiBwYXlsb2FkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkVycm9yPiBzcWxFcnJvciwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnMqIGNvbnN0IHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4gYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBT
dHJpbmcqIGNvbnN0IHByaW50Q29sb3IpCit2b2lkIERhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVy
OjpkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxTdHJpbmc+PiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBjb25zdCBub3Rlcywg
Y29uc3QgZG91YmxlKiBjb25zdCB0aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9h
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3Is
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKiBjb25z
dCBzY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xv
ckxpc3Q+IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBjb25zdCBwcmludENvbG9yKQog
ewogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0
OjpjcmVhdGUoKTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0
aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVy
cyIpKTsKQEAgLTMxNCwxMCArMzE0LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVu
ZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluCiAgICAg
ICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAq
cHJpbnRDb2xvcik7CiAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBh
cmFtcyIpLCBXVEY6Om1vdmUocGFyYW1zT2JqZWN0KSk7CiAKLSAgICBtX2luc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGpzb25NZXNzYWdlLT50b0pTT05TdHJp
bmcoKSk7CisgICAgbV9mcm9udGVuZENoYW5uZWwtPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChqc29u
TWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFiYXNlRnJv
bnRlbmREaXNwYXRjaGVyOjpkaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzLCBjb25zdCBTdHJp
bmcmIG5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IHZhbHVlcywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHBheWxvYWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RXJyb3I+IHNxbEVycm9yLCBj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyYgc2NyZWVu
Q29sb3IsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0PiBh
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKK3ZvaWQgRGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4gY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyYgbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gdmFsdWVzLCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gcGF5bG9h
ZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gc3FsRXJyb3Is
IGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzJiBzY3Jl
ZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+
IGFsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBwcmludENvbG9yKQogewogICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IGpzb25NZXNzYWdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJ
TGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwpAQCAt
MzMzLDcgKzMzMyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6
OmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8CiAgICAgcGFyYW1zT2JqZWN0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIHByaW50Q29sb3IpOwogICAg
IGpzb25NZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgV1RGOjptb3Zl
KHBhcmFtc09iamVjdCkpOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwtPnNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgIG1fZnJv
bnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC00MjAsMTQgKzQyMCwx
NCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIg
ewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0Owog
CiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RT
dGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxC
dWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxk
ZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAg
ICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAg
ICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0
ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNDUyLDkgKzQ1Miw5IEBAIHB1YmxpYzoKICAgICAg
ICAgUmVmPEVycm9yPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAgQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3Qp
OwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9
IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8RXJyb3I+Kj4oJnJlc3VsdCkpOwog
ICAgICAgICB9CiAgICAgfTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAgICAgICovCiAg
ICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIH07CiAKQEAgLTg0OSw3ICs4NDksNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKWRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRl
cnNXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKiljb2x1bW5OYW1lcyBu
b3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3VibGUgKil0aW1lc3RhbXAgdmFs
dWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29s
SlNPTk9iamVjdCAqKilwYXlsb2FkIHNxbEVycm9yOihSV0lQcm90b2NvbERhdGFiYXNlRXJyb3Ig
Kiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5nICoqKXNjcmVlbkNvbG9yIGFsdGVybmF0
ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWFsdGVybmF0ZUNvbG9ycyBwcmludENv
bG9yOihOU1N0cmluZyAqKilwcmludENvbG9yCiB7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7Cisg
ICAgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+ZnJvbnRl
bmRDaGFubmVsKCk7CiAgICAgaWYgKCFmcm9udGVuZENoYW5uZWwpCiAgICAgICAgIHJldHVybjsK
IApAQCAtODg5LDcgKzg4OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKHZv
aWQpZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVtbk5hbWVzOihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1l
c3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2
YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBzcWxFcnJvcjoo
UldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KE5TU3RyaW5n
ICopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilh
bHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKilwcmludENvbG9yCiB7Ci0gICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBfY29udHJvbGxlci0+
ZnJvbnRlbmRDaGFubmVsKCk7CisgICAgRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwg
PSBfY29udHJvbGxlci0+ZnJvbnRlbmRDaGFubmVsKCk7CiAgICAgaWYgKCFmcm9udGVuZENoYW5u
ZWwpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1m
ZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQKaW5kZXggZDlhMmIxZWI4OWZjODhiMjE5NTQ3ZTJmMjY1Y2U2ZDg5
ZjU4ODIwNy4uZWQyY2I5YzMxNGZkYmFkMzAzZjhlOGViMjhkYmI2YzFjZDQ0Njc0MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC0zOSwx
OSArMzksMTkgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUlu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRj
aGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRj
aGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2Vu
ZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjpt
b3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0
ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwogfTsKIAogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotY2xhc3MgQWx0ZXJuYXRlSW5z
cGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyIDogcHVibGljIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5BbHRlcm5hdGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKCkg
eyB9CisgICAgdmlydHVhbCB+QWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcigpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UobG9uZyBjYWxsSWQpID0gMDsKIH07CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRTKQpAQCAtMTQ4LDM0ICsxNDgsMzQgQEAgdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKICNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1jbGFzcyBBbHRlcm5h
dGVJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgQWx0ZXJuYXRlTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcjsKICNlbmRpZiAvLyBQTEFURk9STShXRUJfQ09NTUFORFMp
CiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKICNp
ZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1jbGFzcyBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZShFcnJvclN0cmluZyYp
ID0gMDsKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcigpOworICAgIHZpcnR1YWwgfk5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyKCk7CiB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKFdFQl9DT01NQU5EUykKIAogI2lm
IFBMQVRGT1JNKFdFQl9DT01NQU5EUykKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZpbmFs
IDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShJbnNw
ZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiwgSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyBj
YWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgc3RhdGljIFJlZjxOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXIqLCBOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3Zl
cnJpZGU7CiBwcml2YXRlOgotICAgIHZvaWQgbG9hZFJlc291cmNlKGxvbmcgY2FsbElkLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CisgICAgdm9pZCBsb2FkUmVz
b3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSk7CiBwcml2
YXRlOgotICAgIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciYsIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyKik7Ci0gICAgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIqIG1fYWdlbnQ7CisgICAgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlciYsIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKik7CisgICAgTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqIG1fYWdlbnQ7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRBbHRlcm5hdGVE
aXNwYXRjaGVyKEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIGFs
dGVybmF0ZURpc3BhdGNoZXIpIHsgbV9hbHRlcm5hdGVEaXNwYXRjaGVyID0gYWx0ZXJuYXRlRGlz
cGF0Y2hlcjsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRlRGlzcGF0Y2hlcihBbHRlcm5hdGVOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyKiBhbHRlcm5hdGVEaXNwYXRjaGVyKSB7IG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IGFsdGVybmF0ZURpc3BhdGNoZXI7IH0KIHByaXZhdGU6Ci0gICAgQWx0ZXJu
YXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciogbV9hbHRlcm5hdGVEaXNwYXRj
aGVyOworICAgIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIqIG1fYWx0ZXJuYXRl
RGlzcGF0Y2hlcjsKICNlbmRpZgogfTsKICNlbmRpZiAvLyBQTEFURk9STShXRUJfQ09NTUFORFMp
CkBAIC0yMzAsMTcgKzIzMCwxNyBAQCBwcml2YXRlOgogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
ICNpZiBQTEFURk9STShXRUJfQ09NTUFORFMpCi1JbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlcjo6fkluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
KCkgeyB9CitOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6fk5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyKCkgeyB9CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRT
KQogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQotUmVmPEluc3BlY3Rvck5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXI+IEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIsIEluc3BlY3Rv
ck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBhZ2VudCkKK1JlZjxOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyPiBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciogYWdlbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERpc3BhdGNoZXIsIGFnZW50KSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcigqYmFja2VuZERp
c3BhdGNoZXIsIGFnZW50KSk7CiB9CiAKLUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI6Okluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyLCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVySGFuZGxlciogYWdlbnQpCi0gICAgOiBJbnNwZWN0b3JTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKK05ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6
Ok5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNw
YXRjaGVyLCBOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciogYWdlbnQpCisgICAgOiBT
dXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlcihiYWNrZW5kRGlzcGF0Y2hlcikKICAgICAsIG1f
YWdlbnQoYWdlbnQpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMp
CiAgICAgLCBtX2FsdGVybmF0ZURpc3BhdGNoZXIobnVsbHB0cikKQEAgLTI0OSwxNyArMjQ5LDE3
IEBAIEluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rvck5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yCiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVn
aXN0ZXJEaXNwYXRjaGVyRm9yRG9tYWluKEFTQ0lJTGl0ZXJhbCgiTmV0d29yazEiKSwgdGhpcyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
bG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYm
IG1lc3NhZ2UpCit2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcg
Y2FsbElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUmVmPEluc3BlY3Rvck9iamVjdD4mJiBtZXNz
YWdlKQogewotICAgIFJlZjxJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4gcHJvdGVjdCgq
dGhpcyk7CiAKICAgICBpZiAobWV0aG9kID09ICJsb2FkUmVzb3VyY2UiKQogICAgICAgICBsb2Fk
UmVzb3VyY2UoY2FsbElkLCBtZXNzYWdlKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoJmNhbGxJZCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6Ok1ldGhvZE5vdEZvdW5kLCBtYWtlU3RyaW5nKCdcJycsICJOZXR3b3JrMSIsICcu
JywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpNZXRo
b2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAnLicsIG1ldGhvZCwgIicg
d2FzIG5vdCBmb3VuZCIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2UobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYp
Cit2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZShsb25nIGNhbGxJ
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5hdGVEaXNwYXRjaGVyKSB7CkBAIC0z
MjQsMTIgKzMyNCwxMiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiAjaWYgUExBVEZPUk0o
V0VCX0VWRU5UUykKLWNsYXNzIEluc3BlY3Rvck5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyIHsK
K2NsYXNzIE5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBJbnNwZWN0
b3JOZXR3b3JrM0Zyb250ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGlu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCkgOiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChpbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwpIHsgfQorICAgIE5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVy
KEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKSA6IG1fZnJvbnRlbmRDaGFubmVsKGZy
b250ZW5kQ2hhbm5lbCkgeyB9CiAgICAgdm9pZCByZXNvdXJjZUxvYWRlZCgpOwogcHJpdmF0ZToK
LSAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
OworICAgIEZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiB9OwogI2VuZGlmIC8v
IFBMQVRGT1JNKFdFQl9FVkVOVFMpCiAKQEAgLTM3NywxMiArMzc3LDEyIEBAIHByaXZhdGU6CiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogI2lmIFBMQVRGT1JNKFdFQl9FVkVOVFMpCi12b2lkIElu
c3BlY3Rvck5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyOjpyZXNvdXJjZUxvYWRlZCgpCit2b2lk
IE5ldHdvcmszRnJvbnRlbmREaXNwYXRjaGVyOjpyZXNvdXJjZUxvYWRlZCgpCiB7CiAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4ganNvbk1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgQVND
SUlMaXRlcmFsKCJOZXR3b3JrMy5yZXNvdXJjZUxvYWRlZCIpKTsKIAotICAgIG1faW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoanNvbk1lc3NhZ2UtPnRvSlNP
TlN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kQ2hhbm5lbC0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VC
X0VWRU5UUykKIApAQCAtNDY1LDE0ICs0NjUsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGlu
dCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4g
QnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7
CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKk5ldHdvcmtFcnJvciovSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKk5l
dHdvcmtFcnJvciovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9y
ZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRf
c3RhdGUpOwpAQCAtNDk3LDkgKzQ5Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPE5ldHdvcmtF
cnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNU
QVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoTmV0d29ya0Vycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VS
VChzaXplb2YoTmV0d29ya0Vycm9yKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90
X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJl
c3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8TmV0d29ya0Vycm9yPio+
KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC01MTMsNyArNTEzLDcgQEAgcHVibGlj
OgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0
PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC02MjQsNyArNjI0
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogI2lmIFBMQVRGT1JNKFdFQl9DT01NQU5E
UykKLWNsYXNzIE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDog
cHVibGljIEFsdGVybmF0ZUluc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgeworY2xh
c3MgT2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMg
QWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgT2JqQ0lu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoaWQ8UldJUHJvdG9jb2xOZXR3b3JrMURv
bWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbG9hZFJlc291cmNlKGxvbmcgY2FsbElkKSBvdmVycmlkZTsKQEAgLTcxNyw3ICs3
MTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIF9uZXR3b3JrMUhhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJh
bCgiTmV0d29yazEiKSwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRv
IGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJOZXR3b3JrMSIpLCBXVEY6Om1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92
ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC05NTQsNyArOTU0LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClyZXNvdXJjZUxvYWRlZAogewotICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRyb2xsZXItPmZyb250ZW5k
Q2hhbm5lbCgpOworICAgIEZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsID0gX2NvbnRy
b2xsZXItPmZyb250ZW5kQ2hhbm5lbCgpOwogICAgIGlmICghZnJvbnRlbmRDaGFubmVsKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAppbmRl
eCA5YjNhZjI4MTQ3Y2ZmOTAwODQ1NTViNDAyNGVmMDI3ZDc2OWMwM2ZmLi4wMTg0Nzg5MWI1MmQy
ZDczNGY2M2Y5ZDUyMzQwOTEzMjdkZGIzY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZl
cmVudC1kb21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWlu
Lmpzb24tcmVzdWx0CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsKK2NsYXNzIEFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmRE
aXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVy
KSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlz
cGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tl
bmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVy
cy5qc29uLXJlc3VsdAppbmRleCAzOGFkNzk5M2ViOGVhZDAzNmZiNGQwMzMyODQ2ZjMyMzM2YTNj
NDdjLi4zYTYxYzUyMzFmNDVhMmMzMTFkNDhiNmQ5ODIzOGY3ZGNhMDRiNmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
c2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1v
cHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKQEAgLTM5LDEyICszOSwxMiBAQAogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgQWx0ZXJuYXRlSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIgeworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgot
ICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShk
aXNwYXRjaGVyKTsgfQotICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlz
cGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBk
aXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7
IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZlB0cjxJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQ
dHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiAKQEAgLTM1
NiwxNCArMzU2LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xh
c3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
bV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBT
VEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAg
ICAgICAgQnVpbGRlcihSZWY8LypLZXlQYXRoKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
JiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qS2V5UGF0aCovSW5zcGVjdG9yT2JqZWN0
PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0
LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtMzgxLDkgKzM4MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgUmVmPEtleVBhdGg+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19u
b3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEtleVBhdGgpID09
IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihLZXlQYXRoKSA9PSBzaXplb2YoSW5zcGVjdG9y
T2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAg
ICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVs
bCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8
S2V5UGF0aD4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtMzk2LDcgKzM5Niw3
IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3Jl
YXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4gQnVpbGRlcjxO
b0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1h
bGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGFmMWQ1MzA5N2NhNjdhYTBh
MjhmNGIwNGI2MDlmM2E5M2I2MGIxOTEuLjAyMzdhZTJhNDcxZDU1ZGU2NDhhZTA2NGRhM2M1MjFj
Njk2YjgyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5
cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlw
ZS5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5k
RGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hl
cikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERp
c3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNv
bi1yZXN1bHQKaW5kZXggNGRhOTdmNDg0ZmY2MzVmYzYzYzM0NmNhMThkZTMyMThhNjkyMGI0Zi4u
NDZmY2VkOWRiODk5NGI4NDcxYjg3YTFjZTAyYzBhNDIxNTFlMzUxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1h
cnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC0zOSwxMiArMzksMTIgQEAKIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKLWNsYXNzIEFsdGVybmF0ZUluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyIHsK
K2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICB2b2lkIHNl
dEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4mJiBk
aXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0Y2hlcik7
IH0KLSAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRC
YWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikg
eyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFj
a2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKLSAgICBSZWZQdHI8SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1k
ZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5
cGUuanNvbi1yZXN1bHQKaW5kZXggZmI0YWVkMjAxNzBkYjlkNTNmMjgyMzRhNTc5Y2Y0MDU2MTFi
YjMyYy4uZjVkNTZiMzY2NDk5M2RkZDQwMmE3YmEwMGQyODdlNDY1NTU5MmIxZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9p
ZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+
JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNo
ZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQg
c2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNo
ZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAg
IEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1v
YmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCA5ZmJiNWY1MzM0OWZlMTIzZjAwOWRjNjMwZGJh
ZDQ4NDdhNTlkMWYzLi5iNWY0ZGFhNGE0MGE4ZThhMWQyNWYzZWVhNDBjNTJmMWYwZDY5OTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdApAQCAtMzksMTIgKzM5LDEyIEBA
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRlcm5hdGVJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjpt
b3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsg
fQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRj
aGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgUmVm
UHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAg
IFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIH07CiAKIApA
QCAtMzYzLDE0ICszNjMsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAg
ICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFU
RSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJl
aW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0K
IAotICAgICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mJiBvYmplY3QpCisgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVj
dD4mJiBvYmplY3QpCiAgICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQog
ICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1Nl
dCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKQEAgLTM5NSw5ICszOTUsOSBA
QCBwdWJsaWM6CiAgICAgICAgIFJlZjxFcnJvcj4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25v
dF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNp
emVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKKyAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVj
dCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAg
UmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsK
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9y
Pio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC00MTEsNyArNDExLDcgQEAgcHVi
bGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRz
U2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC00MjUsMTQg
KzQyNSwxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1
aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVz
dWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4m
IGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAg
IEJ1aWxkZXIoUmVmPC8qT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8LypPcHRpb25hbFBhcmFt
ZXRlckJ1bmRsZSovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9y
ZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRf
c3RhdGUpOwpAQCAtNDQzLDkgKzQ0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPE9wdGlvbmFs
UGFyYW1ldGVyQnVuZGxlPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSkg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlKSA9
PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBS
ZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVp
bnRlcnByZXRfY2FzdDxSZWY8T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGU+Kj4oJnJlc3VsdCkpOwog
ICAgICAgICB9CiAgICAgfTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBwdWJsaWM6CiAgICAgICovCiAg
ICAgc3RhdGljIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCkpOwogICAgIH0KIAogICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQpAQCAtNTEzLDE0ICs1
MTMsMTQgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWls
ZGVyIHsKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IG1fcmVzdWx0OworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3Vs
dDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQgU1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBj
YXN0U3RhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4odGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBC
dWlsZGVyKFJlZjwvKlBhcmFtZXRlckJ1bmRsZSovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKlBhcmFtZXRlckJ1bmRsZSovSW5zcGVj
dG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9i
amVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5v
RmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNTgwLDkg
KzU4MCw5IEBAIHB1YmxpYzoKICAgICAgICAgUmVmPFBhcmFtZXRlckJ1bmRsZT4gcmVsZWFzZSgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxk
c1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChz
aXplb2YoUGFyYW1ldGVyQnVuZGxlKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUGFy
YW1ldGVyQnVuZGxlKSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwog
Ci0gICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1f
cmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8UGFyYW1ldGVyQnVuZGxlPio+KCZyZXN1
bHQpKTsKICAgICAgICAgfQogICAgIH07CkBAIC02MDEsNyArNjAxLDcgQEAgcHVibGljOgogICAg
ICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5vRmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAgICB9CiB9OwogCkBAIC02MjEsMTQgKzYyMSwxNCBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4g
bV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAg
ICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBCdWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0
ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWls
ZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIo
UmVmPC8qT2JqZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cyovSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwvKk9iamVjdFdpdGhQcm9w
ZXJ0eU5hbWVDb25mbGljdHMqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTY3NCw5ICs2NzQsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxP
YmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzPiByZWxlYXNlKCkKICAgICAgICAgewogICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNf
bm90X3JlYWR5KTsKLSAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihPYmplY3RXaXRo
UHJvcGVydHlOYW1lQ29uZmxpY3RzKSA9PSBzaXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoT2Jq
ZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cykgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCks
IGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPE9iamVjdFdp
dGhQcm9wZXJ0eU5hbWVDb25mbGljdHM+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsK
QEAgLTY5Myw3ICs2OTMsNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8
Tm9GaWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0Zp
ZWxkc1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAg
cmV0dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwog
ICAgIH0KIH07CiAKQEAgLTcxNiwxNCArNzE2LDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxp
bnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxhdGU8aW50IFNURVA+
IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBTVEVQPio+KHRoaXMp
OwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypQYXJhbWV0ZXJCdW5kbGUqL0lu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKKyAgICAgICAgQnVpbGRlcihSZWY8
LypQYXJhbWV0ZXJCdW5kbGUqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTc3Niw5ICs3NzYsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxQ
YXJhbWV0ZXJCdW5kbGU+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19ub3RfcmVhZHkpOwotICAg
ICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9m
KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOworICAgICAgICAgICAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rv
ck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAg
ICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51
bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVm
PFBhcmFtZXRlckJ1bmRsZT4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNzk2
LDcgKzc5Niw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0aWMgQnVpbGRlcjxOb0ZpZWxk
c1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBCdWlsZGVyPE5vRmllbGRzU2V0
PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOworICAgICAgICByZXR1cm4g
QnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CiAgICAgfQog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCAwNDVjY2I4ZjIw
Y2Y1ODMwODc0MThmMDY4ZmI1YTAwNTE4OWIzNzNiLi5mNDkwNzU2MDU5NTg4ZDhmNzU3ZTU4OGQ0
YTAzYzRlOGIwZTNmNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApA
QCAtMzksMTIgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBBbHRl
cm5hdGVJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciB7CitjbGFzcyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQ
dHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRy
PEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9
IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
IHByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKIH07CiAKIApAQCAtMzY3LDE0ICszNjcsMTQgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGludCBTVEFURT4KICAgICBjbGFzcyBCdWlsZGVyIHsKICAgICBwcml2YXRlOgotICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OworICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKIAogICAgICAgICB0ZW1wbGF0ZTxpbnQg
U1RFUD4gQnVpbGRlcjxTVEFURSB8IFNURVA+JiBjYXN0U3RhdGUoKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QnVpbGRlcjxTVEFURSB8IFNURVA+Kj4o
dGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBCdWlsZGVyKFJlZjwvKlR5cGVOZWVkaW5nQ2Fz
dCovSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVy
KFJlZjwvKlR5cGVOZWVkaW5nQ2FzdCovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKICAgICAg
ICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRf
aW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNDIwLDkgKzQyMCw5IEBAIHB1YmxpYzoKICAgICAgICAg
UmVmPFR5cGVOZWVkaW5nQ2FzdD4gcmVsZWFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKFNUQVRFID09IEFsbEZpZWxkc1NldCwgcmVzdWx0X2lzX25vdF9yZWFkeSk7
Ci0gICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoVHlwZU5lZWRpbmdDYXN0KSA9PSBz
aXplb2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoVHlwZU5lZWRpbmdDYXN0KSA9PSBzaXplb2YoSW5z
cGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBSZWY8SW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Cisg
ICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNl
Tm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2Fz
dDxSZWY8VHlwZU5lZWRpbmdDYXN0Pio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CkBA
IC00MzksNyArNDM5LDcgQEAgcHVibGljOgogICAgICAqLwogICAgIHN0YXRpYyBCdWlsZGVyPE5v
RmllbGRzU2V0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJ1aWxkZXI8Tm9GaWVs
ZHNTZXQ+KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSk7CisgICAgICAgIHJl
dHVybiBCdWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKICAg
ICB9CiB9OwogCkBAIC00NjcsMTQgKzQ2NywxNCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8aW50
IFNUQVRFPgogICAgIGNsYXNzIEJ1aWxkZXIgewogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CisgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IG1fcmVzdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGludCBTVEVQPiBC
dWlsZGVyPFNUQVRFIHwgU1RFUD4mIGNhc3RTdGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxCdWlsZGVyPFNUQVRFIHwgU1RFUD4qPih0aGlzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIEJ1aWxkZXIoUmVmPC8qUmVjdXJzaXZlT2JqZWN0MSovSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQorICAgICAgICBCdWlsZGVyKFJlZjwv
KlJlY3Vyc2l2ZU9iamVjdDEqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCiAgICAgICAgICAg
ICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBD
T01QSUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25v
bl9pbml0X3N0YXRlKTsKQEAgLTQ4NSw5ICs0ODUsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlZjxS
ZWN1cnNpdmVPYmplY3QxPiByZWxlYXNlKCkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElM
RV9BU1NFUlQoU1RBVEUgPT0gQWxsRmllbGRzU2V0LCByZXN1bHRfaXNfbm90X3JlYWR5KTsKLSAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWN1cnNpdmVPYmplY3QxKSA9PSBzaXpl
b2YoSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CisgICAgICAgICAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVjdXJzaXZlT2JqZWN0MSkgPT0gc2l6ZW9mKEluc3Bl
Y3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAotICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5v
bk51bGwoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8
UmVmPFJlY3Vyc2l2ZU9iamVjdDE+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKQEAg
LTQ5OSw3ICs0OTksNyBAQCBwdWJsaWM6CiAgICAgICovCiAgICAgc3RhdGljIEJ1aWxkZXI8Tm9G
aWVsZHNTZXQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxk
c1NldD4oSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKTsKKyAgICAgICAgcmV0
dXJuIEJ1aWxkZXI8Tm9GaWVsZHNTZXQ+KEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAg
IH0KIAogICAgIHZvaWQgc2V0T2JqKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpS
ZWN1cnNpdmVPYmplY3QyPiB2YWx1ZSkKQEAgLTUxOCwxNCArNTE4LDE0IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTxpbnQgU1RBVEU+CiAgICAgY2xhc3MgQnVpbGRlciB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX3Jlc3VsdDsKKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9yZXN1bHQ7CiAKICAgICAgICAgdGVtcGxh
dGU8aW50IFNURVA+IEJ1aWxkZXI8U1RBVEUgfCBTVEVQPiYgY2FzdFN0YXRlKCkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEJ1aWxkZXI8U1RBVEUgfCBT
VEVQPio+KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQnVpbGRlcihSZWY8LypSZWN1cnNp
dmVPYmplY3QyKi9JbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCisgICAgICAg
IEJ1aWxkZXIoUmVmPC8qUmVjdXJzaXZlT2JqZWN0MiovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVj
dCkKICAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVy
X2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwpAQCAtNTM2LDkgKzUzNiw5IEBAIHB1YmxpYzoK
ICAgICAgICAgUmVmPFJlY3Vyc2l2ZU9iamVjdDI+IHJlbGVhc2UoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFURSA9PSBBbGxGaWVsZHNTZXQsIHJlc3VsdF9pc19u
b3RfcmVhZHkpOwotICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlY3Vyc2l2ZU9i
amVjdDIpID09IHNpemVvZihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0
KTsKKyAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWN1cnNpdmVPYmplY3QyKSA9
PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCi0gICAgICAgICAgICBS
ZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCk7CisgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVp
bnRlcnByZXRfY2FzdDxSZWY8UmVjdXJzaXZlT2JqZWN0Mj4qPigmcmVzdWx0KSk7CiAgICAgICAg
IH0KICAgICB9OwpAQCAtNTUwLDcgKzU1MCw3IEBAIHB1YmxpYzoKICAgICAgKi8KICAgICBzdGF0
aWMgQnVpbGRlcjxOb0ZpZWxkc1NldD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBC
dWlsZGVyPE5vRmllbGRzU2V0PihJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkp
OworICAgICAgICByZXR1cm4gQnVpbGRlcjxOb0ZpZWxkc1NldD4oSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRPYmooUmVmUHRyPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+IHZhbHVlKQpAQCAtNjk2LDE2ICs2OTYsMTYg
QEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVk
aW5nQ2FzdD46OmFzc2VydFZhbHVlSGFzRXgKIH0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVE
CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IEJp
bmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6
cnVudGltZUNhc3QoUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+JiYgdmFsdWUpCitS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0PiBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD46OnJ1bnRp
bWVDYXN0KFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mJiB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdDsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHQ7CiAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KHJl
c3VsdCk7CiAgICAgQVNTRVJUX1VOVVNFRChjYXN0U3VjY2VlZGVkLCBjYXN0U3VjY2VlZGVkKTsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShy
ZXN1bHQuZ2V0KCkpOwogI2VuZGlmICAvLyAhQVNTRVJUX0RJU0FCTEVECi0gICAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCkg
PT0gc2l6ZW9mKEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZSksIHR5cGVfY2FzdF9wcm9i
bGVtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6
VHlwZU5lZWRpbmdDYXN0Kj4oc3RhdGljX2Nhc3Q8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3RC
YXNlKj4ocmVzdWx0LmdldCgpKSk7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9i
amVjdEJhc2UpLCB0eXBlX2Nhc3RfcHJvYmxlbSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdCo+KHN0YXRpY19jYXN0PElu
c3BlY3Rvck9iamVjdEJhc2UqPihyZXN1bHQuZ2V0KCkpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
LmNwcAppbmRleCBlNDI4ZjQ1ZmZkOWQ2YmUwZWRjZTcxODc5OTczYjk3ZWM3NDNmMTk2Li41MDE3
ZTcxNjNlN2QzODZmZWU2N2U5NWZhYjNhYzUxZjE5MDA2YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU3RyaW5nIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFt
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJKU0Nv
bnRleHQiKSA6IG5hbWU7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpjb25u
ZWN0KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGF1dG9t
YXRpY0luc3BlY3Rpb24pCit2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdChG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9u
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwogCkBA
IC02MCw3ICs2MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0
KCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKIAot
ICAgIG1fZ2xvYmFsT2JqZWN0Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBt
X2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKERp
c2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaAppbmRleCA4YzZlYWI3NzY2MDhiNTQ4NTBi
MGE0Y2RiMjNiNGIyMjNiZTI4ZGQxLi5kNmI0NzFjZjc2NTY1YzliMDI2OTk4MjAyYjI4MWU2Y2Ex
OGZlYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdERlYnVnZ2FibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaApAQCAtMzMsNyArMzMsOCBAQAogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKLWVudW0gY2xhc3MgSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbjsKK2NsYXNzIEZyb250ZW5kQ2hhbm5lbDsKK2VudW0gY2xh
c3MgRGlzY29ubmVjdFJlYXNvbjsKIH0KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MSw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBib29sIGF1dG9tYXRpY0luc3BlY3Rpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9v
bCBhdXRvbWF0aWNJbnNwZWN0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29u
bmVjdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVt
b3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCA0MzljOGQ2YzIyNGRhNmEzNjZiZTZjMmE1YjM0N2Y3MTZhY2JhMGYzLi5l
NjI4MTdkYzU3Zjg4ZTE4NzAxNDc3OTlkNzU0NWNiN2QwZDA2MjEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtODQwLDggKzg0MCw4IEBAIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxl
cjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEzUmVuZGVyRWxlbWVudEVSS04zCiBfX1pON1dl
YkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMXBhdXNlVHJhbnNpdGlvbkF0VGltZUVQTlNfMTNS
ZW5kZXJFbGVtZW50RVJLTjNXVEY2U3RyaW5nRWQKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29u
dHJvbGxlcjM2c2V0QWxsb3dzTmV3QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkRWIKIF9fWk43V2Vi
Q29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDhzZXRWYWx1ZUVSS04zV1RGNlN0cmluZ0UKLV9fWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjE1Y29ubmVjdEZyb250ZW5kRVBOOUluc3BlY3Rv
cjI0SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsRWIKLV9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29u
dHJvbGxlcjE4ZGlzY29ubmVjdEZyb250ZW5kRU45SW5zcGVjdG9yMjVJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uRQorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTVjb25uZWN0RnJv
bnRlbmRFUE45SW5zcGVjdG9yMTVGcm9udGVuZENoYW5uZWxFYgorX19aTjdXZWJDb3JlMTlJbnNw
ZWN0b3JDb250cm9sbGVyMThkaXNjb25uZWN0RnJvbnRlbmRFTjlJbnNwZWN0b3IxNkRpc2Nvbm5l
Y3RSZWFzb25FCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOHNldFByb2ZpbGVy
RW5hYmxlZEViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNWV2YWx1YXRlRm9y
VGVzdEluRnJvbnRlbmRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNv
bnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50RVBOU18yM0luc3BlY3RvckZyb250
ZW5kQ2xpZW50RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhNzA0Y2Q5ODRlYThkMzhlZjBm
MWM1ZWUyOTBkYzUzODZhOGI1ZjBjLi4zZTZmNjMyMTYxM2I2M2RiMGRlZTc1NDBhMjRiZDljNTZl
NjA4NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VuCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCwgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uKQordm9pZCBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IDBiODEzMzVmNTFjZTBhNmM4ZjUwYjZjZDM3
NDRhZDY3ZTAzYzkzM2QuLmYwOGFjZTIwZjcxNzE4M2FkOTBkNDZmZmRlMDZkM2E2MzRjZmE3Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyOworY2xhc3MgQXBwbGljYXRpb25DYWNoZUZy
b250ZW5kRGlzcGF0Y2hlcjsKIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3Rv
clZhbHVlOwogfQpAQCAtNDcsMTQgKzQ3LDE0IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
IHsKK2NsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGVTdGF0dXMoRnJhbWUqKTsKICAgICB2b2lk
IG5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKQEAgLTcyLDggKzcyLDggQEAgcHJpdmF0ZToKICAgICBE
b2N1bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcm
LCBTdHJpbmcgZnJhbWVJZCk7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpBcHBsaWNh
dGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBkZTExN2MxMGJh
NGYzNDRiYzczMWExZDlmNDc5MDEwZDhkODU5MGJjLi44NTMyMWRkN2RkMmY3OGJlYTk5ZTUyZTJm
NzYwZTA3ZTI5ODgwNGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTM1MSwxMyArMzUxLDEzIEBAIEluc3BlY3RvckNTU0FnZW50Ojp+
SW5zcGVjdG9yQ1NTQWdlbnQoKQogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hh
bm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNT
U0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3Rv
ckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nv
bm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAg
IG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggODg2NjRjODk2MGUzZmNiZmZjMjg2YmNjNTlmOTQy
MWJlYmU1MGFjMy4uZTRhNjAzNzk1NGMxYTI3MGM3YmM4ZDg1NWFmY2JlZmU3MGZmYjcxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTM5LDcg
KzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7Ci1jbGFzcyBJbnNwZWN0b3JDU1NGcm9udGVuZERpc3BhdGNoZXI7CitjbGFzcyBD
U1NGcm9udGVuZERpc3BhdGNoZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDcg
KzY0LDcgQEAgY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiBjbGFzcyBJbnNwZWN0b3JD
U1NBZ2VudCBmaW5hbAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQogICAgICwgcHVi
bGljIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lcgotICAgICwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yQ1NTQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgLCBwdWJsaWMgSW5z
cGVjdG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yQ1NTQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtOTEsOCArOTEs
OCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShD
U1NSdWxlJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFz
b24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwpAQCAtMTYzLDggKzE2Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHJlc2V0UHNldWRvU3RhdGVzKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JDU1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAg
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckNTU0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNTU0Zyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
Q1NTQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9y
RE9NQWdlbnQqIG1fZG9tQWdlbnQ7CiAKICAgICBJZFRvSW5zcGVjdG9yU3R5bGVTaGVldCBtX2lk
VG9JbnNwZWN0b3JTdHlsZVNoZWV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDcyZjI5NDY4Y2VhZGI0ZWQ3NWYzZGQ2YWUzMzg3
OGI5NDNjNGVhMzAuLmExOWJhNGE5OWEzOWI4MTVjOWQzYmYxZWFiYmIxNDk1ZDRjMDRmN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTg2LDcgKzg2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAs
IG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3Bl
Y3RvckNsaWVudCkpCi0gICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbChudWxscHRyKQor
ICAgICwgbV9mcm9udGVuZENoYW5uZWwobnVsbHB0cikKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdh
dGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5z
cGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKQEAgLTE4NCw3ICsxODQsNyBAQCBJbnNwZWN0
b3JDb250cm9sbGVyOjp+SW5zcGVjdG9yQ29udHJvbGxlcigpCiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpCiB7Ci0gICAgZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7
CisgICAgZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRhcmdl
dERlc3Ryb3llZCk7CiAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsK
ICAgICBtX2luc3BlY3RvckNsaWVudC0+aW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgbV9pbnNw
ZWN0b3JDbGllbnQgPSBudWxscHRyOwpAQCAtMjMyLDE5ICsyMzIsMTkgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBE
T01XcmFwcGVyV28KICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudC0+d2luZG93T2Jq
ZWN0Q2xlYXJlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCBpc0F1
dG9tYXRpY0luc3BlY3Rpb24pCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBib29sIGlz
QXV0b21hdGljSW5zcGVjdGlvbikKIHsKICAgICBBU1NFUlQoZnJvbnRlbmRDaGFubmVsKTsKICAg
ICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwpOwotICAgIEFTU0VSVCghbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcik7
CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kQ2hhbm5lbCk7CisgICAgQVNTRVJUKCFtX2JhY2tlbmRE
aXNwYXRjaGVyKTsKIAogICAgIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uID0gaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uOwogCi0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENo
YW5uZWw7Ci0gICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Zyb250ZW5kQ2hh
bm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShmcm9udGVuZENoYW5uZWwpOwogCi0gICAgbV9hZ2VudHMuZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9pbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKGZyb250ZW5kQ2hhbm5lbCwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cygq
bV9pbnN0cnVtZW50aW5nQWdlbnRzKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZy
b250ZW5kQ3JlYXRlZCgpOwpAQCAtMjU1LDE2ICsyNTUsMTYgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW4KICNlbmRpZgogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb250ZW5kKERpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQog
ewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAgaWYgKCFtX2Zyb250
ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hZ2VudHMud2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQocmVhc29uKTsKIAotICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKLSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNsZWFyKCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBudWxscHRyOworICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPmNsZWFyRnJvbnRlbmQoKTsKKyAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLmNsZWFyKCk7CisgICAgbV9mcm9udGVuZENoYW5uZWwgPSBudWxscHRyOwogCiAgICAg
bV9pc0F1dG9tYXRpY0luc3BlY3Rpb24gPSBmYWxzZTsKIApAQCAtMjg2LDEwICsyODYsMTAgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAoIWVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKQorICAg
IGlmIChtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5n
RnJvbnRlbmRUb0Zyb250KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5zcGVjdG9yQ2xpZW50LT5vcGVuSW5z
cGVjdG9yRnJvbnRlbmQodGhpcykpIHsKKyAgICAgICAgaWYgKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBtX2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3Rv
ckZyb250ZW5kKHRoaXMpKSB7CiAgICAgICAgICAgICBib29sIGlzQXV0b21hdGljSW5zcGVjdGlv
biA9IGZhbHNlOwogICAgICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCwg
aXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKICAgICAgICAgfQpAQCAtMjk4LDkgKzI5OCw5IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6Y2xvc2UoKQogewotICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwpCisgICAg
aWYgKCFtX2Zyb250ZW5kQ2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwotICAgIGRpc2Nvbm5lY3RG
cm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95ZWQpOwor
ICAgIGRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0b3JEZXN0cm95
ZWQpOwogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiB9
CiAKQEAgLTM1Miw4ICszNTIsOCBAQCBQYWdlJiBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0
ZWRQYWdlKCkgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3Nh
Z2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGlmIChtX2luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyKQotICAgICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLT5kaXNwYXRjaChtZXNzYWdlKTsKKyAgICBpZiAobV9iYWNrZW5kRGlzcGF0Y2hlcikKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+ZGlzcGF0Y2gobWVzc2FnZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2ZmNiZWY2ZGZhYWMxNWI0YmQ0
ODY2YjQxZThiNGE0ZDQzOTQ0MzViLi41YzQzMDcxZmVmNzQ4MTkwYTEwNGNhMWVkOGNiYTYyOTVi
MmIxMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBCYWNrZW5kRGlzcGF0Y2hlcjsKK2NsYXNz
IEZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7CiAKIG5hbWVzcGFjZSBQcm90b2NvbCB7CkBAIC05NCwxMiArOTQs
MTIgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaE1lc3NhZ2VG
cm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAotICAgIGJvb2wgaGFzRnJvbnRl
bmQoKSBjb25zdCB7IHJldHVybiAhIW1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOyB9CisgICAg
Ym9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9mcm9udGVuZENoYW5uZWw7IH0K
ICAgICBib29sIGhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdDsKICAgICBib29sIGhhc1JlbW90ZUZy
b250ZW5kKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbm5lY3RGcm9udGVu
ZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIGJvb2wgaXNBdXRvbWF0aWNJ
bnNwZWN0aW9uKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBp
c0F1dG9tYXRpY0luc3BlY3Rpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbik7CiAgICAgdm9pZCBzZXRQcm9j
ZXNzSWQobG9uZyk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKQEAgLTE1MiwxMyAr
MTUyLDEzIEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogbV9kb21E
ZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIG1fdGltZWxpbmVBZ2Vu
dDsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyPiBt
X2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogbV9mcm9udGVuZENoYW5uZWw7CiAgICAgUmVmPFdURjo6
U3RvcHdhdGNoPiBtX2V4ZWN1dGlvblN0b3B3YXRjaDsKICAgICBQYWdlJiBtX3BhZ2U7CiAgICAg
SW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKICAgICBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCogbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKLSAgICBJbnNwZWN0b3I6Okluc3Bl
Y3RvckFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CisgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5
IG1fYWdlbnRzOwogICAgIFZlY3RvcjxJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUsIDI+
IG1faW5qZWN0ZWRTY3JpcHRJbnN0cnVtZW50YXRpb25Db29raWVzOwogICAgIGJvb2wgbV9pc1Vu
ZGVyVGVzdDsKICAgICBib29sIG1faXNBdXRvbWF0aWNJbnNwZWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTdlYjY4MTgxOTEw
MzM4NGY1MGYxZmUyMjU5ZTAwMmRjNjMyOWM4Yy4uMGI4Zjk0MWIwMjBkMjg4OWE2NWI5ZDhkMTY3
MDdjY2Y5Y2EwZmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC0yMjEsMTAgKzIyMSwxMCBAQCBJbnNwZWN0b3JET01BZ2VudDo6fklu
c3BlY3RvckRPTUFnZW50KCkKICAgICBBU1NFUlQoIW1fc2VhcmNoaW5nRm9yTm9kZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRj
aGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFu
bmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpET01CYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIAogICAgIG1faGlzdG9y
eSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsKICAgICBtX2RvbUVkaXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPihtX2hpc3RvcnkuZ2V0KCkpOwpAQCAtMjM2
LDcgKzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyCiAgICAgICAgIGZvY3VzTm9kZSgp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
KQogewogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCmluZGV4IGY4Mzk3OTJiYjI1YzlhNWIzN2Y3MDU0NzJmYzQ2OGEzNzE2MTYwMTgu
LjlmYzk1MjVkYjdjZmM0MjVmYWU5ZjEzOWI5ZmRlN2IxNzlhYTZmYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC05MSw3ICs5MSw3IEBAIHN0
cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBl
dmVudExpc3RlbmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JE
T01CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpET01CYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
ckRPTUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEw
OSw4ICsxMDksOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RyaW5nIHRvRXJyb3JTdHJpbmco
Y29uc3QgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogCiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzKCk7CiAgICAgdm9pZCByZXNldCgp
OwpAQCAtMjQ2LDggKzI0Niw4IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRPTUZyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
RE9NQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0
Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKICAgICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lcjsKICAgICBOb2Rl
VG9JZE1hcCBtX2RvY3VtZW50Tm9kZVRvSWRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxOb2RlPiwgQmFja2VuZE5vZGVJZD4gTm9kZVRvQmFja2VuZElkTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IDNkMGJiYWM1NjFiOGViMTQ0NzQ3MjgyZTA4ODRkNzA0YTViY2NiMjcuLmY3NzhkZDk2MmNi
MmRkYzE2MDYzMTc0NmE5OTViZGRhMGE5YjI3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEwMiwxMiAr
MTAyLDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAg
Y2xlYXIoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKQogewotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JET01E
ZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
OworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVh
c29uKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIApAQCAtMTcwLDcgKzE3
MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxl
QXR0cihOb2RlJiBub2RlKQogICAgIGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBBdHRyaWJ1dGVN
b2RpZmllZCkpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChu
b2RlLCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAg
IG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAgICAgICBt
X2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0K
IApAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2ls
bEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQogICAgIGlmIChoYXNCcmVha3BvaW50KCZwYXJl
bnQsIFN1YnRyZWVNb2RpZmllZCkpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZl
bnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25G
b3JET01FdmVudChwYXJlbnQsIFN1YnRyZWVNb2RpZmllZCwgdHJ1ZSwgZXZlbnREYXRhLmdldCgp
KTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CiAgICAgfQogfQogCkBAIC0yODAsMTEgKzI4MCwxMSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKGhhc0JyZWFr
cG9pbnQoJm5vZGUsIE5vZGVSZW1vdmVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlw
dGlvbkZvckRPTUV2ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgp
KTsKLSAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CisgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7
CiAgICAgfSBlbHNlIGlmIChwYXJlbnROb2RlICYmIGhhc0JyZWFrcG9pbnQocGFyZW50Tm9kZSwg
U3VidHJlZU1vZGlmaWVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZvckRP
TUV2ZW50KG5vZGUsIFN1YnRyZWVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0g
ICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAg
ICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwogICAg
IH0KIH0KIApAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoaGFzQnJlYWtw
b2ludCgmZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0
b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAg
IGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQsIGZhbHNl
LCBldmVudERhdGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3Jh
bShJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6
bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0o
SW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6
bW92ZShldmVudERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTM2Nyw5ICszNjcsOSBAQCB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wg
aXNET01FdmVudCwgY29ucwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImV2ZW50
TmFtZSIsIGZ1bGxFdmVudE5hbWUpOwogICAgIGlmIChzeW5jaHJvbm91cykKLSAgICAgICAgbV9k
ZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOworICAg
ICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVudERh
dGEpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9u
TmV4dFN0YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpFdmVudExpc3RlbmVyLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50TGlzdGVuZXIsIFdURjo6bW92ZShldmVu
dERhdGEpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC00MTIsNyArNDEyLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJy
ZWFrcG9pbnRVUkwiLCBicmVha3BvaW50VVJMKTsKICAgICBldmVudERhdGEtPnNldFN0cmluZygi
dXJsIiwgdXJsKTsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpYSFIsIFdURjo6bW92ZShldmVudERh
dGEpKTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OlhIUiwgV1RGOjptb3ZlKGV2ZW50RGF0YSkp
OwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNsZWFyKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmlu
ZGV4IDQ2NmYwM2U1NzFjZjg2NzA0M2RiY2I1YmU4NGI2NWZhYzdkYWQzOTEuLmFmZTNjZmI5ZDMw
OTU1ZGZhMzMyOTVlZjA5OWViZmZjYTI0N2NlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNTEsNyArNTEsNyBA
QCBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyLCBwdWJs
aWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxl
ciB7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTc4LDggKzc4
LDggQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJp
bmcmIHVybCk7CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9N
RXZlbnQsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFn
ZW50KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToK
IAogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwogICAgIEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwotICAgIFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9k
b21CcmVha3BvaW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9ldmVudExpc3RlbmVyQnJlYWtw
b2ludHM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1feGhyQnJlYWtwb2ludHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmlu
ZGV4IGZiMDg5YTM4ZjgzMjI2ZDU5Y2U1Mjg2ZmJlMGE1Mjg4YjkwNTc5MTguLjhlNTIzZmZiOGNk
NGZkZmZiZDRkNmE2NmUzMzRkM2Y1ODBiMDdmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC02NiwxMyArNjYs
MTMgQEAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojp+SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
KCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMgPSBudWxscHRyOwogfQogCi12b2lkIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciog
YmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Q2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTVN0b3JhZ2VC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01TdG9y
YWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERp
c3BhdGNoZXIgPSBJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RS
ZWFzb24pCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmgKaW5kZXggMzYxYjYxM2NjMWQ3NTdkNDQ2NmRmMjg5ZjdlOTZmYWVkMGEyYWM1ZC4uYmVi
ZDFlZjQxMmYyZGJmYjYxM2E3MTNhYmQ0OGE3MjQ0MmQzNmIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtMzYsOCAr
MzYsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIERPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI7CiBjbGFzcyBJbnNw
ZWN0b3JBcnJheTsKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDE0ICs1MSwxNCBAQCBjbGFzcyBTdG9y
YWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIElu
c3BlY3Rvcjo6SW5zcGVjdG9yRE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7Citj
bGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2Vu
dCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250
LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBA
IC03OCw4ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBmaW5kU3Rv
cmFnZUFyZWEoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+JiYsIEZyYW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2Vu
dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JET01TdG9yYWdlRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIGJv
b2wgbV9lbmFibGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IDQ0ZGFhODY1NzY3ZTNjYjcyNGRhOTc0YTAy
OGNiOWRlMjZkZjgyNTMuLjkxMzRkZmU0N2M3OWM2YzZlZjQ0MTM0NDUyMGI3MDQ2ZTFkNWRjMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi10eXBlZGVmIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxDYWxs
YmFjayBFeGVjdXRlU1FMQ2FsbGJhY2s7Cit0eXBlZGVmIEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxDYWxsYmFjayBFeGVjdXRlU1FMQ2FsbGJh
Y2s7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKQEAgLTIyMiwxMyArMjIyLDEzIEBA
IEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6On5JbnNwZWN0b3JEYXRhYmFzZUFnZW50KCkKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRhdGFiYXNlQWdlbnQobnVsbHB0cik7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5u
ZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24pCit2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmgKaW5kZXggMmU4Njg5NzVmMTZmY2IxNjc4ZGJkYjNkYWNmMjFlMTdjZWQxOGNjZS4uM2ZkYWEy
Y2I3NDE4ZTUyMzBhMmZmOWJhYWQwNGY2ZTZmM2YyYWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC00NywxNCArNDcsMTQg
QEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IGZpbmFsIDog
cHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RvckRhdGFiYXNlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRhdGFiYXNlQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZXMoKTsK
IApAQCAtNzIsOCArNzIsOCBAQCBwcml2YXRlOgogICAgIERhdGFiYXNlKiBkYXRhYmFzZUZvcklk
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCk7CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZSogZmluZEJ5RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVu
ZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwog
ICAgIERhdGFiYXNlUmVzb3VyY2VzTWFwIG1fcmVzb3VyY2VzOwogICAgIGJvb2wgbV9lbmFibGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuY3BwCmluZGV4IDQ2ZWRmMzEzYzY4NjNlNmNhZjI3YWRiMmRmNGI2MjNkOGE3Njhj
ZWUuLjZjM2M5ZTIzZDY2ZjBkZDIyM2M0M2E3OTFiZGM3MWE1YjVjY2I0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6SW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZShSZWZQdHI8RGF0YWJhc2U+JiYgZGF0YWJhc2UKIHsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKEluc3BlY3RvckRhdGFiYXNlRnJvbnRl
bmREaXNwYXRjaGVyKiBkYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcikKK3ZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRj
aGVyKiBkYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcikKIHsKICAgICBhdXRvIGpzb25PYmplY3Qg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6RGF0YWJhc2U6OmNyZWF0ZSgpCiAgICAg
ICAgIC5zZXRJZChtX2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKaW5kZXggMjk1NjcyYzE3YTk5YjM1ZThiNDc4ODdiYTJi
Y2ZkYzc4MDg4MTUyNi4uNmRiODVjOWM0OGRhNjk5MDFhMzg3NTYzYTUwMGE4ZjQ2MDZkNjU2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlPiBjcmVhdGUoUmVm
UHRyPERhdGFiYXNlPiYmLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogCi0gICAgdm9pZCBiaW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqKTsKKyAgICB2b2lkIGJpbmQoSW5zcGVj
dG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlciopOwogICAgIERhdGFiYXNlKiBkYXRhYmFz
ZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KICAgICB2b2lkIHNldERhdGFiYXNlKFJl
ZlB0cjxEYXRhYmFzZT4mJiBkYXRhYmFzZSkgeyBtX2RhdGFiYXNlID0gZGF0YWJhc2U7IH0KICAg
ICBTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9yd2FyZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZvcndhcmRpbmcuaAppbmRleCA2YzI3ZDIwMDM1NGU3OWI3Yzhi
NmRjMGI0MTZlNzYxMzM1Y2NmMWVjLi4yNTA4YmIxOTMyNzE4ZDhhOWE5OGY4NGQ4YmNmZjBhNDRl
ZmViZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRm9y
d2FyZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGb3J3YXJk
aW5nLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXR5cGVkZWYgSW5zcGVjdG9y
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwordHlw
ZWRlZiBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7
CiB9CiAKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JGb3J3YXJkaW5nX2gpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCA3YTY0OTVmMTM0NDE3NmY0MTE0ODExMWFhNGEwNmVhNmY4NDNiZDllLi45NDljYmU3MGRl
MmY3ZTUzN2M4ZjU3NzY0NjVhNDRiYTkyMTYxMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTc3LDExICs3Nywx
MSBAQCB1c2luZyBJbnNwZWN0b3I6OlByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOwogdXNp
bmcgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5kZXhlZERCOjpPYmplY3RTdG9yZTsKIHVzaW5nIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmVJbmRleDsKIAotdHlwZWRl
ZiBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UgUmVx
dWVzdENhbGxiYWNrOwotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4ZWREQkJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjayBSZXF1ZXN0
RGF0YWJhc2VOYW1lc0NhbGxiYWNrOwotdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3RvckluZGV4
ZWREQkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2sgUmVx
dWVzdERhdGFiYXNlQ2FsbGJhY2s7Ci10eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3RE
YXRhQ2FsbGJhY2s7Ci10eXBlZGVmIEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2sgQ2xlYXJPYmplY3RT
dG9yZUNhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2UgUmVxdWVzdENhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWREQkJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjayBSZXF1
ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrOwordHlwZWRlZiBJbnNwZWN0b3I6OkluZGV4ZWREQkJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2sgUmVxdWVzdERh
dGFiYXNlQ2FsbGJhY2s7Cit0eXBlZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyOjpSZXF1ZXN0RGF0YUNhbGxiYWNrIFJlcXVlc3REYXRhQ2FsbGJhY2s7Cit0
eXBlZGVmIEluc3BlY3Rvcjo6SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpDbGVh
ck9iamVjdFN0b3JlQ2FsbGJhY2sgQ2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrOwogCiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCkBAIC01NzUsMTIgKzU3NSwxMiBAQCBJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6fkluc3BlY3RvckluZGV4ZWREQkFnZW50KCkKIHsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlkQ3Jl
YXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3I6OkluZGV4ZWREQkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xl
YXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaAppbmRleCA3NzIwYjNhOWFhZWM5OWRiMjA3ZTljOTM0NDk1YzY5ZjU3N2YxMzIx
Li40ZDJjMTY5ODIyOGQ2MzNkMzlkZjI5ODk1YjcwYmRjOTAxY2EwMjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNDcs
MTMgKzQ3LDEzIEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IGZpbmFsIDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhl
ZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckluZGV4ZWREQkFn
ZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6
SW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yOjpJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
aXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7Ci0g
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9ySW5kZXhlZERCQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5kZXhlZERCQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmNwcAppbmRleCBjNTkwMmJhNzc3YjAzNjBlMTAxYjdhNWYwMWViYTI4Mjg1
NTZjMzlhLi5iZTY0NDk2ZTQ2MzhkMDBjM2VjMjg5MDg2NTZhZTY3N2E3Mzg5NzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAKQEAgLTU2LDEzICs1NiwxMyBAQCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6fkluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KCkKICAgICByZXNldCgpOwogfQogCi12b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBm
cm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0g
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlz
cGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51
bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCAxNjZlOWE2
MThmMTVjMzUxYTA5MmEyZjBhY2ZjM2Q0MDNhMGI3Y2NhLi41YWJjMTM3NTMyNTZkODQ0NTI2ZTJi
MzU5OGY0YWMxMmIzY2U1NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtNDQsMTQgKzQ0LDE0IEBAIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CitjbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyopOwog
ICAgIHZpcnR1YWwgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5u
ZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgLy8gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KQEAgLTgxLDggKzgxLDggQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgYmluZFBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCopOwogICAgIHZvaWQgdW5i
aW5kUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50Kik7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRl
bmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckxheWVyVHJlZUJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3Bh
dGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CiAKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwg
U3RyaW5nPiBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBjb25z
dCBSZW5kZXJMYXllcio+IG1faWRUb0xheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA2ZDRhMzk1MTc1ZDk0MWVmYmU1Mjg1MTVh
ZmM1YmIzYmJjM2RlMjZiLi44ZjljY2U3NzY4MGY2MjI2ZGU0Njg5YzEyYjNmNTA0NmRjMzQxYjll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtMzM3LDEzICszMzcsMTMgQEAgSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywKIHsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CisgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9y
OjpQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNv
bikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci5jbGVhcigpOwpAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykKICAgICBt
X292ZXJsYXktPnNldFNob3dpbmdQYWludFJlY3RzKHNob3cpOwogfQogCi12b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwgSW5zcGVj
dG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0KiBzdGF0dXMpCit2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwg
SW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQqIHN0YXR1cykK
IHsKICAgICBib29sIGRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVyID0gZmFsc2U7CiAgICAgYm9v
bCBkaXNhYmxlZEluU2V0dGluZ3MgPSBmYWxzZTsKQEAgLTY2OCwxNCArNjY4LDE0IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcm
LCBJbnNwZWN0b3JQYWdlQmFjCiAgICAgfQogCiAgICAgaWYgKCFkaXNhYmxlZEJ5U2NyaXB0Q29u
dHJvbGxlcikgewotICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0OjpBbGxvd2VkOworICAgICAgICAqc3RhdHVzID0gSW5zcGVjdG9y
OjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQ6OkFsbG93ZWQ7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGlzYWJsZWRJblNldHRpbmdzKQotICAgICAgICAq
c3RhdHVzID0gSW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0OjpE
aXNhYmxlZDsKKyAgICAgICAgKnN0YXR1cyA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0OjpEaXNhYmxlZDsKICAgICBlbHNlCi0gICAgICAgICpzdGF0dXMg
PSBJbnNwZWN0b3JQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQ6OkZvcmJpZGRl
bjsKKyAgICAgICAgKnN0YXR1cyA9IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcjo6UmVzdWx0OjpGb3JiaWRkZW47CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChFcnJvclN0cmluZyYsIGJvb2wgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYmZkNTc3
NTE3NzBjZTc2MGJkN2NjZDM4OWFhMmJjZGQ1NDA1N2UxOC4uY2M2ZTEwZmFmY2VmZThhODNjZTQ1
YmU1MzliMjBmMjY0MmEzMjQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUGFn
ZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rv
cjo6SW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CitjbGFzcyBJbnNwZWN0
b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29s
KiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4m
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wg
c2hvdykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdEV4ZWN1dGlvblN0YXR1
cyhFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6SW5zcGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6UmVzdWx0Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdEV4
ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRj
aGVySGFuZGxlcjo6UmVzdWx0Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlw
dEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFRvdWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CkBAIC0xMzksOCArMTM5LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2NyaXB0c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpOwogCiAgICAgLy8gSW5zcGVjdG9y
IENvbnRyb2xsZXIgQVBJCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAg
Ly8gQ3Jvc3MtYWdlbnRzIEFQSQogICAgIFBhZ2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0K
QEAgLTE2OCw4ICsxNjgsOCBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gYnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUq
KTsKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JQYWdlRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JQYWdlQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheTsKICAg
ICBsb25nIG1fbGFzdFNjcmlwdElkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1fcGVuZGluZ1Njcmlw
dFRvRXZhbHVhdGVPbkxvYWRPbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggNmVjZDdjMGZiZWZiNTJkNjBiZWIxMmVkMWJj
MjI5YjA5ZjBmZjlkZi4uMmY2ODc1MzIwNTk2OTc0ODE4ZjYyYTY1ZDE4ZTk3NjNkMzQ0NjdjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
Y3BwCkBAIC0xNjcsMTAgKzE2NywxMCBAQCBXZWJDb3JlOjpTZXNzaW9uU3RhdGUgSW5zcGVjdG9y
UmVwbGF5QWdlbnQ6OnNlc3Npb25TdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS5yZXBs
YXlDb250cm9sbGVyKCkuc2Vzc2lvblN0YXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmRE
aXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSZXBsYXlGcm9u
dGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ciA9IEluc3BlY3RvclJlcGxheUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OlJlcGxheUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
KyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIAogICAgIG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUmVwbGF5QWdlbnQodGhpcyk7CiAgICAgQVNTRVJUKHNl
c3Npb25TdGF0ZSgpID09IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6SW5hY3RpdmUpOwpAQCAtMTg0
LDcgKzE4NCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqCiAgICAgICAgIG1fc2VnbWVudHNN
YXAuYWRkKCgqaXQpLT5pZGVudGlmaWVyKCksICppdCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVw
bGF5QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24pCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKaW5k
ZXggMzYzMmM0ZjQxM2U0Y2YyZDBjMzQ5ZTJmYzJlMjM3YjUxZDBjMTIzNS4uMzNiZjI5YzExYTUx
MGNiYTkzM2Y4NWFlNWEyZTVmMjI0MDY1NjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKQEAgLTU4LDE0ICs1OCwxNCBAQCB0eXBlZGVm
IGludCBTZWdtZW50SWRlbnRpZmllcjsKIAogY2xhc3MgSW5zcGVjdG9yUmVwbGF5QWdlbnQgZmlu
YWwKICAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UKLSAgICAsIHB1YmxpYyBJbnNwZWN0
b3I6Okluc3BlY3RvclJlcGxheUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgLCBwdWJs
aWMgSW5zcGVjdG9yOjpSZXBsYXlCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclJlcGxheUFnZW50KTsKIHB1YmxpYzoKICAgICBJbnNw
ZWN0b3JSZXBsYXlBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50
Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVwbGF5QWdlbnQoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25u
ZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBj
YWxsYmFja3MuCiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciopOwpAQCAt
MTE0LDggKzExNCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50
PiBmaW5kU2VnbWVudChFcnJvclN0cmluZyYsIFNlZ21lbnRJZGVudGlmaWVyKTsKICAgICBXZWJD
b3JlOjpTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKCkgY29uc3Q7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JSZXBsYXlGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclJlcGxheUJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OlJlcGxheUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6UmVwbGF5QmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAgICAgUGFnZSYgbV9wYWdlOwogCiAgICAgSGFzaE1hcDxpbnQsIFJl
ZlB0cjxSZXBsYXlTZXNzaW9uPiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gbV9zZXNzaW9uc01hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA0OTIyZjMx
ODk5NmM1ODg0NmU2ZWZkYjRkNDE2MTYwODhmZmFhMmQwLi5mOWJiZjgwOGUwYjIxNjJiNmVjODE4
M2E2MDc5OGFlNDBiNTE5MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKLXR5cGVkZWYgSW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3Jr
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpMb2FkUmVzb3VyY2VDYWxsYmFjayBMb2FkUmVzb3Vy
Y2VDYWxsYmFjazsKK3R5cGVkZWYgSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXJI
YW5kbGVyOjpMb2FkUmVzb3VyY2VDYWxsYmFjayBMb2FkUmVzb3VyY2VDYWxsYmFjazsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzMsMTMgKzE3MywxMyBAQCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbgogewogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNo
ZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKIHsKLSAgICBtX2Zyb250
ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7Cisg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogfQogCi12b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKaW5kZXggZTg0NjU5MWIxZDRmNTI5MTIzMDI3YzBjYWE1YzY3Nzk1OTdkM2QxNS4u
ODRjM2JmZGNlNGQ4MTE0ZGU1MzY3MDlkZjIxNjA1NDk0YzBlMDQxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03MywxNCAr
NzMsMTQgQEAgc3RydWN0IFdlYlNvY2tldEZyYW1lOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6Ok5ldHdvcmtCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCopOwogICAgIHZpcnR1YWwgfkluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
IAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCiAgICAgdm9pZCB3
aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAtMTM4LDggKzEzOCw4IEBAIHByaXZhdGU6CiAKICAg
ICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3RvckNsaWVudCog
bV9jbGllbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29y
a0Zyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERp
c3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Ok5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya1Jlc291cmNlc0RhdGE+IG1fcmVzb3VyY2VzRGF0YTsKICAgICBib29s
IG1fZW5hYmxlZDsKICAgICBib29sIG1fY2FjaGVEaXNhYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2MmVkNjdhODdmZWY1
ZDdhNDk1OWY2MTg5ZmViYmQyYzkxN2E4Zjg4Li4wOGJkYmVlMTM2YWM3MmNkY2VkNmVlNDRhYTZl
YTc3ZThlNDI4MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC0zOTksNyArMzk5LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkg
Y28KIAogICAgICAgICAvLyBWaXN1YWwgU3R1ZGlvIGRpc2FncmVlcyB3aXRoIG90aGVyIGNvbXBp
bGVycyBhcyB0byB3aGV0aGVyICdjbGFzcycgaXMgbmVlZGVkIGhlcmUuCiAjaWYgQ09NUElMRVIo
TVNWQykKLSAgICAgICAgZW51bSBjbGFzcyBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5U3RhdHVzIHN0YXR1czsKKyAgICAgICAgZW51bSBjbGFzcyBQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eVN0YXR1cyBzdGF0dXM7CiAjZWxzZQogICAgICAgICBlbnVtIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXMgc3RhdHVzOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5k
ZXggYjkyMmM3OGNmZjk2ZWE0M2ZkMzk5MGJiNmI4ZDdmMDI4NTU5MjZiOS4uMWE0ZDZlNzczMmI1
NmI4NTZhMTUyMDYxNDAxZjQzZWI4Y2U1OGY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNjIsMTAgKzYyLDEwIEBA
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCkKIHsKIH0K
IAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihm
cm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JUaW1l
bGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlRp
bWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldFBlcnNpc3RlbnRJbnNwZWN0b3JUaW1lbGluZUFnZW50KHRoaXMpOwogCkBAIC03MywxNCAr
NzMsMTQgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm8KICAgICAgICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci0+cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25u
ZWN0UmVhc29uIHJlYXNvbikKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uIHJlYXNvbikK
IHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci5jbGVhcigpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQZXJzaXN0
ZW50SW5zcGVjdG9yVGltZWxpbmVBZ2VudChudWxscHRyKTsKIAotICAgIGlmIChyZWFzb24gIT0g
SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkKSB7Cisg
ICAgaWYgKHJlYXNvbiAhPSBJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RlZFRh
cmdldERlc3Ryb3llZCkgewogICAgICAgICBpZiAobV9zY3JpcHREZWJ1Z1NlcnZlcikKICAgICAg
ICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXItPnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgKaW5kZXggZWE0NDg1YjMyZDMyY2Q2M2E3OWUyYWZhM2ZmNzg1ZmQxYWQ5YzYzNC4uNDVh
ZjYzNTk5ZjhjZTdkMzVmNzE5MTFkYTg5MTYyN2QwY2Y5ZWM3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC0xMDcsNyArMTA3
LDcgQEAgZW51bSBjbGFzcyBUaW1lbGluZVJlY29yZFR5cGUgewogCiBjbGFzcyBJbnNwZWN0b3JU
aW1lbGluZUFnZW50IGZpbmFsCiAgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlCi0gICAg
LCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcgorICAgICwgcHVibGljIEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OlNjcmlwdERlYnVnTGlzdGVuZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTE3LDggKzExNyw4IEBAIHB1YmxpYzoKICAgICBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdl
bnQqLCBJbnNwZWN0b3JUeXBlLCBJbnNwZWN0b3JDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIG1heENh
bGxTdGFja0RlcHRoID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3Ao
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTIyOSw4ICsyMjksOCBAQCBwcml2YXRlOgogICAg
IEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgUGFnZVNjcmlwdERlYnVnU2Vy
dmVyKiBtX3NjcmlwdERlYnVnU2VydmVyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yVGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclRpbWVsaW5lQmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAg
IFJlZlB0cjxJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CiAKICAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4gbV9yZWNvcmRTdGFj
azsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKaW5kZXggM2JiMTQwM2ViMGJlNjc1Zjk4OTQyZTQwYzg5ZTU1MjlhNDdiMDE3Mi4uZDg0
YmIwNTliZmRiYzA1MzIyMzdhNDRjMjY0OGFhOGFiNTM5NGUzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC00Niw3ICs0Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvcldvcmtlckFnZW50OjpXb3Jr
ZXJGcm9udGVuZENoYW5uZWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6UGFnZUlu
c3BlY3RvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgV29ya2VyRnJvbnRlbmRDaGFubmVsKEluc3BlY3RvcldvcmtlckZyb250ZW5kRGlzcGF0
Y2hlciogZnJvbnRlbmREaXNwYXRjaGVyLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSkK
KyAgICBleHBsaWNpdCBXb3JrZXJGcm9udGVuZENoYW5uZWwoSW5zcGVjdG9yOjpXb3JrZXJGcm9u
dGVuZERpc3BhdGNoZXIqIGZyb250ZW5kRGlzcGF0Y2hlciwgV29ya2VyR2xvYmFsU2NvcGVQcm94
eSogcHJveHkpCiAgICAgICAgIDogbV9mcm9udGVuZERpc3BhdGNoZXIoZnJvbnRlbmREaXNwYXRj
aGVyKQogICAgICAgICAsIG1fcHJveHkocHJveHkpCiAgICAgICAgICwgbV9pZChzX25leHRJZCsr
KQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlcihtX2lkLCBtZXNzYWdlT2JqZWN0KTsKICAgICB9
CiAKLSAgICBJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmREaXNw
YXRjaGVyOworICAgIEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyKiBtX2Zyb250
ZW5kRGlzcGF0Y2hlcjsKICAgICBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBtX3Byb3h5OwogICAg
IGludCBtX2lkOwogICAgIGJvb2wgbV9jb25uZWN0ZWQ7CkBAIC0xMTQsMTMgKzExNCwxMyBAQCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6fkluc3BlY3RvcldvcmtlckFnZW50KCkKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvcldvcmtlckFnZW50KG51bGxwdHIpOwogfQogCi12
b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQordm9pZCBJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hh
bm5lbCk7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvcldvcmtlckJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5k
RGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0g
SW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6d2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikKK3ZvaWQgSW5zcGVj
dG9yV29ya2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikKIHsKICAgICBtX3Nob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25T
dGFydCA9IGZhbHNlOwogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggNjg2OWQ1YTY4MDRmNzI5
ODBiMDY3MmIwOWI2Y2EzY2I4ODAyZmFmYi4uNGU3M2NmYjkxNzBmMjM0MGJiMDQ4OWM2ZDkxYWYz
YzlmMzk4YTU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBj
bGFzcyBJbnNwZWN0b3JPYmplY3Q7Ci1jbGFzcyBJbnNwZWN0b3JXb3JrZXJGcm9udGVuZERpc3Bh
dGNoZXI7CitjbGFzcyBXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ4LDE0ICs0OCwxNCBAQCBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZVByb3h5
OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yV29ya2Vy
QWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpJbnNwZWN0b3JXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworY2xhc3MgSW5zcGVj
dG9yV29ya2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RvcldvcmtlckFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JXb3JrZXJB
Z2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29u
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5k
KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8gQ2Fs
bGVkIGZyb20gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgYm9vbCBzaG91bGRQYXVzZURl
ZGljYXRlZFdvcmtlck9uU3RhcnQoKSBjb25zdDsKQEAgLTc2LDggKzc2LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbChXb3JrZXJHbG9iYWxTY29wZVBy
b3h5KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgZGVzdHJveVdvcmtlckZyb250ZW5k
Q2hhbm5lbHMoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3Rvcldv
cmtlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yV29ya2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpX
b3JrZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1f
ZW5hYmxlZDsKICAgICBib29sIG1fc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
N2E3Yjc2MjQyNTlmYmNiNjI2OWYxMjVlOTZhZTVlMmE2ZDZiZTY1NC4uZTEyM2MwYjM1OWQ2Nzgy
ZGIyNDcwMmRmMDdmODI4MjhlMWM3MWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIFBhZ2VSdW50aW1lQWdl
bnQ6OlBhZ2VSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIsCiB7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVu
ZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikK
K3ZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVy
Pihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JS
dW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKKyAgICBtX2JhY2tl
bmREaXNwYXRjaGVyID0gSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcyk7CiB9CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbiBy
ZWFzb24pCit2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCmluZGV4IGY4MmNm
YzAxMGM3MjY5MjNjZDM5M2M5NmI4MDMzZmY5NzI4OTM4OGIuLmU3YjJjMjRkOGQwZTU0NDljZTcy
ZjExOTRjOGQyMzRiNzMwZmFhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgUGFnZVJ1bnRpbWVB
Z2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIFBhZ2UqLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5QYWdlUnVudGltZUFnZW50KCkgeyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7CiAKQEAgLTc0LDggKzc0LDggQEAgcHJpdmF0ZToKIAogICAgIFBhZ2UqIG1f
aW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvclJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERp
c3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgYm9vbCBtX21haW5Xb3JsZENvbnRl
eHRDcmVhdGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDc3N2NmNzIzM2FkNzJlNDI2ZjE4YjQ4
MGZmYmU3ZDI5OGQxNGVjZWMuLmYxZmU0MTAwNWFkZmVhNGJjMDFlMGFkNWI3N2Y1OGYwYjk2YzI3
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTEwOCwxOCArMTA4LDE4IEBAIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsCiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjp+V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcigpCiB7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5yZXNldCgpOwotICAgIGRpc2Nv
bm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXRE
ZXN0cm95ZWQpOworICAgIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RS
ZWFzb246Okluc3BlY3RlZFRhcmdldERlc3Ryb3llZCk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKIHsKICAgICBBU1NFUlQoIW1fZnJvbnRl
bmRDaGFubmVsKTsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZUluc3BlY3RvclByb3h5PihtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICBtX2JhY2tlbmREaXNw
YXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kQ2hh
bm5lbC5nZXQoKSk7CisgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUobV9mcm9udGVuZENoYW5uZWwuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChtX2Zyb250ZW5kQ2hhbm5lbC5nZXQoKSwgbV9iYWNrZW5kRGlz
cGF0Y2hlci5nZXQoKSk7CiB9CiAKLXZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQordm9pZCBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpE
aXNjb25uZWN0UmVhc29uIHJlYXNvbikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmRDaGFubmVsKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmODc3OTQzNzgzOTNhMzFkMzIwYmE0NGUyMjg5
YjMzNTYxNDVmMmZkLi45Njc0MDgzY2RlY2FkYzkxZTUwMzAyMjI3ZmRjNGQxYTkxOGJlYTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmgKQEAgLTQxLDEwICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1jbGFzcyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CkBAIC02MSw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCk7CiAKICAgICB2b2lkIGNvbm5l
Y3RGcm9udGVuZCgpOwotICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbik7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5z
cGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21G
cm9udGVuZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlc3VtZSgpOwogCkBAIC04MSwxMCAr
NzcsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zdHJ1bWVudGluZ0FnZW50cz4gbV9pbnN0
cnVtZW50aW5nQWdlbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXI+IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIFdvcmtlclJ1bnRpbWVBZ2VudCog
bV9ydW50aW1lQWdlbnQ7Ci0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5IG1f
YWdlbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw+IG1f
ZnJvbnRlbmRDaGFubmVsOworICAgIEluc3BlY3Rvcjo6QWdlbnRSZWdpc3RyeSBtX2FnZW50czsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWw+IG1fZnJvbnRl
bmRDaGFubmVsOwogICAgIFJlZjxXVEY6OlN0b3B3YXRjaD4gbV9leGVjdXRpb25TdG9wd2F0Y2g7
Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgVmVjdG9yPEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSwgMj4gbV9pbmplY3RlZFNjcmlwdEluc3RydW1lbnRhdGlvbkNvb2tpZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmlu
ZGV4IDc2OTA0OWUzMjJmNWE2NTk5NDNhYTY3MGIwMmJkOTI1MzJkM2I3OGMuLjllYTI4NWM2ZWRl
MmQzY2YyNWE1YjYyODhlYTgzOWZjYjNlNzZiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgV29ya2Vy
UnVudGltZUFnZW50OjpXb3JrZXJSdW50aW1lQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBp
bmplY3RlZFNjcmlwdE1hbmEKIHsKIH0KIAotdm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcikKK3ZvaWQg
V29ya2VyUnVudGltZUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yUnVudGlt
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworICAg
IG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKTsKIH0KIAotdm9pZCBXb3JrZXJSdW50
aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb24gcmVhc29uKQordm9pZCBXb3JrZXJSdW50aW1lQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbiByZWFzb24pCiB7CiAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKaW5kZXggODE0YzY2ZDZiYzlkNDYxODMxOTE0YTli
ZmI0MWUyODgyZTFjMGQzNy4uODc4YmRkMjQ4YjA4YmUxYzhhZjRlZjQ1NzI3MzM0ZTcwOGE5MGMz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApA
QCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgV29ya2VyUnVudGltZUFnZW50KEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgV29ya2VyR2xvYmFsU2NvcGUqKTsKICAgICB2aXJ0
dWFsIH5Xb3JrZXJSdW50aW1lQWdlbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
LCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsK
IApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29s
ZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7
CiAgICAgV29ya2VyR2xvYmFsU2NvcGUqIG1fd29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmRE
aXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBib29sIG1fcGF1c2VkOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGRjYzM0ZGRjM2YxNTllNjI4ZDY1NzlmYTQ0
ZjNmMGE2MWM5YWY0M2EuLjE0ZWM2MmViYjVmNmRjZDJjZmYyMGU1NGRiYTI3ZmQ2MWMxZDYxZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTU5NCw3ICs1OTQsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGUg
eyB9CiAgICAgCi0gICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAg
IHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgb3ZlcnJpZGUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGUgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKaW5kZXggNWNmODQ5YTJmYTUzNzUwNmE5MTFl
OWRiYTczNDg2YjA2ZmUyNmEwZS4uNjc2YzRjYTkyNGQ3MTI1MjRhYzI0OGVmMmMxNTUxOTczNzE0
NDI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKQEAgLTY4LDcgKzY4
LDcgQEAgYm9vbCBQYWdlRGVidWdnYWJsZTo6aGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuaGFzTG9jYWxGcm9udGVuZCgpOwog
fQogCi12b2lkIFBhZ2VEZWJ1Z2dhYmxlOjpjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbikKK3ZvaWQg
UGFnZURlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIGNoYW5u
ZWwsIGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKQogewogICAgIGlmICghbV9wYWdlLnNldHRp
bmdzKCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSB7CiAgICAgICAgIG1fZm9yY2VkRGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCA9IHRydWU7CkBAIC03OCwxMyArNzgsMTMgQEAgdm9pZCBQYWdlRGVi
dWdnYWJsZTo6Y29ubmVjdChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogY2hh
bm5lbCwgYm9vbAogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciYgaW5zcGVjdG9yQ29udHJvbGxl
ciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxl
ci5zZXRIYXNSZW1vdGVGcm9udGVuZCh0cnVlKTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyLmNv
bm5lY3RGcm9udGVuZChyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbCo+KGNoYW5uZWwpLCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pOworICAgIGluc3BlY3Rv
ckNvbnRyb2xsZXIuY29ubmVjdEZyb250ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8SW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqPihjaGFubmVsKSwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uKTsKIH0KIAog
dm9pZCBQYWdlRGVidWdnYWJsZTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgSW5zcGVjdG9yQ29udHJv
bGxlciYgaW5zcGVjdG9yQ29udHJvbGxlciA9IG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCk7
Ci0gICAgaW5zcGVjdG9yQ29udHJvbGxlci5kaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKKyAgICBpbnNwZWN0b3JDb250cm9s
bGVyLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3Bl
Y3RvckRlc3Ryb3llZCk7CiAgICAgaW5zcGVjdG9yQ29udHJvbGxlci5zZXRIYXNSZW1vdGVGcm9u
dGVuZChmYWxzZSk7CiAKICAgICBpZiAobV9mb3JjZWREZXZlbG9wZXJFeHRyYXNFbmFibGVkKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXggNDFlZmJjNzE3Y2ZjMWJlNmVj
MmQ3MWU5MTU4OGNhNDYyNjJjYTIwMS4uN2Y3YWE5YmZlZjBjYWYzMGVjNDgzY2EwM2VkYzU4YjE5
ZjBlNmZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGhhc0xvY2FsRGVidWdnZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0lu
c3BlY3Rpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRp
Y2F0aW5nKGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDg2NDZlMDZmM2VhNzhhNzY0ZjZlOTAyYTg3MmQ3NzViMzczOGE3YWQuLjEwYmEzY2RhNjYy
ZTMwZTdlMWQxNzVkZGI5Yjk3Yzg0Yjk5YzI5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE1NTgsNyArMTU1OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpjbG9zZUR1bW15
SW5zcGVjdG9yRnJvbnRlbmQoKQogICAgIEFTU0VSVChwYWdlKTsKICAgICBBU1NFUlQobV9mcm9u
dGVuZFdpbmRvdyk7CiAKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVj
dEZyb250ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7
CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiAKICAgICBtX2Zy
b250ZW5kQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX2Zyb250ZW5kQ2hhbm5lbCA9IG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmlu
ZGV4IDQzN2MxMDhjOTM1YmU1ZjIxM2I1ZGNlZDM1ZDZjOTMyNTE2M2EwZTAuLjc4NDViNjFmYThk
Y2ZhZjlmNjdmYWEwZDk0MjVkMGY5YjJiNWQ2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6ZGlzY29ubmVjdEZyb21JbnNwZWN0b3IoKQogICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3dvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgewotICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkud29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Oklu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgIGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5z
cGVjdG9yRGVzdHJveWVkKTsKICAgICB9LCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRh
c2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9X
ZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
bgppbmRleCA1Y2QzZGFhZjQwMDQ2YzVhODVhOTk0MWIwMjgwOGE3ODAwOWZmMzgwLi5kMzEyNGMw
N2EzNzU1NGExMWRiNjk0YzE4MjRjNGI1NDk4ZWYzMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRl
Zi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVy
YXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtMjE2LDcgKzIxNiw3IEBAIEVYUE9SVFMKICAg
ICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoPz8xSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBX
ZWJDb3JlQEBVQUVAWFosID8/MUluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBA
VUVBQUBYWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2NoYW5nZUF0dGFjaGVkV2luZG93
SGVpZ2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2No
YW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2Vi
Q29yZUBAVUVBQVhJQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRhY2hl
ZFdpbmRvd1dpZHRoQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElA
WiwgP2NoYW5nZUF0dGFjaGVkV2luZG93V2lkdGhASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bEBXZWJDb3JlQEBVRUFBWElAWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Nvbm5lY3RG
cm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhQQVZJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWxASW5zcGVjdG9yQEBfTkBaLCA/Y29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUVBQVhQRUFWSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsQEluc3Bl
Y3RvckBAX05AWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Nvbm5lY3RGcm9udGVuZEBJ
bnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhQQVZGcm9udGVuZENoYW5uZWxASW5zcGVj
dG9yQEBfTkBaLCA/Y29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBA
UUVBQVhQRUFWRnJvbnRlbmRDaGFubmVsQEluc3BlY3RvckBAX05AWikKICAgICAgICAgc3ltYm9s
V2l0aFBvaW50ZXIoP2RvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2VASW5zcGVjdG9yQ2xp
ZW50QFdlYkNvcmVAQFNBX05QQVZQYWdlQDJAQUJWU3RyaW5nQFdURkBAQFosID9kb0Rpc3BhdGNo
TWVzc2FnZU9uRnJvbnRlbmRQYWdlQEluc3BlY3RvckNsaWVudEBXZWJDb3JlQEBTQV9OUEVBVlBh
Z2VAMkBBRUJWU3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9mcm9u
dGVuZExvYWRlZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWiwg
P2Zyb250ZW5kTG9hZGVkQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVB
QVhYWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2dldFByb3BlcnR5QFNldHRpbmdzQElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFP0FWU3RyaW5nQFdURkBAQUJW
NDVAQFosID9nZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
QFdlYkNvcmVAQFVFQUE/QVZTdHJpbmdAV1RGQEBBRUJWNDVAQFopCkBAIC0yMjksNyArMjI5LDcg
QEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/d2luZG93T2JqZWN0Q2xlYXJl
ZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWiwgP3dpbmRvd09i
amVjdENsZWFyZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBWFha
KQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50QFdl
YkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAQUJWMjNAMEBaLCA/cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50QFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAQUVCVjIzQDBAWikKICAgICAgICAgc3ltYm9s
V2l0aFBvaW50ZXIoP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNv
cmVAQFFBRVhfTkBaLCA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUVBQVhfTkBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZGlzY29ubmVjdEZy
b250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFc0SW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbkBJbnNwZWN0b3JAQEBaLCA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUVBQVhXNEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb25ASW5zcGVj
dG9yQEBAWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Rpc2Nvbm5lY3RGcm9udGVuZEBJ
bnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhXNERpc2Nvbm5lY3RSZWFzb25ASW5zcGVj
dG9yQEBAWiwgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVA
QFFFQUFYVzREaXNjb25uZWN0UmVhc29uQEluc3BlY3RvckBAQFopCiAgICAgICAgIHN5bWJvbFdp
dGhQb2ludGVyKD9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFA
QFosID9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QRUJWTm9kZUAxQEBaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWiwgP2lzUHJlbG9hZGVkQENhY2hlZFJl
c291cmNlTG9hZGVyQFdlYkNvcmVAQFFFQkFfTkFFQlZTdHJpbmdAV1RGQEBAWikKICAgICAgICAg
c3ltYm9sV2l0aFBvaW50ZXIoP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFW
RXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJp
bmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaLCA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVA
SlNDQEBQRUFWRXhlY1N0YXRlQDNAUEVBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0
ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA3ODkz
ZjhiMjNhODk0ZjcyNWY5MTk3NDkyYTA3ZmRmYjdlM2I0NDBmLi4zNDQzZGNkNGNiNzkzZWRlODU2
NGE4ZDEzOGE2NmEzZGMxMTcwNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC03MzAsNyArNzMwLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkVVJMLCBjb25zdCBTdHJpbmcKIAogICAgIGlmIChub3RpZnlJbnNwZWN0b3JDb250cm9s
bGVyKSB7CiAgICAgICAgIGlmIChQYWdlKiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRXZWJW
aWV3LmdldCgpIHBhZ2VdKQotICAgICAgICAgICAgaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5l
Y3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAgICAgICBpbnNwZWN0ZWRQYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKICAgICB9CiAKICAgICBbX3dlYlZp
ZXcgY2xvc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggODIyNGQ0ZWU4YjU1YTgzNWViOTQ0NDZhZTk4
NTIzYjAyN2ExZWFmMy4uNjhlYjFlYzEwYmUwNzhmNTQ4NTFkMGZlMjg1NjQzMGNjYjU5M2QwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6ZGVzdHJveUluc3BlY3RvclZpZXcoYm9vbCBub3RpZnlJbnNwZWN0b3JDb250
cm8KICAgICBjbG9zZVdpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCk7CiAKICAgICBpZiAobm90
aWZ5SW5zcGVjdG9yQ29udHJvbGxlcikgewotICAgICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3I6
Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CisgICAgICAg
IG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29u
bmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJv
eWVkKTsKICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPnVwZGF0ZUhpZ2hsaWdodCgpOwogICAg
IH0KICAgICA6OkRlc3Ryb3lXaW5kb3cobV9mcm9udGVuZEh3bmQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCA0NTcwZjkx
MzQ3Y2ZlMDU4MTM5ZTA3NThjNjIwYTkzODUwODYwOTk1Li5iZjA0NzYwNWYxMzI1MmUzZWY5MGIw
YTk2ZjI5ZTFiM2MyNDU3MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yOjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiAgICAgbV9yZW1vdGVGcm9udGVu
ZENvbm5lY3RlZCA9IGZhbHNlOwogCiAgICAgaWYgKG1fcGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAg
ICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZy
b250ZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVz
dHJveWVkKTsKKyAgICAgICAgbV9wYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuZGlzY29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVj
dG9yRGVzdHJveWVkKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>